diff --git a/.gitignore b/.gitignore index a89b99da7a00cc350eed2ba7ebdbfdf52ec9fdd1..db47387c8c8ff9900a59107642221960134aa1f1 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,7 @@ share/python-wheels/ .installed.cfg *.egg MANIFEST +.my_venv/ # requirements.txt # removed to enable tracking versions of packages over time # PyInstaller diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 115b336761dd94902597c3b6e21e7d3dcf225af1..873b2ac4b22143b37a96fd3ded467f586d61c8ac 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -34,6 +34,7 @@ include: - local: '/src/opticalcontroller/.gitlab-ci.yml' - local: '/src/ztp/.gitlab-ci.yml' - local: '/src/policy/.gitlab-ci.yml' + - local: '/src/automation/.gitlab-ci.yml' - local: '/src/forecaster/.gitlab-ci.yml' #- local: '/src/webui/.gitlab-ci.yml' #- local: '/src/l3_distributedattackdetector/.gitlab-ci.yml' @@ -49,5 +50,10 @@ include: - local: '/src/kpi_value_api/.gitlab-ci.yml' - local: '/src/kpi_value_writer/.gitlab-ci.yml' - local: '/src/telemetry/.gitlab-ci.yml' + - local: '/src/analytics/.gitlab-ci.yml' + - local: '/src/qos_profile/.gitlab-ci.yml' + - local: '/src/vnt_manager/.gitlab-ci.yml' + - local: '/src/e2e_orchestrator/.gitlab-ci.yml' + # This should be last one: end-to-end integration tests - local: '/src/tests/.gitlab-ci.yml' diff --git a/a b/a deleted file mode 100644 index d3a882e5f2b9ed462a772c691ebc320e95f06509..0000000000000000000000000000000000000000 --- a/a +++ /dev/null @@ -1,10803 +0,0 @@ -[2024-06-06 23:08:12,470] INFO:__main__:Starting... -[2024-06-06 23:08:12,483] INFO:device.service.DeviceService:Starting Service (tentative endpoint: 0.0.0.0:2020, max_workers: 200)... -[2024-06-06 23:08:12,489] INFO:device.service.DeviceService:Listening on 0.0.0.0:2020... -[2024-06-06 23:08:12,502] INFO:__main__:Pre-loading drivers... -[2024-06-06 23:11:10,686] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(4dbdc2d8-cbde-5e48-a3c0-5161387a58c7) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-06-06 23:11:10,687] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(4dbdc2d8-cbde-5e48-a3c0-5161387a58c7) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-06-06 23:11:11,139] INFO:root:settings {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-06-06 23:11:11,140] INFO:ncclient.operations.rpc:[host 172.17.254.41 session-id 29] Requesting 'Get' -[2024-06-06 23:11:11,480] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,482] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:11,482] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,483] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:11,484] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,485] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:11,485] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,487] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1'} -[2024-06-06 23:11:11,487] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,488] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:11,489] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,490] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:11,491] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,492] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:11,492] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,494] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-06-06 23:11:11,494] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,495] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:11,496] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,497] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:11,497] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,498] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:11,499] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,500] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-06-06 23:11:11,500] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,501] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:11,502] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,503] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:11,503] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,505] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:11,505] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,506] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-06-06 23:11:11,508] INFO:root:parameters {'channels': [{'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1', 'name': {'index': 'channel-1'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2', 'name': {'index': 'channel-2'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3', 'name': {'index': 'channel-3'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4', 'name': {'index': 'channel-4'}}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'ports': [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})]} -[2024-06-06 23:11:11,548] INFO:device.service.Tools:results_getconfig = [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-06-06 23:11:11,549] INFO:ncclient.operations.rpc:[host 172.17.254.41 session-id 29] Requesting 'Get' -[2024-06-06 23:11:11,670] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,671] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:11,671] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,673] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:11,673] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,674] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:11,674] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,675] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1'} -[2024-06-06 23:11:11,676] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,677] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:11,677] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,678] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:11,678] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,679] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:11,680] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,681] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-06-06 23:11:11,682] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,683] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:11,683] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,684] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:11,684] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,685] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:11,686] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,687] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-06-06 23:11:11,687] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,688] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:11,688] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,690] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:11,690] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,691] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:11,691] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:11,692] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-06-06 23:11:11,694] INFO:root:parameters {'channels': [{'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1', 'name': {'index': 'channel-1'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2', 'name': {'index': 'channel-2'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3', 'name': {'index': 'channel-3'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4', 'name': {'index': 'channel-4'}}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'ports': [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})]} -[2024-06-06 23:11:20,376] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(27c2ed23-e74a-518f-820d-ae2c8ae23086) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-06-06 23:11:20,376] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(27c2ed23-e74a-518f-820d-ae2c8ae23086) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-06-06 23:11:20,571] INFO:root:settings {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-06-06 23:11:20,572] INFO:ncclient.operations.rpc:[host 172.17.254.41 session-id 30] Requesting 'Get' -[2024-06-06 23:11:20,788] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,789] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:20,789] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,790] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:20,790] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,792] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:20,792] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,793] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1'} -[2024-06-06 23:11:20,793] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,794] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:20,794] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,796] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:20,796] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,797] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:20,797] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,799] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-06-06 23:11:20,799] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,800] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:20,800] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,801] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:20,802] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,803] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:20,803] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,805] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-06-06 23:11:20,805] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,806] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:20,806] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,807] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:20,808] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,809] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:20,809] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,810] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-06-06 23:11:20,812] INFO:root:parameters {'channels': [{'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1', 'name': {'index': 'channel-1'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2', 'name': {'index': 'channel-2'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3', 'name': {'index': 'channel-3'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4', 'name': {'index': 'channel-4'}}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'ports': [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})]} -[2024-06-06 23:11:20,874] INFO:device.service.Tools:results_getconfig = [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-06-06 23:11:20,875] INFO:ncclient.operations.rpc:[host 172.17.254.41 session-id 30] Requesting 'Get' -[2024-06-06 23:11:20,978] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,979] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:20,980] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,981] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:20,981] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,982] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:20,982] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,983] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1'} -[2024-06-06 23:11:20,984] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,985] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:20,985] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,986] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:20,986] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,988] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:20,988] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,989] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-06-06 23:11:20,989] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,990] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:20,991] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,992] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:20,992] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,993] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:20,993] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,994] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-06-06 23:11:20,995] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,996] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:20,996] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,997] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:20,997] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:20,999] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:20,999] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:21,000] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-06-06 23:11:21,002] INFO:root:parameters {'channels': [{'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1', 'name': {'index': 'channel-1'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2', 'name': {'index': 'channel-2'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3', 'name': {'index': 'channel-3'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4', 'name': {'index': 'channel-4'}}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'ports': [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})]} -[2024-06-06 23:11:29,845] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(cf618e18-c0a1-58c4-9827-943a2c0523d6) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-06-06 23:11:29,846] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(cf618e18-c0a1-58c4-9827-943a2c0523d6) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-06-06 23:11:29,984] INFO:root:settings {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-06-06 23:11:29,985] INFO:ncclient.operations.rpc:[host 172.17.254.41 session-id 31] Requesting 'Get' -[2024-06-06 23:11:30,209] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,211] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:30,211] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,212] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:30,212] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,214] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:30,214] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,215] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1'} -[2024-06-06 23:11:30,215] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,217] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:30,217] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,218] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:30,218] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,219] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:30,220] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,221] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-06-06 23:11:30,221] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,222] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:30,223] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,224] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:30,224] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,227] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:30,228] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,229] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-06-06 23:11:30,229] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,231] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:30,231] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,232] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:30,233] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,234] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:30,234] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,235] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-06-06 23:11:30,237] INFO:root:parameters {'channels': [{'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1', 'name': {'index': 'channel-1'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2', 'name': {'index': 'channel-2'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3', 'name': {'index': 'channel-3'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4', 'name': {'index': 'channel-4'}}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'ports': [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})]} -[2024-06-06 23:11:30,291] INFO:device.service.Tools:results_getconfig = [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-06-06 23:11:30,292] INFO:ncclient.operations.rpc:[host 172.17.254.41 session-id 31] Requesting 'Get' -[2024-06-06 23:11:30,476] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,478] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:30,478] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,480] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:30,480] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,481] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:30,482] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,484] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1'} -[2024-06-06 23:11:30,485] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,487] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:30,487] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,488] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:30,488] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,490] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:30,490] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,491] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-06-06 23:11:30,491] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,493] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:30,493] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,494] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:30,495] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,496] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:30,496] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,498] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-06-06 23:11:30,498] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,499] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:30,500] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,501] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:30,501] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,502] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:30,503] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:30,504] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-06-06 23:11:30,508] INFO:root:parameters {'channels': [{'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1', 'name': {'index': 'channel-1'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2', 'name': {'index': 'channel-2'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3', 'name': {'index': 'channel-3'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4', 'name': {'index': 'channel-4'}}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'ports': [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})]} -[2024-06-06 23:11:47,762] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(012c4e67-0024-5f30-b527-55ec6daf2639) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-06-06 23:11:47,762] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(012c4e67-0024-5f30-b527-55ec6daf2639) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-06-06 23:11:47,986] INFO:root:settings {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-06-06 23:11:47,987] INFO:ncclient.operations.rpc:[host 172.17.254.42 session-id 29] Requesting 'Get' -[2024-06-06 23:11:48,272] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,274] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:48,274] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,275] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:48,276] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,277] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:48,277] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,278] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1'} -[2024-06-06 23:11:48,279] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,280] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:48,280] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,282] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:48,282] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,283] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:48,287] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,289] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-06-06 23:11:48,289] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,290] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:48,290] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,292] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:48,292] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,293] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:48,293] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,295] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-06-06 23:11:48,295] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,296] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:48,296] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,298] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:48,298] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,299] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:48,300] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,301] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-06-06 23:11:48,302] INFO:root:parameters {'channels': [{'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1', 'name': {'index': 'channel-1'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2', 'name': {'index': 'channel-2'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3', 'name': {'index': 'channel-3'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4', 'name': {'index': 'channel-4'}}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'ports': [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})]} -[2024-06-06 23:11:48,336] INFO:device.service.Tools:results_getconfig = [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-06-06 23:11:48,336] INFO:ncclient.operations.rpc:[host 172.17.254.42 session-id 29] Requesting 'Get' -[2024-06-06 23:11:48,478] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,479] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:48,480] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,481] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:48,481] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,482] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:48,482] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,483] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1'} -[2024-06-06 23:11:48,484] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,485] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:48,485] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,486] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:48,486] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,488] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:48,488] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,489] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-06-06 23:11:48,489] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,491] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:48,491] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,492] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:48,492] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,493] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:48,493] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,495] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-06-06 23:11:48,495] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,496] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:48,496] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,498] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:48,498] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,499] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:48,499] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:48,500] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-06-06 23:11:48,502] INFO:root:parameters {'channels': [{'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1', 'name': {'index': 'channel-1'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2', 'name': {'index': 'channel-2'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3', 'name': {'index': 'channel-3'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4', 'name': {'index': 'channel-4'}}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'ports': [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})]} -[2024-06-06 23:11:57,693] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(87d74166-65e3-595e-b643-122b4fd0303f) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-06-06 23:11:57,693] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(87d74166-65e3-595e-b643-122b4fd0303f) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-06-06 23:11:57,844] INFO:root:settings {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-06-06 23:11:57,846] INFO:ncclient.operations.rpc:[host 172.17.254.42 session-id 30] Requesting 'Get' -[2024-06-06 23:11:58,113] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,115] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:58,115] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,116] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:58,116] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,118] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:58,118] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,119] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1'} -[2024-06-06 23:11:58,119] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,121] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:58,121] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,122] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:58,122] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,124] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:58,124] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,125] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-06-06 23:11:58,125] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,127] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:58,127] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,128] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:58,129] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,130] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:58,130] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,131] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-06-06 23:11:58,132] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,133] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:58,133] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,135] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:58,135] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,138] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:58,138] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,140] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-06-06 23:11:58,141] INFO:root:parameters {'channels': [{'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1', 'name': {'index': 'channel-1'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2', 'name': {'index': 'channel-2'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3', 'name': {'index': 'channel-3'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4', 'name': {'index': 'channel-4'}}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'ports': [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})]} -[2024-06-06 23:11:58,169] INFO:device.service.Tools:results_getconfig = [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-06-06 23:11:58,170] INFO:ncclient.operations.rpc:[host 172.17.254.42 session-id 30] Requesting 'Get' -[2024-06-06 23:11:58,305] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,307] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:58,307] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,309] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:58,309] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,310] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:58,311] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,312] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1'} -[2024-06-06 23:11:58,312] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,314] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:58,314] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,315] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:58,316] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,317] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:58,317] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,319] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-06-06 23:11:58,319] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,320] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:58,321] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,322] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:58,322] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,324] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:58,324] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,325] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-06-06 23:11:58,326] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,327] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:11:58,327] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,329] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:11:58,329] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,331] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:11:58,331] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:11:58,332] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-06-06 23:11:58,334] INFO:root:parameters {'channels': [{'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1', 'name': {'index': 'channel-1'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2', 'name': {'index': 'channel-2'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3', 'name': {'index': 'channel-3'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4', 'name': {'index': 'channel-4'}}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'ports': [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})]} -[2024-06-06 23:12:07,905] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(ce0cdfdd-2182-5027-8177-676ca3244f9d) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-06-06 23:12:07,906] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(ce0cdfdd-2182-5027-8177-676ca3244f9d) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-06-06 23:12:08,048] INFO:root:settings {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-06-06 23:12:08,049] INFO:ncclient.operations.rpc:[host 172.17.254.42 session-id 31] Requesting 'Get' -[2024-06-06 23:12:08,272] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,273] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:12:08,273] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,274] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:12:08,274] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,276] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:12:08,276] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,277] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1'} -[2024-06-06 23:12:08,277] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,278] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:12:08,279] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,280] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:12:08,280] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,281] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:12:08,281] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,283] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-06-06 23:12:08,283] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,284] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:12:08,284] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,285] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:12:08,286] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,287] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:12:08,287] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,288] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-06-06 23:12:08,289] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,290] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:12:08,290] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,291] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:12:08,292] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,293] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:12:08,294] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,295] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-06-06 23:12:08,296] INFO:root:parameters {'channels': [{'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1', 'name': {'index': 'channel-1'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2', 'name': {'index': 'channel-2'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3', 'name': {'index': 'channel-3'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4', 'name': {'index': 'channel-4'}}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'ports': [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})]} -[2024-06-06 23:12:08,323] INFO:device.service.Tools:results_getconfig = [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-06-06 23:12:08,324] INFO:ncclient.operations.rpc:[host 172.17.254.42 session-id 31] Requesting 'Get' -[2024-06-06 23:12:08,467] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,468] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:12:08,468] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,470] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:12:08,470] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,471] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:12:08,471] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,473] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1'} -[2024-06-06 23:12:08,473] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,474] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:12:08,474] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,476] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:12:08,476] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,478] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:12:08,478] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,479] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-06-06 23:12:08,480] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,481] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:12:08,481] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,482] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:12:08,483] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,485] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:12:08,485] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,487] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-06-06 23:12:08,487] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,488] INFO:root:dic {'frequency': '191600000'} -[2024-06-06 23:12:08,489] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,491] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-06 23:12:08,491] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,493] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-06 23:12:08,494] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-06 23:12:08,495] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-06-06 23:12:08,497] INFO:root:parameters {'channels': [{'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1', 'name': {'index': 'channel-1'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2', 'name': {'index': 'channel-2'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3', 'name': {'index': 'channel-3'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4', 'name': {'index': 'channel-4'}}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'ports': [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})]} -[2024-06-06 23:12:41,831] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(68741528-2e94-5274-ab3c-fddcd8dc05ef) with filter_fields({'device_type': 'optical-roadm', 'driver': [11]})... -[2024-06-06 23:12:41,831] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(68741528-2e94-5274-ab3c-fddcd8dc05ef) with filter_fields({'device_type': 'optical-roadm', 'driver': [11]})... -[2024-06-06 23:12:41,966] INFO:root:settings {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-roadm', 'username': 'admin'} -[2024-06-06 23:12:41,967] INFO:ncclient.operations.rpc:[host 172.17.254.21 session-id 19] Requesting 'Get' -component [, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -WBSS-1 -WBSS-10 -WBSS-11 -WBSS-12 -WBSS-13 -WBSS-14 -WBSS-15 -WBSS-16 -WBSS-17 -WBSS-18 -WBSS-19 -WBSS-2 -WBSS-20 -WBSS-21 -WBSS-22 -WBSS-23 -WBSS-24 -WBSS-25 -WBSS-26 -WBSS-27 -WBSS-28 -WBSS-29 -WBSS-3 -WBSS-30 -WBSS-31 -WBSS-32 -WBSS-4 -WBSS-5 -WBSS-6 -WBSS-7 -WBSS-8 -WBSS-9 -WSS-1 -WSS-10 -WSS-11 -WSS-12 -WSS-2 -WSS-3 -WSS-4 -WSS-5 -WSS-6 -WSS-7 -WSS-8 -WSS-9 -int-connection-1 -int-connection-10 -int-connection-100 -int-connection-101 -int-connection-102 -int-connection-103 -int-connection-104 -int-connection-105 -int-connection-106 -int-connection-107 -int-connection-108 -int-connection-109 -int-connection-11 -int-connection-110 -int-connection-111 -int-connection-112 -int-connection-113 -int-connection-114 -int-connection-115 -int-connection-116 -int-connection-117 -int-connection-118 -int-connection-119 -int-connection-12 -int-connection-120 -int-connection-121 -int-connection-122 -int-connection-123 -int-connection-124 -int-connection-125 -int-connection-126 -int-connection-127 -int-connection-128 -int-connection-129 -int-connection-13 -int-connection-130 -int-connection-131 -int-connection-132 -int-connection-133 -int-connection-134 -int-connection-135 -int-connection-136 -int-connection-137 -int-connection-138 -int-connection-139 -int-connection-14 -int-connection-140 -int-connection-141 -int-connection-142 -int-connection-143 -int-connection-144 -int-connection-145 -int-connection-146 -int-connection-147 -int-connection-148 -int-connection-149 -int-connection-15 -int-connection-150 -int-connection-151 -int-connection-152 -int-connection-153 -int-connection-154 -int-connection-155 -int-connection-156 -int-connection-157 -int-connection-158 -int-connection-159 -int-connection-16 -int-connection-160 -int-connection-161 -int-connection-162 -int-connection-163 -int-connection-164 -int-connection-165 -int-connection-166 -int-connection-167 -int-connection-168 -int-connection-169 -int-connection-17 -int-connection-170 -int-connection-171 -int-connection-172 -int-connection-173 -int-connection-174 -int-connection-175 -int-connection-176 -int-connection-177 -int-connection-178 -int-connection-179 -int-connection-18 -int-connection-180 -int-connection-181 -int-connection-182 -int-connection-183 -int-connection-184 -int-connection-185 -int-connection-186 -int-connection-187 -int-connection-188 -int-connection-189 -int-connection-19 -int-connection-190 -int-connection-191 -int-connection-192 -int-connection-193 -int-connection-194 -int-connection-195 -int-connection-196 -int-connection-197 -int-connection-198 -int-connection-199 -int-connection-2 -int-connection-20 -int-connection-200 -int-connection-201 -int-connection-202 -int-connection-203 -int-connection-204 -int-connection-205 -int-connection-206 -int-connection-207 -int-connection-208 -int-connection-209 -int-connection-21 -int-connection-210 -int-connection-211 -int-connection-212 -int-connection-213 -int-connection-214 -int-connection-215 -int-connection-216 -int-connection-217 -int-connection-218 -int-connection-219 -int-connection-22 -int-connection-220 -int-connection-221 -int-connection-222 -int-connection-223 -int-connection-224 -int-connection-225 -int-connection-226 -int-connection-227 -int-connection-228 -int-connection-229 -int-connection-23 -int-connection-230 -int-connection-231 -int-connection-232 -int-connection-233 -int-connection-234 -int-connection-235 -int-connection-236 -int-connection-237 -int-connection-238 -int-connection-239 -int-connection-24 -int-connection-240 -int-connection-241 -int-connection-242 -int-connection-243 -int-connection-244 -int-connection-245 -int-connection-246 -int-connection-247 -int-connection-248 -int-connection-249 -int-connection-25 -int-connection-250 -int-connection-251 -int-connection-252 -int-connection-253 -int-connection-254 -int-connection-255 -int-connection-256 -int-connection-257 -int-connection-258 -int-connection-259 -int-connection-26 -int-connection-260 -int-connection-261 -int-connection-262 -int-connection-263 -int-connection-264 -int-connection-265 -int-connection-266 -int-connection-267 -int-connection-268 -int-connection-269 -int-connection-27 -int-connection-270 -int-connection-271 -int-connection-272 -int-connection-273 -int-connection-274 -int-connection-275 -int-connection-276 -int-connection-277 -int-connection-278 -int-connection-279 -int-connection-28 -int-connection-280 -int-connection-281 -int-connection-282 -int-connection-283 -int-connection-284 -int-connection-285 -int-connection-286 -int-connection-287 -int-connection-288 -int-connection-289 -int-connection-29 -int-connection-290 -int-connection-291 -int-connection-292 -int-connection-293 -int-connection-294 -int-connection-295 -int-connection-296 -int-connection-297 -int-connection-298 -int-connection-299 -int-connection-3 -int-connection-30 -int-connection-300 -int-connection-301 -int-connection-302 -int-connection-303 -int-connection-304 -int-connection-305 -int-connection-306 -int-connection-307 -int-connection-308 -int-connection-309 -int-connection-31 -int-connection-310 -int-connection-311 -int-connection-312 -int-connection-313 -int-connection-314 -int-connection-315 -int-connection-316 -int-connection-317 -int-connection-318 -int-connection-319 -int-connection-32 -int-connection-320 -int-connection-321 -int-connection-322 -int-connection-323 -int-connection-324 -int-connection-325 -int-connection-326 -int-connection-327 -int-connection-328 -int-connection-329 -int-connection-33 -int-connection-330 -int-connection-331 -int-connection-332 -int-connection-333 -int-connection-334 -int-connection-335 -int-connection-336 -int-connection-337 -int-connection-338 -int-connection-339 -int-connection-34 -int-connection-340 -int-connection-341 -int-connection-342 -int-connection-343 -int-connection-344 -int-connection-345 -int-connection-346 -int-connection-347 -int-connection-348 -int-connection-349 -int-connection-35 -int-connection-350 -int-connection-351 -int-connection-352 -int-connection-353 -int-connection-354 -int-connection-355 -int-connection-356 -int-connection-357 -int-connection-358 -int-connection-359 -int-connection-36 -int-connection-360 -int-connection-361 -int-connection-362 -int-connection-363 -int-connection-364 -int-connection-365 -int-connection-366 -int-connection-367 -int-connection-368 -int-connection-369 -int-connection-37 -int-connection-370 -int-connection-371 -int-connection-372 -int-connection-373 -int-connection-374 -int-connection-375 -int-connection-376 -int-connection-377 -int-connection-378 -int-connection-379 -int-connection-38 -int-connection-380 -int-connection-381 -int-connection-382 -int-connection-383 -int-connection-384 -int-connection-385 -int-connection-386 -int-connection-387 -int-connection-388 -int-connection-389 -int-connection-39 -int-connection-390 -int-connection-391 -int-connection-392 -int-connection-393 -int-connection-394 -int-connection-395 -int-connection-396 -int-connection-397 -int-connection-398 -int-connection-399 -int-connection-4 -int-connection-40 -int-connection-400 -int-connection-401 -int-connection-402 -int-connection-403 -int-connection-404 -int-connection-405 -int-connection-406 -int-connection-407 -int-connection-408 -int-connection-409 -int-connection-41 -int-connection-410 -int-connection-411 -int-connection-412 -int-connection-413 -int-connection-414 -int-connection-415 -int-connection-416 -int-connection-417 -int-connection-418 -int-connection-419 -int-connection-42 -int-connection-420 -int-connection-421 -int-connection-422 -int-connection-423 -int-connection-424 -int-connection-425 -int-connection-426 -int-connection-427 -int-connection-428 -int-connection-43 -int-connection-44 -int-connection-45 -int-connection-46 -int-connection-47 -int-connection-48 -int-connection-49 -int-connection-5 -int-connection-50 -int-connection-51 -int-connection-52 -int-connection-53 -int-connection-54 -int-connection-55 -int-connection-56 -int-connection-57 -int-connection-58 -int-connection-59 -int-connection-6 -int-connection-60 -int-connection-61 -int-connection-62 -int-connection-63 -int-connection-64 -int-connection-65 -int-connection-66 -int-connection-67 -int-connection-68 -int-connection-69 -int-connection-7 -int-connection-70 -int-connection-71 -int-connection-72 -int-connection-73 -int-connection-74 -int-connection-75 -int-connection-76 -int-connection-77 -int-connection-78 -int-connection-79 -int-connection-8 -int-connection-80 -int-connection-81 -int-connection-82 -int-connection-83 -int-connection-84 -int-connection-85 -int-connection-86 -int-connection-87 -int-connection-88 -int-connection-89 -int-connection-9 -int-connection-90 -[2024-06-06 23:12:44,900] INFO:root:parameters {} -[2024-06-06 23:12:44,920] INFO:device.service.Tools:results_getconfig = [('/endpoints/endpoint[port-1-in]', {'uuid': 'port-1-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-10-in]', {'uuid': 'port-10-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-11-in]', {'uuid': 'port-11-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-12-in]', {'uuid': 'port-12-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-13-in]', {'uuid': 'port-13-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-14-in]', {'uuid': 'port-14-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-15-in]', {'uuid': 'port-15-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-16-in]', {'uuid': 'port-16-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-2-in]', {'uuid': 'port-2-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-3-in]', {'uuid': 'port-3-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-4-in]', {'uuid': 'port-4-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-5-in]', {'uuid': 'port-5-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-6-in]', {'uuid': 'port-6-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-7-in]', {'uuid': 'port-7-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-8-in]', {'uuid': 'port-8-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-9-in]', {'uuid': 'port-9-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-1-out]', {'uuid': 'port-1-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-10-out]', {'uuid': 'port-10-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-11-out]', {'uuid': 'port-11-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-12-out]', {'uuid': 'port-12-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-13-out]', {'uuid': 'port-13-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-14-out]', {'uuid': 'port-14-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-15-out]', {'uuid': 'port-15-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-16-out]', {'uuid': 'port-16-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-2-out]', {'uuid': 'port-2-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-3-out]', {'uuid': 'port-3-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-4-out]', {'uuid': 'port-4-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-5-out]', {'uuid': 'port-5-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-6-out]', {'uuid': 'port-6-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-7-out]', {'uuid': 'port-7-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-8-out]', {'uuid': 'port-8-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-9-out]', {'uuid': 'port-9-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-33-in]', {'uuid': 'port-33-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-34-in]', {'uuid': 'port-34-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-35-in]', {'uuid': 'port-35-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-36-in]', {'uuid': 'port-36-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-37-in]', {'uuid': 'port-37-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-38-in]', {'uuid': 'port-38-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-39-in]', {'uuid': 'port-39-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-40-in]', {'uuid': 'port-40-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-41-in]', {'uuid': 'port-41-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-42-in]', {'uuid': 'port-42-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-43-in]', {'uuid': 'port-43-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-44-in]', {'uuid': 'port-44-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-45-in]', {'uuid': 'port-45-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-46-in]', {'uuid': 'port-46-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-47-in]', {'uuid': 'port-47-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-48-in]', {'uuid': 'port-48-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-33-out]', {'uuid': 'port-33-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-34-out]', {'uuid': 'port-34-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-35-out]', {'uuid': 'port-35-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-36-out]', {'uuid': 'port-36-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-37-out]', {'uuid': 'port-37-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-38-out]', {'uuid': 'port-38-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-39-out]', {'uuid': 'port-39-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-40-out]', {'uuid': 'port-40-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-41-out]', {'uuid': 'port-41-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-42-out]', {'uuid': 'port-42-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-43-out]', {'uuid': 'port-43-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-44-out]', {'uuid': 'port-44-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-45-out]', {'uuid': 'port-45-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-46-out]', {'uuid': 'port-46-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-47-out]', {'uuid': 'port-47-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-48-out]', {'uuid': 'port-48-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'})] -[2024-06-06 23:12:44,922] INFO:ncclient.operations.rpc:[host 172.17.254.21 session-id 19] Requesting 'Get' -int-connection-91 -int-connection-92 -int-connection-93 -int-connection-94 -int-connection-95 -int-connection-96 -int-connection-97 -int-connection-98 -int-connection-99 -port-1-in -port-1-out -port-10-in -port-10-out -port-11-in -port-11-out -port-12-in -port-12-out -port-13-in -port-13-out -port-14-in -port-14-out -port-15-in -port-15-out -port-16-in -port-16-out -port-17-in -port-17-out -port-18-in -port-18-out -port-19-in -port-19-out -port-2-in -port-2-out -port-20-in -port-20-out -port-21-in -port-21-out -port-22-in -port-22-out -port-23-in -port-23-out -port-24-in -port-24-out -port-25-in -port-25-out -port-26-in -port-26-out -port-27-in -port-27-out -port-28-in -port-28-out -port-29-in -port-29-out -port-3-in -port-3-out -port-30-in -port-30-out -port-31-in -port-31-out -port-32-in -port-32-out -port-33-in -port-33-out -port-34-in -port-34-out -port-35-in -port-35-out -port-36-in -port-36-out -port-37-in -port-37-out -port-38-in -port-38-out -port-39-in -port-39-out -port-4-in -port-4-out -port-40-in -port-40-out -port-41-in -port-41-out -port-42-in -port-42-out -port-43-in -port-43-out -port-44-in -port-44-out -port-45-in -port-45-out -port-46-in -port-46-out -port-47-in -port-47-out -port-48-in -port-48-out -port-5-in -port-5-out -port-6-in -port-6-out -port-7-in -port-7-out -port-8-in -port-8-out -port-9-in -port-9-out -component [, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -WBSS-1 -WBSS-10 -WBSS-11 -WBSS-12 -WBSS-13 -WBSS-14 -WBSS-15 -WBSS-16 -WBSS-17 -WBSS-18 -WBSS-19 -WBSS-2 -WBSS-20 -WBSS-21 -WBSS-22 -WBSS-23 -WBSS-24 -WBSS-25 -WBSS-26 -WBSS-27 -WBSS-28 -WBSS-29 -WBSS-3 -WBSS-30 -WBSS-31 -WBSS-32 -WBSS-4 -WBSS-5 -WBSS-6 -WBSS-7 -WBSS-8 -WBSS-9 -WSS-1 -WSS-10 -WSS-11 -WSS-12 -WSS-2 -WSS-3 -WSS-4 -WSS-5 -WSS-6 -WSS-7 -WSS-8 -WSS-9 -int-connection-1 -int-connection-10 -int-connection-100 -int-connection-101 -int-connection-102 -int-connection-103 -int-connection-104 -int-connection-105 -int-connection-106 -int-connection-107 -int-connection-108 -int-connection-109 -int-connection-11 -int-connection-110 -int-connection-111 -int-connection-112 -int-connection-113 -int-connection-114 -int-connection-115 -int-connection-116 -int-connection-117 -int-connection-118 -int-connection-119 -int-connection-12 -int-connection-120 -int-connection-121 -int-connection-122 -int-connection-123 -int-connection-124 -int-connection-125 -int-connection-126 -int-connection-127 -int-connection-128 -int-connection-129 -int-connection-13 -int-connection-130 -int-connection-131 -int-connection-132 -int-connection-133 -int-connection-134 -int-connection-135 -int-connection-136 -int-connection-137 -int-connection-138 -int-connection-139 -int-connection-14 -int-connection-140 -int-connection-141 -int-connection-142 -int-connection-143 -int-connection-144 -int-connection-145 -int-connection-146 -int-connection-147 -int-connection-148 -int-connection-149 -int-connection-15 -int-connection-150 -int-connection-151 -int-connection-152 -int-connection-153 -int-connection-154 -int-connection-155 -int-connection-156 -int-connection-157 -int-connection-158 -int-connection-159 -int-connection-16 -int-connection-160 -int-connection-161 -int-connection-162 -int-connection-163 -int-connection-164 -int-connection-165 -int-connection-166 -int-connection-167 -int-connection-168 -int-connection-169 -int-connection-17 -int-connection-170 -int-connection-171 -int-connection-172 -int-connection-173 -int-connection-174 -int-connection-175 -int-connection-176 -int-connection-177 -int-connection-178 -int-connection-179 -int-connection-18 -int-connection-180 -int-connection-181 -int-connection-182 -int-connection-183 -int-connection-184 -int-connection-185 -int-connection-186 -int-connection-187 -int-connection-188 -int-connection-189 -int-connection-19 -int-connection-190 -int-connection-191 -int-connection-192 -int-connection-193 -int-connection-194 -int-connection-195 -int-connection-196 -int-connection-197 -int-connection-198 -int-connection-199 -int-connection-2 -int-connection-20 -int-connection-200 -int-connection-201 -int-connection-202 -int-connection-203 -int-connection-204 -int-connection-205 -int-connection-206 -int-connection-207 -int-connection-208 -int-connection-209 -int-connection-21 -int-connection-210 -int-connection-211 -int-connection-212 -int-connection-213 -int-connection-214 -int-connection-215 -int-connection-216 -int-connection-217 -int-connection-218 -int-connection-219 -int-connection-22 -int-connection-220 -int-connection-221 -int-connection-222 -int-connection-223 -int-connection-224 -int-connection-225 -int-connection-226 -int-connection-227 -int-connection-228 -int-connection-229 -int-connection-23 -int-connection-230 -int-connection-231 -int-connection-232 -int-connection-233 -int-connection-234 -int-connection-235 -int-connection-236 -int-connection-237 -int-connection-238 -int-connection-239 -int-connection-24 -int-connection-240 -int-connection-241 -int-connection-242 -int-connection-243 -int-connection-244 -int-connection-245 -int-connection-246 -int-connection-247 -int-connection-248 -int-connection-249 -int-connection-25 -int-connection-250 -int-connection-251 -int-connection-252 -int-connection-253 -int-connection-254 -int-connection-255 -int-connection-256 -int-connection-257 -int-connection-258 -int-connection-259 -int-connection-26 -int-connection-260 -int-connection-261 -int-connection-262 -int-connection-263 -int-connection-264 -int-connection-265 -int-connection-266 -int-connection-267 -int-connection-268 -int-connection-269 -int-connection-27 -int-connection-270 -int-connection-271 -int-connection-272 -int-connection-273 -int-connection-274 -int-connection-275 -int-connection-276 -int-connection-277 -int-connection-278 -int-connection-279 -int-connection-28 -int-connection-280 -int-connection-281 -int-connection-282 -int-connection-283 -int-connection-284 -int-connection-285 -int-connection-286 -int-connection-287 -int-connection-288 -int-connection-289 -int-connection-29 -int-connection-290 -int-connection-291 -int-connection-292 -int-connection-293 -int-connection-294 -int-connection-295 -int-connection-296 -int-connection-297 -int-connection-298 -int-connection-299 -int-connection-3 -int-connection-30 -int-connection-300 -int-connection-301 -int-connection-302 -int-connection-303 -int-connection-304 -int-connection-305 -int-connection-306 -int-connection-307 -int-connection-308 -int-connection-309 -int-connection-31 -int-connection-310 -int-connection-311 -int-connection-312 -int-connection-313 -int-connection-314 -int-connection-315 -int-connection-316 -int-connection-317 -int-connection-318 -int-connection-319 -int-connection-32 -int-connection-320 -int-connection-321 -int-connection-322 -int-connection-323 -int-connection-324 -int-connection-325 -int-connection-326 -int-connection-327 -int-connection-328 -int-connection-329 -int-connection-33 -int-connection-330 -int-connection-331 -int-connection-332 -int-connection-333 -int-connection-334 -int-connection-335 -int-connection-336 -int-connection-337 -int-connection-338 -int-connection-339 -int-connection-34 -int-connection-340 -int-connection-341 -int-connection-342 -int-connection-343 -int-connection-344 -int-connection-345 -int-connection-346 -int-connection-347 -int-connection-348 -int-connection-349 -int-connection-35 -int-connection-350 -int-connection-351 -int-connection-352 -int-connection-353 -int-connection-354 -int-connection-355 -int-connection-356 -int-connection-357 -int-connection-358 -int-connection-359 -int-connection-36 -int-connection-360 -int-connection-361 -int-connection-362 -int-connection-363 -int-connection-364 -int-connection-365 -int-connection-366 -int-connection-367 -int-connection-368 -int-connection-369 -int-connection-37 -int-connection-370 -int-connection-371 -int-connection-372 -int-connection-373 -int-connection-374 -int-connection-375 -int-connection-376 -int-connection-377 -int-connection-378 -int-connection-379 -int-connection-38 -int-connection-380 -int-connection-381 -int-connection-382 -int-connection-383 -int-connection-384 -int-connection-385 -int-connection-386 -int-connection-387 -int-connection-388 -int-connection-389 -int-connection-39 -int-connection-390 -int-connection-391 -int-connection-392 -int-connection-393 -int-connection-394 -int-connection-395 -int-connection-396 -int-connection-397 -int-connection-398 -int-connection-399 -int-connection-4 -int-connection-40 -int-connection-400 -int-connection-401 -int-connection-402 -int-connection-403 -int-connection-404 -int-connection-405 -int-connection-406 -int-connection-407 -int-connection-408 -int-connection-409 -int-connection-41 -int-connection-410 -int-connection-411 -int-connection-412 -int-connection-413 -int-connection-414 -int-connection-415 -int-connection-416 -int-connection-417 -int-connection-418 -int-connection-419 -int-connection-42 -int-connection-420 -int-connection-421 -int-connection-422 -int-connection-423 -int-connection-424 -int-connection-425 -int-connection-426 -int-connection-427 -int-connection-428 -int-connection-43 -int-connection-44 -int-connection-45 -int-connection-46 -int-connection-47 -int-connection-48 -int-connection-49 -int-connection-5 -int-connection-50 -int-connection-51 -int-connection-52 -int-connection-53 -int-connection-54 -int-connection-55 -int-connection-56 -int-connection-57 -int-connection-58 -int-connection-59 -int-connection-6 -int-connection-60 -int-connection-61 -int-connection-62 -int-connection-63 -int-connection-64 -int-connection-65 -int-connection-66 -int-connection-67 -int-connection-68 -int-connection-69 -int-connection-7 -int-connection-70 -int-connection-71 -int-connection-72 -int-connection-73 -int-connection-74 -int-connection-75 -int-connection-76 -int-connection-77 -int-connection-78 -int-connection-79 -int-connection-8 -int-connection-80 -int-connection-81 -int-connection-82 -int-connection-83 -int-connection-84 -int-connection-85 -int-connection-86 -int-connection-87 -int-connection-88 -int-connection-89 -int-connection-9 -int-connection-90 -[2024-06-06 23:12:47,870] INFO:root:parameters {} -[2024-06-06 23:13:24,299] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(c944aaeb-bbdf-5f2d-b31c-8cc8903045b6) with filter_fields({'device_type': 'optical-roadm', 'driver': [11]})... -[2024-06-06 23:13:24,299] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(c944aaeb-bbdf-5f2d-b31c-8cc8903045b6) with filter_fields({'device_type': 'optical-roadm', 'driver': [11]})... -[2024-06-06 23:13:24,415] INFO:root:settings {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-roadm', 'username': 'admin'} -[2024-06-06 23:13:24,416] INFO:ncclient.operations.rpc:[host 172.17.254.22 session-id 19] Requesting 'Get' -int-connection-91 -int-connection-92 -int-connection-93 -int-connection-94 -int-connection-95 -int-connection-96 -int-connection-97 -int-connection-98 -int-connection-99 -port-1-in -port-1-out -port-10-in -port-10-out -port-11-in -port-11-out -port-12-in -port-12-out -port-13-in -port-13-out -port-14-in -port-14-out -port-15-in -port-15-out -port-16-in -port-16-out -port-17-in -port-17-out -port-18-in -port-18-out -port-19-in -port-19-out -port-2-in -port-2-out -port-20-in -port-20-out -port-21-in -port-21-out -port-22-in -port-22-out -port-23-in -port-23-out -port-24-in -port-24-out -port-25-in -port-25-out -port-26-in -port-26-out -port-27-in -port-27-out -port-28-in -port-28-out -port-29-in -port-29-out -port-3-in -port-3-out -port-30-in -port-30-out -port-31-in -port-31-out -port-32-in -port-32-out -port-33-in -port-33-out -port-34-in -port-34-out -port-35-in -port-35-out -port-36-in -port-36-out -port-37-in -port-37-out -port-38-in -port-38-out -port-39-in -port-39-out -port-4-in -port-4-out -port-40-in -port-40-out -port-41-in -port-41-out -port-42-in -port-42-out -port-43-in -port-43-out -port-44-in -port-44-out -port-45-in -port-45-out -port-46-in -port-46-out -port-47-in -port-47-out -port-48-in -port-48-out -port-5-in -port-5-out -port-6-in -port-6-out -port-7-in -port-7-out -port-8-in -port-8-out -port-9-in -port-9-out -component [, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -WBSS-1 -WBSS-10 -WBSS-11 -WBSS-12 -WBSS-13 -WBSS-14 -WBSS-15 -WBSS-16 -WBSS-17 -WBSS-18 -WBSS-19 -WBSS-2 -WBSS-20 -WBSS-21 -WBSS-22 -WBSS-23 -WBSS-24 -WBSS-25 -WBSS-26 -WBSS-27 -WBSS-28 -WBSS-29 -WBSS-3 -WBSS-30 -WBSS-31 -WBSS-32 -WBSS-4 -WBSS-5 -WBSS-6 -WBSS-7 -WBSS-8 -WBSS-9 -WSS-1 -WSS-10 -WSS-11 -WSS-12 -WSS-2 -WSS-3 -WSS-4 -WSS-5 -WSS-6 -WSS-7 -WSS-8 -WSS-9 -int-connection-1 -int-connection-10 -int-connection-100 -int-connection-101 -int-connection-102 -int-connection-103 -int-connection-104 -int-connection-105 -int-connection-106 -int-connection-107 -int-connection-108 -int-connection-109 -int-connection-11 -int-connection-110 -int-connection-111 -int-connection-112 -int-connection-113 -int-connection-114 -int-connection-115 -int-connection-116 -int-connection-117 -int-connection-118 -int-connection-119 -int-connection-12 -int-connection-120 -int-connection-121 -int-connection-122 -int-connection-123 -int-connection-124 -int-connection-125 -int-connection-126 -int-connection-127 -int-connection-128 -int-connection-129 -int-connection-13 -int-connection-130 -int-connection-131 -int-connection-132 -int-connection-133 -int-connection-134 -int-connection-135 -int-connection-136 -int-connection-137 -int-connection-138 -int-connection-139 -int-connection-14 -int-connection-140 -int-connection-141 -int-connection-142 -int-connection-143 -int-connection-144 -int-connection-145 -int-connection-146 -int-connection-147 -int-connection-148 -int-connection-149 -int-connection-15 -int-connection-150 -int-connection-151 -int-connection-152 -int-connection-153 -int-connection-154 -int-connection-155 -int-connection-156 -int-connection-157 -int-connection-158 -int-connection-159 -int-connection-16 -int-connection-160 -int-connection-161 -int-connection-162 -int-connection-163 -int-connection-164 -int-connection-165 -int-connection-166 -int-connection-167 -int-connection-168 -int-connection-169 -int-connection-17 -int-connection-170 -int-connection-171 -int-connection-172 -int-connection-173 -int-connection-174 -int-connection-175 -int-connection-176 -int-connection-177 -int-connection-178 -int-connection-179 -int-connection-18 -int-connection-180 -int-connection-181 -int-connection-182 -int-connection-183 -int-connection-184 -int-connection-185 -int-connection-186 -int-connection-187 -int-connection-188 -int-connection-189 -int-connection-19 -int-connection-190 -int-connection-191 -int-connection-192 -int-connection-193 -int-connection-194 -int-connection-195 -int-connection-196 -int-connection-197 -int-connection-198 -int-connection-199 -int-connection-2 -int-connection-20 -int-connection-200 -int-connection-201 -int-connection-202 -int-connection-203 -int-connection-204 -int-connection-205 -int-connection-206 -int-connection-207 -int-connection-208 -int-connection-209 -int-connection-21 -int-connection-210 -int-connection-211 -int-connection-212 -int-connection-213 -int-connection-214 -int-connection-215 -int-connection-216 -int-connection-217 -int-connection-218 -int-connection-219 -int-connection-22 -int-connection-220 -int-connection-221 -int-connection-222 -int-connection-223 -int-connection-224 -int-connection-225 -int-connection-226 -int-connection-227 -int-connection-228 -int-connection-229 -int-connection-23 -int-connection-230 -int-connection-231 -int-connection-232 -int-connection-233 -int-connection-234 -int-connection-235 -int-connection-236 -int-connection-237 -int-connection-238 -int-connection-239 -int-connection-24 -int-connection-240 -int-connection-241 -int-connection-242 -int-connection-243 -int-connection-244 -int-connection-245 -int-connection-246 -int-connection-247 -int-connection-248 -int-connection-249 -int-connection-25 -int-connection-250 -int-connection-251 -int-connection-252 -int-connection-253 -int-connection-254 -int-connection-255 -int-connection-256 -int-connection-257 -int-connection-258 -int-connection-259 -int-connection-26 -int-connection-260 -int-connection-261 -int-connection-262 -int-connection-263 -int-connection-264 -int-connection-265 -int-connection-266 -int-connection-267 -int-connection-268 -int-connection-269 -int-connection-27 -int-connection-270 -int-connection-271 -int-connection-272 -int-connection-273 -int-connection-274 -int-connection-275 -int-connection-276 -int-connection-277 -int-connection-278 -int-connection-279 -int-connection-28 -int-connection-280 -int-connection-281 -int-connection-282 -int-connection-283 -int-connection-284 -int-connection-285 -int-connection-286 -int-connection-287 -int-connection-288 -int-connection-289 -int-connection-29 -int-connection-290 -int-connection-291 -int-connection-292 -int-connection-293 -int-connection-294 -int-connection-295 -int-connection-296 -int-connection-297 -int-connection-298 -int-connection-299 -int-connection-3 -int-connection-30 -int-connection-300 -int-connection-301 -int-connection-302 -int-connection-303 -int-connection-304 -int-connection-305 -int-connection-306 -int-connection-307 -int-connection-308 -int-connection-309 -int-connection-31 -int-connection-310 -int-connection-311 -int-connection-312 -int-connection-313 -int-connection-314 -int-connection-315 -int-connection-316 -int-connection-317 -int-connection-318 -int-connection-319 -int-connection-32 -int-connection-320 -int-connection-321 -int-connection-322 -int-connection-323 -int-connection-324 -int-connection-325 -int-connection-326 -int-connection-327 -int-connection-328 -int-connection-329 -int-connection-33 -int-connection-330 -int-connection-331 -int-connection-332 -int-connection-333 -int-connection-334 -int-connection-335 -int-connection-336 -int-connection-337 -int-connection-338 -int-connection-339 -int-connection-34 -int-connection-340 -int-connection-341 -int-connection-342 -int-connection-343 -int-connection-344 -int-connection-345 -int-connection-346 -int-connection-347 -int-connection-348 -int-connection-349 -int-connection-35 -int-connection-350 -int-connection-351 -int-connection-352 -int-connection-353 -int-connection-354 -int-connection-355 -int-connection-356 -int-connection-357 -int-connection-358 -int-connection-359 -int-connection-36 -int-connection-360 -int-connection-361 -int-connection-362 -int-connection-363 -int-connection-364 -int-connection-365 -int-connection-366 -int-connection-367 -int-connection-368 -int-connection-369 -int-connection-37 -int-connection-370 -int-connection-371 -int-connection-372 -int-connection-373 -int-connection-374 -int-connection-375 -int-connection-376 -int-connection-377 -int-connection-378 -int-connection-379 -int-connection-38 -int-connection-380 -int-connection-381 -int-connection-382 -int-connection-383 -int-connection-384 -int-connection-385 -int-connection-386 -int-connection-387 -int-connection-388 -int-connection-389 -int-connection-39 -int-connection-390 -int-connection-391 -int-connection-392 -int-connection-393 -int-connection-394 -int-connection-395 -int-connection-396 -int-connection-397 -int-connection-398 -int-connection-399 -int-connection-4 -int-connection-40 -int-connection-400 -int-connection-401 -int-connection-402 -int-connection-403 -int-connection-404 -int-connection-405 -int-connection-406 -int-connection-407 -int-connection-408 -int-connection-409 -int-connection-41 -int-connection-410 -int-connection-411 -int-connection-412 -int-connection-413 -int-connection-414 -int-connection-415 -int-connection-416 -int-connection-417 -int-connection-418 -int-connection-419 -int-connection-42 -int-connection-420 -int-connection-421 -int-connection-422 -int-connection-423 -int-connection-424 -int-connection-425 -int-connection-426 -int-connection-427 -int-connection-428 -int-connection-43 -int-connection-44 -int-connection-45 -int-connection-46 -int-connection-47 -int-connection-48 -int-connection-49 -int-connection-5 -int-connection-50 -int-connection-51 -int-connection-52 -int-connection-53 -int-connection-54 -int-connection-55 -int-connection-56 -int-connection-57 -int-connection-58 -int-connection-59 -int-connection-6 -int-connection-60 -int-connection-61 -int-connection-62 -int-connection-63 -int-connection-64 -int-connection-65 -int-connection-66 -int-connection-67 -int-connection-68 -int-connection-69 -int-connection-7 -int-connection-70 -int-connection-71 -int-connection-72 -int-connection-73 -int-connection-74 -int-connection-75 -int-connection-76 -int-connection-77 -int-connection-78 -int-connection-79 -int-connection-8 -int-connection-80 -int-connection-81 -int-connection-82 -int-connection-83 -int-connection-84 -int-connection-85 -int-connection-86 -int-connection-87 -int-connection-88 -int-connection-89 -int-connection-9 -int-connection-90 -[2024-06-06 23:13:27,207] INFO:root:parameters {} -[2024-06-06 23:13:27,236] INFO:device.service.Tools:results_getconfig = [('/endpoints/endpoint[port-1-in]', {'uuid': 'port-1-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-10-in]', {'uuid': 'port-10-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-11-in]', {'uuid': 'port-11-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-12-in]', {'uuid': 'port-12-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-13-in]', {'uuid': 'port-13-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-14-in]', {'uuid': 'port-14-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-15-in]', {'uuid': 'port-15-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-16-in]', {'uuid': 'port-16-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-2-in]', {'uuid': 'port-2-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-3-in]', {'uuid': 'port-3-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-4-in]', {'uuid': 'port-4-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-5-in]', {'uuid': 'port-5-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-6-in]', {'uuid': 'port-6-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-7-in]', {'uuid': 'port-7-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-8-in]', {'uuid': 'port-8-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-9-in]', {'uuid': 'port-9-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-1-out]', {'uuid': 'port-1-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-10-out]', {'uuid': 'port-10-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-11-out]', {'uuid': 'port-11-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-12-out]', {'uuid': 'port-12-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-13-out]', {'uuid': 'port-13-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-14-out]', {'uuid': 'port-14-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-15-out]', {'uuid': 'port-15-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-16-out]', {'uuid': 'port-16-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-2-out]', {'uuid': 'port-2-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-3-out]', {'uuid': 'port-3-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-4-out]', {'uuid': 'port-4-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-5-out]', {'uuid': 'port-5-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-6-out]', {'uuid': 'port-6-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-7-out]', {'uuid': 'port-7-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-8-out]', {'uuid': 'port-8-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-9-out]', {'uuid': 'port-9-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-33-in]', {'uuid': 'port-33-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-34-in]', {'uuid': 'port-34-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-35-in]', {'uuid': 'port-35-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-36-in]', {'uuid': 'port-36-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-37-in]', {'uuid': 'port-37-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-38-in]', {'uuid': 'port-38-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-39-in]', {'uuid': 'port-39-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-40-in]', {'uuid': 'port-40-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-41-in]', {'uuid': 'port-41-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-42-in]', {'uuid': 'port-42-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-43-in]', {'uuid': 'port-43-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-44-in]', {'uuid': 'port-44-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-45-in]', {'uuid': 'port-45-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-46-in]', {'uuid': 'port-46-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-47-in]', {'uuid': 'port-47-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-48-in]', {'uuid': 'port-48-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-33-out]', {'uuid': 'port-33-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-34-out]', {'uuid': 'port-34-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-35-out]', {'uuid': 'port-35-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-36-out]', {'uuid': 'port-36-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-37-out]', {'uuid': 'port-37-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-38-out]', {'uuid': 'port-38-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-39-out]', {'uuid': 'port-39-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-40-out]', {'uuid': 'port-40-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-41-out]', {'uuid': 'port-41-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-42-out]', {'uuid': 'port-42-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-43-out]', {'uuid': 'port-43-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-44-out]', {'uuid': 'port-44-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-45-out]', {'uuid': 'port-45-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-46-out]', {'uuid': 'port-46-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-47-out]', {'uuid': 'port-47-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-48-out]', {'uuid': 'port-48-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'})] -[2024-06-06 23:13:27,237] INFO:ncclient.operations.rpc:[host 172.17.254.22 session-id 19] Requesting 'Get' -int-connection-91 -int-connection-92 -int-connection-93 -int-connection-94 -int-connection-95 -int-connection-96 -int-connection-97 -int-connection-98 -int-connection-99 -port-1-in -port-1-out -port-10-in -port-10-out -port-11-in -port-11-out -port-12-in -port-12-out -port-13-in -port-13-out -port-14-in -port-14-out -port-15-in -port-15-out -port-16-in -port-16-out -port-17-in -port-17-out -port-18-in -port-18-out -port-19-in -port-19-out -port-2-in -port-2-out -port-20-in -port-20-out -port-21-in -port-21-out -port-22-in -port-22-out -port-23-in -port-23-out -port-24-in -port-24-out -port-25-in -port-25-out -port-26-in -port-26-out -port-27-in -port-27-out -port-28-in -port-28-out -port-29-in -port-29-out -port-3-in -port-3-out -port-30-in -port-30-out -port-31-in -port-31-out -port-32-in -port-32-out -port-33-in -port-33-out -port-34-in -port-34-out -port-35-in -port-35-out -port-36-in -port-36-out -port-37-in -port-37-out -port-38-in -port-38-out -port-39-in -port-39-out -port-4-in -port-4-out -port-40-in -port-40-out -port-41-in -port-41-out -port-42-in -port-42-out -port-43-in -port-43-out -port-44-in -port-44-out -port-45-in -port-45-out -port-46-in -port-46-out -port-47-in -port-47-out -port-48-in -port-48-out -port-5-in -port-5-out -port-6-in -port-6-out -port-7-in -port-7-out -port-8-in -port-8-out -port-9-in -port-9-out -component [, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -WBSS-1 -WBSS-10 -WBSS-11 -WBSS-12 -WBSS-13 -WBSS-14 -WBSS-15 -WBSS-16 -WBSS-17 -WBSS-18 -WBSS-19 -WBSS-2 -WBSS-20 -WBSS-21 -WBSS-22 -WBSS-23 -WBSS-24 -WBSS-25 -WBSS-26 -WBSS-27 -WBSS-28 -WBSS-29 -WBSS-3 -WBSS-30 -WBSS-31 -WBSS-32 -WBSS-4 -WBSS-5 -WBSS-6 -WBSS-7 -WBSS-8 -WBSS-9 -WSS-1 -WSS-10 -WSS-11 -WSS-12 -WSS-2 -WSS-3 -WSS-4 -WSS-5 -WSS-6 -WSS-7 -WSS-8 -WSS-9 -int-connection-1 -int-connection-10 -int-connection-100 -int-connection-101 -int-connection-102 -int-connection-103 -int-connection-104 -int-connection-105 -int-connection-106 -int-connection-107 -int-connection-108 -int-connection-109 -int-connection-11 -int-connection-110 -int-connection-111 -int-connection-112 -int-connection-113 -int-connection-114 -int-connection-115 -int-connection-116 -int-connection-117 -int-connection-118 -int-connection-119 -int-connection-12 -int-connection-120 -int-connection-121 -int-connection-122 -int-connection-123 -int-connection-124 -int-connection-125 -int-connection-126 -int-connection-127 -int-connection-128 -int-connection-129 -int-connection-13 -int-connection-130 -int-connection-131 -int-connection-132 -int-connection-133 -int-connection-134 -int-connection-135 -int-connection-136 -int-connection-137 -int-connection-138 -int-connection-139 -int-connection-14 -int-connection-140 -int-connection-141 -int-connection-142 -int-connection-143 -int-connection-144 -int-connection-145 -int-connection-146 -int-connection-147 -int-connection-148 -int-connection-149 -int-connection-15 -int-connection-150 -int-connection-151 -int-connection-152 -int-connection-153 -int-connection-154 -int-connection-155 -int-connection-156 -int-connection-157 -int-connection-158 -int-connection-159 -int-connection-16 -int-connection-160 -int-connection-161 -int-connection-162 -int-connection-163 -int-connection-164 -int-connection-165 -int-connection-166 -int-connection-167 -int-connection-168 -int-connection-169 -int-connection-17 -int-connection-170 -int-connection-171 -int-connection-172 -int-connection-173 -int-connection-174 -int-connection-175 -int-connection-176 -int-connection-177 -int-connection-178 -int-connection-179 -int-connection-18 -int-connection-180 -int-connection-181 -int-connection-182 -int-connection-183 -int-connection-184 -int-connection-185 -int-connection-186 -int-connection-187 -int-connection-188 -int-connection-189 -int-connection-19 -int-connection-190 -int-connection-191 -int-connection-192 -int-connection-193 -int-connection-194 -int-connection-195 -int-connection-196 -int-connection-197 -int-connection-198 -int-connection-199 -int-connection-2 -int-connection-20 -int-connection-200 -int-connection-201 -int-connection-202 -int-connection-203 -int-connection-204 -int-connection-205 -int-connection-206 -int-connection-207 -int-connection-208 -int-connection-209 -int-connection-21 -int-connection-210 -int-connection-211 -int-connection-212 -int-connection-213 -int-connection-214 -int-connection-215 -int-connection-216 -int-connection-217 -int-connection-218 -int-connection-219 -int-connection-22 -int-connection-220 -int-connection-221 -int-connection-222 -int-connection-223 -int-connection-224 -int-connection-225 -int-connection-226 -int-connection-227 -int-connection-228 -int-connection-229 -int-connection-23 -int-connection-230 -int-connection-231 -int-connection-232 -int-connection-233 -int-connection-234 -int-connection-235 -int-connection-236 -int-connection-237 -int-connection-238 -int-connection-239 -int-connection-24 -int-connection-240 -int-connection-241 -int-connection-242 -int-connection-243 -int-connection-244 -int-connection-245 -int-connection-246 -int-connection-247 -int-connection-248 -int-connection-249 -int-connection-25 -int-connection-250 -int-connection-251 -int-connection-252 -int-connection-253 -int-connection-254 -int-connection-255 -int-connection-256 -int-connection-257 -int-connection-258 -int-connection-259 -int-connection-26 -int-connection-260 -int-connection-261 -int-connection-262 -int-connection-263 -int-connection-264 -int-connection-265 -int-connection-266 -int-connection-267 -int-connection-268 -int-connection-269 -int-connection-27 -int-connection-270 -int-connection-271 -int-connection-272 -int-connection-273 -int-connection-274 -int-connection-275 -int-connection-276 -int-connection-277 -int-connection-278 -int-connection-279 -int-connection-28 -int-connection-280 -int-connection-281 -int-connection-282 -int-connection-283 -int-connection-284 -int-connection-285 -int-connection-286 -int-connection-287 -int-connection-288 -int-connection-289 -int-connection-29 -int-connection-290 -int-connection-291 -int-connection-292 -int-connection-293 -int-connection-294 -int-connection-295 -int-connection-296 -int-connection-297 -int-connection-298 -int-connection-299 -int-connection-3 -int-connection-30 -int-connection-300 -int-connection-301 -int-connection-302 -int-connection-303 -int-connection-304 -int-connection-305 -int-connection-306 -int-connection-307 -int-connection-308 -int-connection-309 -int-connection-31 -int-connection-310 -int-connection-311 -int-connection-312 -int-connection-313 -int-connection-314 -int-connection-315 -int-connection-316 -int-connection-317 -int-connection-318 -int-connection-319 -int-connection-32 -int-connection-320 -int-connection-321 -int-connection-322 -int-connection-323 -int-connection-324 -int-connection-325 -int-connection-326 -int-connection-327 -int-connection-328 -int-connection-329 -int-connection-33 -int-connection-330 -int-connection-331 -int-connection-332 -int-connection-333 -int-connection-334 -int-connection-335 -int-connection-336 -int-connection-337 -int-connection-338 -int-connection-339 -int-connection-34 -int-connection-340 -int-connection-341 -int-connection-342 -int-connection-343 -int-connection-344 -int-connection-345 -int-connection-346 -int-connection-347 -int-connection-348 -int-connection-349 -int-connection-35 -int-connection-350 -int-connection-351 -int-connection-352 -int-connection-353 -int-connection-354 -int-connection-355 -int-connection-356 -int-connection-357 -int-connection-358 -int-connection-359 -int-connection-36 -int-connection-360 -int-connection-361 -int-connection-362 -int-connection-363 -int-connection-364 -int-connection-365 -int-connection-366 -int-connection-367 -int-connection-368 -int-connection-369 -int-connection-37 -int-connection-370 -int-connection-371 -int-connection-372 -int-connection-373 -int-connection-374 -int-connection-375 -int-connection-376 -int-connection-377 -int-connection-378 -int-connection-379 -int-connection-38 -int-connection-380 -int-connection-381 -int-connection-382 -int-connection-383 -int-connection-384 -int-connection-385 -int-connection-386 -int-connection-387 -int-connection-388 -int-connection-389 -int-connection-39 -int-connection-390 -int-connection-391 -int-connection-392 -int-connection-393 -int-connection-394 -int-connection-395 -int-connection-396 -int-connection-397 -int-connection-398 -int-connection-399 -int-connection-4 -int-connection-40 -int-connection-400 -int-connection-401 -int-connection-402 -int-connection-403 -int-connection-404 -int-connection-405 -int-connection-406 -int-connection-407 -int-connection-408 -int-connection-409 -int-connection-41 -int-connection-410 -int-connection-411 -int-connection-412 -int-connection-413 -int-connection-414 -int-connection-415 -int-connection-416 -int-connection-417 -int-connection-418 -int-connection-419 -int-connection-42 -int-connection-420 -int-connection-421 -int-connection-422 -int-connection-423 -int-connection-424 -int-connection-425 -int-connection-426 -int-connection-427 -int-connection-428 -int-connection-43 -int-connection-44 -int-connection-45 -int-connection-46 -int-connection-47 -int-connection-48 -int-connection-49 -int-connection-5 -int-connection-50 -int-connection-51 -int-connection-52 -int-connection-53 -int-connection-54 -int-connection-55 -int-connection-56 -int-connection-57 -int-connection-58 -int-connection-59 -int-connection-6 -int-connection-60 -int-connection-61 -int-connection-62 -int-connection-63 -int-connection-64 -int-connection-65 -int-connection-66 -int-connection-67 -int-connection-68 -int-connection-69 -int-connection-7 -int-connection-70 -int-connection-71 -int-connection-72 -int-connection-73 -int-connection-74 -int-connection-75 -int-connection-76 -int-connection-77 -int-connection-78 -int-connection-79 -int-connection-8 -int-connection-80 -int-connection-81 -int-connection-82 -int-connection-83 -int-connection-84 -int-connection-85 -int-connection-86 -int-connection-87 -int-connection-88 -int-connection-89 -int-connection-9 -int-connection-90 -[2024-06-06 23:13:29,982] INFO:root:parameters {} -[2024-06-07 08:55:35,770] INFO:device.service.OpenConfigServicer: config from openconfigservicer {'channels': [], 'transceivers': {'transceiver': []}, 'interfaces': {'interface': ''}, 'channel_namespace': None, 'endpoints': [], 'device_name': 'R1', 'new_config': {'band_type': 'C_BAND', 'low-freq': 192006250, 'up-freq': 192206250, 'frequency': 192106250, 'band': 200000, 'ob_id': 1}, 'is_opticalband': True, 'flow': [['0', '77df46fd-6d6e-5726-9960-ca439c925dea']]} -[2024-06-07 08:55:35,822] INFO:device.service.OpenConfigServicer:device is device_id { - device_uuid { - uuid: "68741528-2e94-5274-ab3c-fddcd8dc05ef" - } -} -name: "R1" -device_type: "optical-roadm" -device_operational_status: DEVICEOPERATIONALSTATUS_ENABLED -device_drivers: DEVICEDRIVER_OC -device_endpoints { - endpoint_id { - 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: "02c19f3c-73ac-55b9-b4c2-7def7e7df9fe" - } - } - name: "port-48-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0332be2a-9b4e-52d7-ac7b-3ea58bf00375" - } - } - name: "port-12-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "08da1aa7-9253-5e92-bf2c-6e66ffe7a4ff" - } - } - name: "port-38-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0b1c4d0e-5140-5085-ab66-2def390b650f" - } - } - name: "port-33-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "12b4419f-9ae9-5839-ad52-9684b1f30878" - } - } - name: "port-34-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "188af412-9ac2-588f-8f00-a956aa6b2ae5" - } - } - name: "port-43-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "18a51dcf-905d-5104-9ef1-f24740fd6d78" - } - } - name: "port-12-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "1e02e33d-4b14-502d-9806-988f64cccb5d" - } - } - name: "port-43-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "21b8ccaa-9f7b-5bc5-9fc0-6f32025eb8a6" - } - } - name: "port-41-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "22d287ab-7935-55cb-b681-944a064726a9" - } - } - name: "port-11-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "28666b3c-4b96-5cb6-8006-eba13ca8ab6e" - } - } - name: "port-9-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "29e8b36f-6989-5651-99fe-b3cb2ee5b4b8" - } - } - name: "port-40-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "2b646bf7-3120-5254-a4fb-748294c61a71" - } - } - name: "port-2-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "35aaee89-81a3-56b1-b1ba-33f972d0af49" - } - } - name: "port-36-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "385bc8da-171b-574c-9d4f-d9b08f29c469" - } - } - name: "port-40-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "38f57fc2-4b25-5b8e-8ab0-e2676594b652" - } - } - name: "port-39-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3972ab17-4386-5a0c-92db-fc8096433068" - } - } - name: "port-38-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3a49ceb2-fd5b-59e2-975a-b065c4e127a4" - } - } - name: "port-7-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3b1551b2-3c17-54f6-8990-308ee42b421d" - } - } - name: "port-15-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3f8b1948-619c-5130-a158-b7beb838434c" - } - } - name: "port-14-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "435a198b-cd6f-5d29-a72d-ea4f04cb658a" - } - } - name: "port-35-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "436bb32a-c8a0-5718-bbdb-382c79d96587" - } - } - name: "port-1-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "4b197fb8-d26e-59fb-a96c-d347ba017b28" - } - } - name: "port-46-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "53e3c997-d487-5d96-a6c4-998a562dcb96" - } - } - name: "port-5-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "55684f06-7aab-5061-aa0d-2e37b45e5ec7" - } - } - name: "port-2-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "56c81904-047c-5d7c-a765-79b9e4b7abf2" - } - } - name: "port-3-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "59871dc1-872d-5df1-9392-2537a591c86c" - } - } - name: "port-45-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "59fcacb0-1840-5dd3-9dfa-a07cf4f91bd2" - } - } - name: "port-3-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5ac999c3-3df8-53c4-8f4a-52e5943f5c4c" - } - } - name: "port-14-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "62099377-4f4f-5ffb-aa37-6dec3319a21e" - } - } - name: "port-13-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "6a6dc5d4-567c-5104-b50d-6820768d2699" - } - } - name: "port-46-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "77df46fd-6d6e-5726-9960-ca439c925dea" - } - } - name: "port-1-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "7be48ef0-2357-55fa-aca6-a1aeeeb3267a" - } - } - name: "port-42-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "7ce13dc8-d5f1-5233-beec-1d99416c9164" - } - } - name: "port-44-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "883609be-6125-5bbf-91ac-2a30e75a7d1e" - } - } - name: "port-16-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "8d0c4ac4-c522-5992-a206-45e8bf8389c6" - } - } - name: "port-7-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "904c4b18-10a6-512b-9bb2-8ec81e74fda4" - } - } - name: "port-34-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "91492a21-2f88-5acc-a427-2a57230eb2ea" - } - } - name: "port-15-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "927b0db8-602b-54d5-acd9-c1cd6395425f" - } - } - name: "port-39-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a18a7eb1-811d-5d27-be08-db212d83f25e" - } - } - name: "port-45-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a7058178-97da-5b95-b969-abe5ab7a8e6f" - } - } - name: "port-42-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a7d33ece-9565-59ec-999f-4c995d142f83" - } - } - name: "port-4-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a9061634-e9a7-5d13-bc96-09fbf31cd610" - } - } - name: "port-41-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b5354091-162e-5073-aeb2-ec5debcfcf9f" - } - } - name: "port-16-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b9fbeed8-e304-5bd5-90e1-3e43c6af5a16" - } - } - name: "port-35-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c31537c8-13df-503d-bf91-64e860e6b573" - } - } - name: "port-48-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ca4f5f60-37ba-567b-a474-ff8951033342" - } - } - name: "port-47-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cc197d41-625f-50d1-94d8-c6c63a31ccfb" - } - } - name: "port-8-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ccb07637-f7d6-5b4a-9fc6-8510ef694cd9" - } - } - name: "port-4-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cd539095-12a6-5460-8b07-481ec1901c9a" - } - } - name: "port-33-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cfe60fca-3fe5-5747-ace8-ca7913e26d81" - } - } - name: "port-13-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "dda83a5d-29b7-5f96-9b0a-bd1f39e1db2f" - } - } - name: "port-37-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e2500678-0f36-555a-9133-7cd04d3ad63a" - } - } - name: "port-6-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e5265cb0-2e80-5ea1-80d8-333749bb7f14" - } - } - name: "port-5-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e9d0dac3-11f2-5b84-9125-d0300ccd8eeb" - } - } - name: "port-37-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e9d4bff3-76ac-5490-b897-a30b9a42a8b1" - } - } - name: "port-44-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ea73d8c4-1077-55c9-87f1-9c377cee196f" - } - } - name: "port-9-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "eb38e3cd-e42a-54b2-846c-82207a95e8e3" - } - } - name: "port-10-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ebfe571c-77b2-5f66-9efe-25583cc1f587" - } - } - name: "port-36-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ee4df110-8657-571c-aa20-a70ec79db01f" - } - } - name: "port-47-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "f206246e-cb90-56b4-b908-1dc3daa7ac3f" - } - } - name: "port-11-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "f7052fb4-fab8-5821-95e0-d407043742d8" - } - } - name: "port-8-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "f8bd2b7e-6d37-5bbc-92f4-9b9b2e0ce22c" - } - } - name: "port-10-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ff51524f-7b51-5efd-af6b-6bc8541d3716" - } - } - name: "port-6-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -controller_id { -} - -[2024-06-07 08:55:35,823] INFO:device.service.OpenConfigServicer:from openconfigservicer [{'resource_key': 'channel_namespace', 'value': None}, {'resource_key': 'add_transceiver', 'value': None}, {'resource_key': 'source_port', 'value': [None]}, {'resource_key': 'destination_port', 'value': ['port-1-out']}, {'resource_key': 'target-output-power', 'value': None}, {'resource_key': 'frequency', 'value': 192106250}, {'resource_key': 'operational-mode', 'value': None}, {'resource_key': 'line-port', 'value': None}, {'resource_key': 'name', 'value': 'C_BAND'}, {'resource_key': 'optical-band-parent', 'value': 1}, {'resource_key': 'channel_name', 'value': None}, {'resource_key': 'index', 'value': 1}, {'resource_key': 'lower-frequency', 'value': 192006250}, {'resource_key': 'upper-frequency', 'value': 192206250}] and conditions {'is_opticalband': True, 'edit_type': 'optical-band'} -[2024-06-07 08:55:35,906] INFO:ncclient.operations.rpc:[host 172.17.254.21 session-id 19] Requesting 'EditConfig' -[2024-06-07 08:55:36,236] INFO:root:resonse from edit - -[2024-06-07 08:55:36,236] INFO:device.service.OpenConfigServicer:resluts [True] and is_all_good True -[2024-06-07 08:55:36,237] INFO:ncclient.operations.rpc:[host 172.17.254.21 session-id 19] Requesting 'Get' -int-connection-91 -int-connection-92 -int-connection-93 -int-connection-94 -int-connection-95 -int-connection-96 -int-connection-97 -int-connection-98 -int-connection-99 -port-1-in -port-1-out -port-10-in -port-10-out -port-11-in -port-11-out -port-12-in -port-12-out -port-13-in -port-13-out -port-14-in -port-14-out -port-15-in -port-15-out -port-16-in -port-16-out -port-17-in -port-17-out -port-18-in -port-18-out -port-19-in -port-19-out -port-2-in -port-2-out -port-20-in -port-20-out -port-21-in -port-21-out -port-22-in -port-22-out -port-23-in -port-23-out -port-24-in -port-24-out -port-25-in -port-25-out -port-26-in -port-26-out -port-27-in -port-27-out -port-28-in -port-28-out -port-29-in -port-29-out -port-3-in -port-3-out -port-30-in -port-30-out -port-31-in -port-31-out -port-32-in -port-32-out -port-33-in -port-33-out -port-34-in -port-34-out -port-35-in -port-35-out -port-36-in -port-36-out -port-37-in -port-37-out -port-38-in -port-38-out -port-39-in -port-39-out -port-4-in -port-4-out -port-40-in -port-40-out -port-41-in -port-41-out -port-42-in -port-42-out -port-43-in -port-43-out -port-44-in -port-44-out -port-45-in -port-45-out -port-46-in -port-46-out -port-47-in -port-47-out -port-48-in -port-48-out -port-5-in -port-5-out -port-6-in -port-6-out -port-7-in -port-7-out -port-8-in -port-8-out -port-9-in -port-9-out -component [, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -WBSS-1 -WBSS-10 -WBSS-11 -WBSS-12 -WBSS-13 -WBSS-14 -WBSS-15 -WBSS-16 -WBSS-17 -WBSS-18 -WBSS-19 -WBSS-2 -WBSS-20 -WBSS-21 -WBSS-22 -WBSS-23 -WBSS-24 -WBSS-25 -WBSS-26 -WBSS-27 -WBSS-28 -WBSS-29 -WBSS-3 -WBSS-30 -WBSS-31 -WBSS-32 -WBSS-4 -WBSS-5 -WBSS-6 -WBSS-7 -WBSS-8 -WBSS-9 -WSS-1 -WSS-10 -WSS-11 -WSS-12 -WSS-2 -WSS-3 -WSS-4 -WSS-5 -WSS-6 -WSS-7 -WSS-8 -WSS-9 -int-connection-1 -int-connection-10 -int-connection-100 -int-connection-101 -int-connection-102 -int-connection-103 -int-connection-104 -int-connection-105 -int-connection-106 -int-connection-107 -int-connection-108 -int-connection-109 -int-connection-11 -int-connection-110 -int-connection-111 -int-connection-112 -int-connection-113 -int-connection-114 -int-connection-115 -int-connection-116 -int-connection-117 -int-connection-118 -int-connection-119 -int-connection-12 -int-connection-120 -int-connection-121 -int-connection-122 -int-connection-123 -int-connection-124 -int-connection-125 -int-connection-126 -int-connection-127 -int-connection-128 -int-connection-129 -int-connection-13 -int-connection-130 -int-connection-131 -int-connection-132 -int-connection-133 -int-connection-134 -int-connection-135 -int-connection-136 -int-connection-137 -int-connection-138 -int-connection-139 -int-connection-14 -int-connection-140 -int-connection-141 -int-connection-142 -int-connection-143 -int-connection-144 -int-connection-145 -int-connection-146 -int-connection-147 -int-connection-148 -int-connection-149 -int-connection-15 -int-connection-150 -int-connection-151 -int-connection-152 -int-connection-153 -int-connection-154 -int-connection-155 -int-connection-156 -int-connection-157 -int-connection-158 -int-connection-159 -int-connection-16 -int-connection-160 -int-connection-161 -int-connection-162 -int-connection-163 -int-connection-164 -int-connection-165 -int-connection-166 -int-connection-167 -int-connection-168 -int-connection-169 -int-connection-17 -int-connection-170 -int-connection-171 -int-connection-172 -int-connection-173 -int-connection-174 -int-connection-175 -int-connection-176 -int-connection-177 -int-connection-178 -int-connection-179 -int-connection-18 -int-connection-180 -int-connection-181 -int-connection-182 -int-connection-183 -int-connection-184 -int-connection-185 -int-connection-186 -int-connection-187 -int-connection-188 -int-connection-189 -int-connection-19 -int-connection-190 -int-connection-191 -int-connection-192 -int-connection-193 -int-connection-194 -int-connection-195 -int-connection-196 -int-connection-197 -int-connection-198 -int-connection-199 -int-connection-2 -int-connection-20 -int-connection-200 -int-connection-201 -int-connection-202 -int-connection-203 -int-connection-204 -int-connection-205 -int-connection-206 -int-connection-207 -int-connection-208 -int-connection-209 -int-connection-21 -int-connection-210 -int-connection-211 -int-connection-212 -int-connection-213 -int-connection-214 -int-connection-215 -int-connection-216 -int-connection-217 -int-connection-218 -int-connection-219 -int-connection-22 -int-connection-220 -int-connection-221 -int-connection-222 -int-connection-223 -int-connection-224 -int-connection-225 -int-connection-226 -int-connection-227 -int-connection-228 -int-connection-229 -int-connection-23 -int-connection-230 -int-connection-231 -int-connection-232 -int-connection-233 -int-connection-234 -int-connection-235 -int-connection-236 -int-connection-237 -int-connection-238 -int-connection-239 -int-connection-24 -int-connection-240 -int-connection-241 -int-connection-242 -int-connection-243 -int-connection-244 -int-connection-245 -int-connection-246 -int-connection-247 -int-connection-248 -int-connection-249 -int-connection-25 -int-connection-250 -int-connection-251 -int-connection-252 -int-connection-253 -int-connection-254 -int-connection-255 -int-connection-256 -int-connection-257 -int-connection-258 -int-connection-259 -int-connection-26 -int-connection-260 -int-connection-261 -int-connection-262 -int-connection-263 -int-connection-264 -int-connection-265 -int-connection-266 -int-connection-267 -int-connection-268 -int-connection-269 -int-connection-27 -int-connection-270 -int-connection-271 -int-connection-272 -int-connection-273 -int-connection-274 -int-connection-275 -int-connection-276 -int-connection-277 -int-connection-278 -int-connection-279 -int-connection-28 -int-connection-280 -int-connection-281 -int-connection-282 -int-connection-283 -int-connection-284 -int-connection-285 -int-connection-286 -int-connection-287 -int-connection-288 -int-connection-289 -int-connection-29 -int-connection-290 -int-connection-291 -int-connection-292 -int-connection-293 -int-connection-294 -int-connection-295 -int-connection-296 -int-connection-297 -int-connection-298 -int-connection-299 -int-connection-3 -int-connection-30 -int-connection-300 -int-connection-301 -int-connection-302 -int-connection-303 -int-connection-304 -int-connection-305 -int-connection-306 -int-connection-307 -int-connection-308 -int-connection-309 -int-connection-31 -int-connection-310 -int-connection-311 -int-connection-312 -int-connection-313 -int-connection-314 -int-connection-315 -int-connection-316 -int-connection-317 -int-connection-318 -int-connection-319 -int-connection-32 -int-connection-320 -int-connection-321 -int-connection-322 -int-connection-323 -int-connection-324 -int-connection-325 -int-connection-326 -int-connection-327 -int-connection-328 -int-connection-329 -int-connection-33 -int-connection-330 -int-connection-331 -int-connection-332 -int-connection-333 -int-connection-334 -int-connection-335 -int-connection-336 -int-connection-337 -int-connection-338 -int-connection-339 -int-connection-34 -int-connection-340 -int-connection-341 -int-connection-342 -int-connection-343 -int-connection-344 -int-connection-345 -int-connection-346 -int-connection-347 -int-connection-348 -int-connection-349 -int-connection-35 -int-connection-350 -int-connection-351 -int-connection-352 -int-connection-353 -int-connection-354 -int-connection-355 -int-connection-356 -int-connection-357 -int-connection-358 -int-connection-359 -int-connection-36 -int-connection-360 -int-connection-361 -int-connection-362 -int-connection-363 -int-connection-364 -int-connection-365 -int-connection-366 -int-connection-367 -int-connection-368 -int-connection-369 -int-connection-37 -int-connection-370 -int-connection-371 -int-connection-372 -int-connection-373 -int-connection-374 -int-connection-375 -int-connection-376 -int-connection-377 -int-connection-378 -int-connection-379 -int-connection-38 -int-connection-380 -int-connection-381 -int-connection-382 -int-connection-383 -int-connection-384 -int-connection-385 -int-connection-386 -int-connection-387 -int-connection-388 -int-connection-389 -int-connection-39 -int-connection-390 -int-connection-391 -int-connection-392 -int-connection-393 -int-connection-394 -int-connection-395 -int-connection-396 -int-connection-397 -int-connection-398 -int-connection-399 -int-connection-4 -int-connection-40 -int-connection-400 -int-connection-401 -int-connection-402 -int-connection-403 -int-connection-404 -int-connection-405 -int-connection-406 -int-connection-407 -int-connection-408 -int-connection-409 -int-connection-41 -int-connection-410 -int-connection-411 -int-connection-412 -int-connection-413 -int-connection-414 -int-connection-415 -int-connection-416 -int-connection-417 -int-connection-418 -int-connection-419 -int-connection-42 -int-connection-420 -int-connection-421 -int-connection-422 -int-connection-423 -int-connection-424 -int-connection-425 -int-connection-426 -int-connection-427 -int-connection-428 -int-connection-43 -int-connection-44 -int-connection-45 -int-connection-46 -int-connection-47 -int-connection-48 -int-connection-49 -int-connection-5 -int-connection-50 -int-connection-51 -int-connection-52 -int-connection-53 -int-connection-54 -int-connection-55 -int-connection-56 -int-connection-57 -int-connection-58 -int-connection-59 -int-connection-6 -int-connection-60 -int-connection-61 -int-connection-62 -int-connection-63 -int-connection-64 -int-connection-65 -int-connection-66 -int-connection-67 -int-connection-68 -int-connection-69 -int-connection-7 -int-connection-70 -int-connection-71 -int-connection-72 -int-connection-73 -int-connection-74 -int-connection-75 -int-connection-76 -int-connection-77 -int-connection-78 -int-connection-79 -int-connection-8 -int-connection-80 -int-connection-81 -int-connection-82 -int-connection-83 -int-connection-84 -int-connection-85 -int-connection-86 -int-connection-87 -int-connection-88 -int-connection-89 -int-connection-9 -int-connection-90 -[2024-06-07 08:55:38,936] INFO:root:parameters {} -[2024-06-07 08:55:38,998] INFO:device.service.OpenConfigServicer: config from openconfigservicer {'channels': [], 'transceivers': {'transceiver': []}, 'interfaces': {'interface': ''}, 'channel_namespace': None, 'endpoints': [], 'device_name': 'R2', 'new_config': {'band_type': 'C_BAND', 'low-freq': 192006250, 'up-freq': 192206250, 'frequency': 192106250, 'band': 200000, 'ob_id': 1}, 'is_opticalband': True, 'flow': [['bcfb768c-e8fb-5e0b-9559-821d120b5410', '0']]} -[2024-06-07 08:55:39,035] INFO:device.service.OpenConfigServicer:device is device_id { - device_uuid { - uuid: "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6" - } -} -name: "R2" -device_type: "optical-roadm" -device_operational_status: DEVICEOPERATIONALSTATUS_ENABLED -device_drivers: DEVICEDRIVER_OC -device_endpoints { - endpoint_id { - 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: "053a62f6-2760-562a-b285-15a9b159c2c5" - } - } - name: "port-46-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0a9b56db-32f8-5c60-83af-7ceaa39c618e" - } - } - name: "port-2-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0d103312-7c8c-5e8a-980f-f6863b42d0d3" - } - } - name: "port-10-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0ee5d330-9700-5684-92c1-bcb6c4c8a3bc" - } - } - name: "port-8-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "115ed444-0128-53f1-aa1a-ce8129a55f67" - } - } - name: "port-9-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "12ea85fc-4388-59c1-9cb9-b480ee06e01a" - } - } - name: "port-45-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "14bb0e42-db22-5dfb-b618-4caa72a8e8cc" - } - } - name: "port-42-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "18a7b3b1-d4a3-590a-a5a9-b7db5293ac61" - } - } - name: "port-48-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "19041fc0-6807-5b8f-9b26-7e7eed556980" - } - } - name: "port-6-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "1950275c-e218-5190-8ca5-6a2228c4a87b" - } - } - name: "port-10-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "21db5850-b53e-57de-ba2a-bf578bffb1ea" - } - } - name: "port-46-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "261a53b4-d257-5f35-bf5b-b2f975d7d2ed" - } - } - name: "port-35-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "266dc3a1-0892-5454-a917-3fa62190c6c2" - } - } - name: "port-8-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "2e4f4523-3fb0-5704-9a47-1cf467d70bc8" - } - } - name: "port-13-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "2f6d500b-2407-516f-9468-4f059b218f4b" - } - } - name: "port-43-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3062d499-cf08-5f02-94c6-8906ebdf756b" - } - } - name: "port-41-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "31060d00-8617-55c3-92f2-f42b876478c1" - } - } - name: "port-4-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "399d3645-5565-502b-bfc8-3ea9cf68a83b" - } - } - name: "port-36-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3ba5f6db-ffde-59d9-a7ae-af06e96a9674" - } - } - name: "port-40-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3e17084e-d2b4-5cb2-b31a-7f6d80feb60e" - } - } - name: "port-5-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3e74aa2a-cf0d-51ce-b406-dcf1b96ae5d5" - } - } - name: "port-11-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3efedbc2-7363-53cf-a0b9-fc4a2bcbd245" - } - } - name: "port-1-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "48a917ad-12d8-5ec4-aaab-84b35337abfe" - } - } - name: "port-14-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5047aede-f784-58ab-b80a-454386a43c64" - } - } - name: "port-12-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "50b41e11-e2f7-5720-b2b0-bc2a43eb7b95" - } - } - name: "port-38-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5aeb719f-e322-5185-be08-a2f837992a4f" - } - } - name: "port-44-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5cfa4f91-cbce-5721-b612-e6b5eaa76721" - } - } - name: "port-35-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5d5cb9d0-e675-55b7-8a76-5649f4c95c81" - } - } - name: "port-39-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5dd55ad7-b980-562e-b579-d724a3655d31" - } - } - name: "port-34-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5eba7909-6f11-5154-b6e9-e2a2bbc75bb0" - } - } - name: "port-48-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "625560d9-4809-5f40-b3cf-23ec59efe71a" - } - } - name: "port-38-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "630a400f-dd0c-51d0-8049-c281881190b0" - } - } - name: "port-3-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "6a2d629b-9dfe-58af-bc5b-96277a127512" - } - } - name: "port-41-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "6e621543-9616-57bf-806c-2564047f234b" - } - } - name: "port-15-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "6e9b83ef-b9a4-5898-9495-38c45635aac7" - } - } - name: "port-34-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "72fabf2f-0121-5198-a4bf-ab82034d7da9" - } - } - name: "port-16-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "743daf39-41eb-500c-b61b-d7b473249022" - } - } - name: "port-47-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "76d3c064-04eb-5edf-95ac-645cb6348b61" - } - } - name: "port-33-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "77d8c722-2ad2-5a7c-8669-fb900f1166e1" - } - } - name: "port-45-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "8657516b-33f4-5d1c-839d-51acbc6fb93d" - } - } - name: "port-36-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "86f6b3e0-3e7e-5db2-bb71-6e05229c97eb" - } - } - name: "port-3-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "922a952b-50b6-5985-bf44-3afeb53f396e" - } - } - name: "port-44-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "94ae7ec2-0cba-55ea-a36f-2143b205ed64" - } - } - name: "port-43-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "994c45dd-b2b8-53c4-957d-4834f45e0e1f" - } - } - name: "port-13-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a08ab669-238c-5e9e-9e86-780d39111595" - } - } - name: "port-40-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a751a510-e108-5819-bafb-3d3e6881b4eb" - } - } - name: "port-12-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b22d517e-2d36-518b-9e3e-c75c625f06ef" - } - } - name: "port-7-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b3ab2b45-ed47-5c14-801d-b1104dd9d619" - } - } - name: "port-6-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b71a78da-69db-5260-8a15-8de81d02a20d" - } - } - name: "port-9-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "bc82f789-cbb1-5f3e-b989-88dab185ea0d" - } - } - name: "port-37-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "bcfb768c-e8fb-5e0b-9559-821d120b5410" - } - } - name: "port-1-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "bd08db44-134e-5902-bb24-b2453bf21db4" - } - } - name: "port-5-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "be1b3bb0-8aed-569a-be91-e888b0c0985d" - } - } - name: "port-33-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c027a391-2cf6-5b96-bba3-051e01c63f43" - } - } - name: "port-7-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c2d5ac50-2faf-5608-a6ae-7c023bceb289" - } - } - name: "port-39-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c4568f02-d291-5c95-b9bc-846278862db9" - } - } - name: "port-4-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c559fb60-6495-5992-b339-ac7a590e337c" - } - } - name: "port-16-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cace07d7-0ca3-51be-bef1-b58db0ccba6f" - } - } - name: "port-2-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "caf865b8-df54-5601-9163-1cdbe8f7a599" - } - } - name: "port-47-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cc5064c4-bc42-5c50-b5b0-9b2ad1405bd8" - } - } - name: "port-42-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e650eba7-019d-5c4f-9d75-14d47a711f2f" - } - } - name: "port-14-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e7566eac-9fa0-5137-929a-7cf2485babea" - } - } - name: "port-37-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ea7812b2-db7c-5504-a415-6b4299ae090f" - } - } - name: "port-11-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "fd4d5404-baf3-5f5f-b7b7-a825c90e5f2a" - } - } - name: "port-15-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -controller_id { -} - -[2024-06-07 08:55:39,035] INFO:device.service.OpenConfigServicer:from openconfigservicer [{'resource_key': 'channel_namespace', 'value': None}, {'resource_key': 'add_transceiver', 'value': None}, {'resource_key': 'source_port', 'value': ['port-1-in']}, {'resource_key': 'destination_port', 'value': [None]}, {'resource_key': 'target-output-power', 'value': None}, {'resource_key': 'frequency', 'value': 192106250}, {'resource_key': 'operational-mode', 'value': None}, {'resource_key': 'line-port', 'value': None}, {'resource_key': 'name', 'value': 'C_BAND'}, {'resource_key': 'optical-band-parent', 'value': 1}, {'resource_key': 'channel_name', 'value': None}, {'resource_key': 'index', 'value': 1}, {'resource_key': 'lower-frequency', 'value': 192006250}, {'resource_key': 'upper-frequency', 'value': 192206250}] and conditions {'is_opticalband': True, 'edit_type': 'optical-band'} -[2024-06-07 08:55:39,036] INFO:ncclient.operations.rpc:[host 172.17.254.22 session-id 19] Requesting 'EditConfig' -[2024-06-07 08:55:39,287] INFO:root:resonse from edit - -[2024-06-07 08:55:39,287] INFO:device.service.OpenConfigServicer:resluts [True] and is_all_good True -[2024-06-07 08:55:39,288] INFO:ncclient.operations.rpc:[host 172.17.254.22 session-id 19] Requesting 'Get' -int-connection-91 -int-connection-92 -int-connection-93 -int-connection-94 -int-connection-95 -int-connection-96 -int-connection-97 -int-connection-98 -int-connection-99 -port-1-in -port-1-out -port-10-in -port-10-out -port-11-in -port-11-out -port-12-in -port-12-out -port-13-in -port-13-out -port-14-in -port-14-out -port-15-in -port-15-out -port-16-in -port-16-out -port-17-in -port-17-out -port-18-in -port-18-out -port-19-in -port-19-out -port-2-in -port-2-out -port-20-in -port-20-out -port-21-in -port-21-out -port-22-in -port-22-out -port-23-in -port-23-out -port-24-in -port-24-out -port-25-in -port-25-out -port-26-in -port-26-out -port-27-in -port-27-out -port-28-in -port-28-out -port-29-in -port-29-out -port-3-in -port-3-out -port-30-in -port-30-out -port-31-in -port-31-out -port-32-in -port-32-out -port-33-in -port-33-out -port-34-in -port-34-out -port-35-in -port-35-out -port-36-in -port-36-out -port-37-in -port-37-out -port-38-in -port-38-out -port-39-in -port-39-out -port-4-in -port-4-out -port-40-in -port-40-out -port-41-in -port-41-out -port-42-in -port-42-out -port-43-in -port-43-out -port-44-in -port-44-out -port-45-in -port-45-out -port-46-in -port-46-out -port-47-in -port-47-out -port-48-in -port-48-out -port-5-in -port-5-out -port-6-in -port-6-out -port-7-in -port-7-out -port-8-in -port-8-out -port-9-in -port-9-out -component [, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -WBSS-1 -WBSS-10 -WBSS-11 -WBSS-12 -WBSS-13 -WBSS-14 -WBSS-15 -WBSS-16 -WBSS-17 -WBSS-18 -WBSS-19 -WBSS-2 -WBSS-20 -WBSS-21 -WBSS-22 -WBSS-23 -WBSS-24 -WBSS-25 -WBSS-26 -WBSS-27 -WBSS-28 -WBSS-29 -WBSS-3 -WBSS-30 -WBSS-31 -WBSS-32 -WBSS-4 -WBSS-5 -WBSS-6 -WBSS-7 -WBSS-8 -WBSS-9 -WSS-1 -WSS-10 -WSS-11 -WSS-12 -WSS-2 -WSS-3 -WSS-4 -WSS-5 -WSS-6 -WSS-7 -WSS-8 -WSS-9 -int-connection-1 -int-connection-10 -int-connection-100 -int-connection-101 -int-connection-102 -int-connection-103 -int-connection-104 -int-connection-105 -int-connection-106 -int-connection-107 -int-connection-108 -int-connection-109 -int-connection-11 -int-connection-110 -int-connection-111 -int-connection-112 -int-connection-113 -int-connection-114 -int-connection-115 -int-connection-116 -int-connection-117 -int-connection-118 -int-connection-119 -int-connection-12 -int-connection-120 -int-connection-121 -int-connection-122 -int-connection-123 -int-connection-124 -int-connection-125 -int-connection-126 -int-connection-127 -int-connection-128 -int-connection-129 -int-connection-13 -int-connection-130 -int-connection-131 -int-connection-132 -int-connection-133 -int-connection-134 -int-connection-135 -int-connection-136 -int-connection-137 -int-connection-138 -int-connection-139 -int-connection-14 -int-connection-140 -int-connection-141 -int-connection-142 -int-connection-143 -int-connection-144 -int-connection-145 -int-connection-146 -int-connection-147 -int-connection-148 -int-connection-149 -int-connection-15 -int-connection-150 -int-connection-151 -int-connection-152 -int-connection-153 -int-connection-154 -int-connection-155 -int-connection-156 -int-connection-157 -int-connection-158 -int-connection-159 -int-connection-16 -int-connection-160 -int-connection-161 -int-connection-162 -int-connection-163 -int-connection-164 -int-connection-165 -int-connection-166 -int-connection-167 -int-connection-168 -int-connection-169 -int-connection-17 -int-connection-170 -int-connection-171 -int-connection-172 -int-connection-173 -int-connection-174 -int-connection-175 -int-connection-176 -int-connection-177 -int-connection-178 -int-connection-179 -int-connection-18 -int-connection-180 -int-connection-181 -int-connection-182 -int-connection-183 -int-connection-184 -int-connection-185 -int-connection-186 -int-connection-187 -int-connection-188 -int-connection-189 -int-connection-19 -int-connection-190 -int-connection-191 -int-connection-192 -int-connection-193 -int-connection-194 -int-connection-195 -int-connection-196 -int-connection-197 -int-connection-198 -int-connection-199 -int-connection-2 -int-connection-20 -int-connection-200 -int-connection-201 -int-connection-202 -int-connection-203 -int-connection-204 -int-connection-205 -int-connection-206 -int-connection-207 -int-connection-208 -int-connection-209 -int-connection-21 -int-connection-210 -int-connection-211 -int-connection-212 -int-connection-213 -int-connection-214 -int-connection-215 -int-connection-216 -int-connection-217 -int-connection-218 -int-connection-219 -int-connection-22 -int-connection-220 -int-connection-221 -int-connection-222 -int-connection-223 -int-connection-224 -int-connection-225 -int-connection-226 -int-connection-227 -int-connection-228 -int-connection-229 -int-connection-23 -int-connection-230 -int-connection-231 -int-connection-232 -int-connection-233 -int-connection-234 -int-connection-235 -int-connection-236 -int-connection-237 -int-connection-238 -int-connection-239 -int-connection-24 -int-connection-240 -int-connection-241 -int-connection-242 -int-connection-243 -int-connection-244 -int-connection-245 -int-connection-246 -int-connection-247 -int-connection-248 -int-connection-249 -int-connection-25 -int-connection-250 -int-connection-251 -int-connection-252 -int-connection-253 -int-connection-254 -int-connection-255 -int-connection-256 -int-connection-257 -int-connection-258 -int-connection-259 -int-connection-26 -int-connection-260 -int-connection-261 -int-connection-262 -int-connection-263 -int-connection-264 -int-connection-265 -int-connection-266 -int-connection-267 -int-connection-268 -int-connection-269 -int-connection-27 -int-connection-270 -int-connection-271 -int-connection-272 -int-connection-273 -int-connection-274 -int-connection-275 -int-connection-276 -int-connection-277 -int-connection-278 -int-connection-279 -int-connection-28 -int-connection-280 -int-connection-281 -int-connection-282 -int-connection-283 -int-connection-284 -int-connection-285 -int-connection-286 -int-connection-287 -int-connection-288 -int-connection-289 -int-connection-29 -int-connection-290 -int-connection-291 -int-connection-292 -int-connection-293 -int-connection-294 -int-connection-295 -int-connection-296 -int-connection-297 -int-connection-298 -int-connection-299 -int-connection-3 -int-connection-30 -int-connection-300 -int-connection-301 -int-connection-302 -int-connection-303 -int-connection-304 -int-connection-305 -int-connection-306 -int-connection-307 -int-connection-308 -int-connection-309 -int-connection-31 -int-connection-310 -int-connection-311 -int-connection-312 -int-connection-313 -int-connection-314 -int-connection-315 -int-connection-316 -int-connection-317 -int-connection-318 -int-connection-319 -int-connection-32 -int-connection-320 -int-connection-321 -int-connection-322 -int-connection-323 -int-connection-324 -int-connection-325 -int-connection-326 -int-connection-327 -int-connection-328 -int-connection-329 -int-connection-33 -int-connection-330 -int-connection-331 -int-connection-332 -int-connection-333 -int-connection-334 -int-connection-335 -int-connection-336 -int-connection-337 -int-connection-338 -int-connection-339 -int-connection-34 -int-connection-340 -int-connection-341 -int-connection-342 -int-connection-343 -int-connection-344 -int-connection-345 -int-connection-346 -int-connection-347 -int-connection-348 -int-connection-349 -int-connection-35 -int-connection-350 -int-connection-351 -int-connection-352 -int-connection-353 -int-connection-354 -int-connection-355 -int-connection-356 -int-connection-357 -int-connection-358 -int-connection-359 -int-connection-36 -int-connection-360 -int-connection-361 -int-connection-362 -int-connection-363 -int-connection-364 -int-connection-365 -int-connection-366 -int-connection-367 -int-connection-368 -int-connection-369 -int-connection-37 -int-connection-370 -int-connection-371 -int-connection-372 -int-connection-373 -int-connection-374 -int-connection-375 -int-connection-376 -int-connection-377 -int-connection-378 -int-connection-379 -int-connection-38 -int-connection-380 -int-connection-381 -int-connection-382 -int-connection-383 -int-connection-384 -int-connection-385 -int-connection-386 -int-connection-387 -int-connection-388 -int-connection-389 -int-connection-39 -int-connection-390 -int-connection-391 -int-connection-392 -int-connection-393 -int-connection-394 -int-connection-395 -int-connection-396 -int-connection-397 -int-connection-398 -int-connection-399 -int-connection-4 -int-connection-40 -int-connection-400 -int-connection-401 -int-connection-402 -int-connection-403 -int-connection-404 -int-connection-405 -int-connection-406 -int-connection-407 -int-connection-408 -int-connection-409 -int-connection-41 -int-connection-410 -int-connection-411 -int-connection-412 -int-connection-413 -int-connection-414 -int-connection-415 -int-connection-416 -int-connection-417 -int-connection-418 -int-connection-419 -int-connection-42 -int-connection-420 -int-connection-421 -int-connection-422 -int-connection-423 -int-connection-424 -int-connection-425 -int-connection-426 -int-connection-427 -int-connection-428 -int-connection-43 -int-connection-44 -int-connection-45 -int-connection-46 -int-connection-47 -int-connection-48 -int-connection-49 -int-connection-5 -int-connection-50 -int-connection-51 -int-connection-52 -int-connection-53 -int-connection-54 -int-connection-55 -int-connection-56 -int-connection-57 -int-connection-58 -int-connection-59 -int-connection-6 -int-connection-60 -int-connection-61 -int-connection-62 -int-connection-63 -int-connection-64 -int-connection-65 -int-connection-66 -int-connection-67 -int-connection-68 -int-connection-69 -int-connection-7 -int-connection-70 -int-connection-71 -int-connection-72 -int-connection-73 -int-connection-74 -int-connection-75 -int-connection-76 -int-connection-77 -int-connection-78 -int-connection-79 -int-connection-8 -int-connection-80 -int-connection-81 -int-connection-82 -int-connection-83 -int-connection-84 -int-connection-85 -int-connection-86 -int-connection-87 -int-connection-88 -int-connection-89 -int-connection-9 -int-connection-90 -[2024-06-07 08:55:41,961] INFO:root:parameters {} -[2024-06-07 08:55:42,086] INFO:device.service.OpenConfigServicer: config from openconfigservicer {'channels': [{'name': {'index': 'channel-3'}, 'frequency': 191600000, 'target-output-power': '100.0', 'operational-mode': 0}, {'name': {'index': 'channel-1'}, 'frequency': 191600000, 'target-output-power': '100.0', 'operational-mode': 0}, {'name': {'index': 'channel-4'}, 'frequency': 191600000, 'target-output-power': '100.0', 'operational-mode': 0}, {'name': {'index': 'channel-2'}, 'frequency': 191600000, 'target-output-power': '100.0', 'operational-mode': 0}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'interfaces': {'interface': ''}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'device_name': 'T1.1', 'new_config': {'target-output-power': '1.0', 'frequency': 192056250, 'operational-mode': 8, 'band': 100000, 'flow_id': 1, 'ob_id': 1, 'band_type': 'C_BAND'}, 'is_opticalband': False, 'flow': [['0', '5eb4f156-7811-53f3-9172-8402127cf7b9']]} -[2024-06-07 08:55:42,102] INFO:device.service.OpenConfigServicer:device is device_id { - device_uuid { - uuid: "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7" - } -} -name: "T1.1" -device_type: "optical-transponder" -device_operational_status: DEVICEOPERATIONALSTATUS_ENABLED -device_drivers: DEVICEDRIVER_OC -device_endpoints { - endpoint_id { - 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" - } - } - name: "1" - endpoint_type: "port-1" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "8b59684b-f324-52cd-a050-f218730162c1" - } - } - name: "4" - endpoint_type: "port-4" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cfe606b4-11f1-534e-b5b6-ee45a0ebf616" - } - } - name: "3" - endpoint_type: "port-3" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "f713412b-aa6e-5c5d-9d0d-de80ad78438f" - } - } - name: "2" - endpoint_type: "port-2" - endpoint_location { - } -} -controller_id { -} - -[2024-06-07 08:55:42,102] INFO:device.service.OpenConfigServicer:from openconfigservicer [{'resource_key': 'channel_namespace', 'value': 'http://openconfig.net/yang/terminal-device'}, {'resource_key': 'add_transceiver', 'value': None}, {'resource_key': 'source_port', 'value': [None]}, {'resource_key': 'destination_port', 'value': ['1']}, {'resource_key': 'target-output-power', 'value': '1.0'}, {'resource_key': 'frequency', 'value': 192056250}, {'resource_key': 'operational-mode', 'value': 8}, {'resource_key': 'line-port', 'value': None}, {'resource_key': 'name', 'value': 'C_BAND'}, {'resource_key': 'optical-band-parent', 'value': 1}, {'resource_key': 'channel_name', 'value': None}, {'resource_key': 'lower-frequency', 'value': None}, {'resource_key': 'upper-frequency', 'value': None}] and conditions {'is_opticalband': False, 'edit_type': 'optical-channel'} -[2024-06-07 08:55:42,102] INFO:root:ports are {'source_port': [None], 'destination_port': ['1']} -[2024-06-07 08:55:42,103] INFO:ncclient.operations.rpc:[host 172.17.254.41 session-id 29] Requesting 'EditConfig' -[2024-06-07 08:55:42,216] INFO:root:resonse from edit - -[2024-06-07 08:55:42,216] INFO:device.service.OpenConfigServicer:resluts [True] and is_all_good True -[2024-06-07 08:55:42,218] INFO:ncclient.operations.rpc:[host 172.17.254.41 session-id 29] Requesting 'Get' -[2024-06-07 08:55:42,447] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:42,457] INFO:root:dic {'frequency': '192056250'} -[2024-06-07 08:55:42,457] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:42,458] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0'} -[2024-06-07 08:55:42,459] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:42,460] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8'} -[2024-06-07 08:55:42,460] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:42,461] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1'} -[2024-06-07 08:55:42,462] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:42,463] INFO:root:dic {'frequency': '191600000'} -[2024-06-07 08:55:42,463] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:42,464] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-07 08:55:42,464] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:42,466] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-07 08:55:42,466] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:42,467] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-06-07 08:55:42,467] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:42,470] INFO:root:dic {'frequency': '191600000'} -[2024-06-07 08:55:42,470] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:42,472] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-07 08:55:42,472] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:42,473] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-07 08:55:42,473] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:42,474] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-06-07 08:55:42,475] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:42,476] INFO:root:dic {'frequency': '191600000'} -[2024-06-07 08:55:42,476] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:42,477] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-07 08:55:42,478] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:42,479] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-07 08:55:42,479] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:42,480] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-06-07 08:55:42,482] INFO:root:parameters {'channels': [{'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1', 'name': {'index': 'channel-1'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2', 'name': {'index': 'channel-2'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3', 'name': {'index': 'channel-3'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4', 'name': {'index': 'channel-4'}}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'ports': [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})]} -[2024-06-07 08:55:42,852] INFO:device.service.OpenConfigServicer: config from openconfigservicer {'channels': [], 'transceivers': {'transceiver': []}, 'interfaces': {'interface': ''}, 'channel_namespace': None, 'endpoints': [], 'device_name': 'R1', 'new_config': {'target-output-power': '1.0', 'frequency': 192056250, 'operational-mode': 8, 'band': 100000, 'flow_id': 1, 'ob_id': 1, 'band_type': 'C_BAND'}, 'is_opticalband': False, 'flow': [['0b1c4d0e-5140-5085-ab66-2def390b650f', '77df46fd-6d6e-5726-9960-ca439c925dea']]} -[2024-06-07 08:55:42,886] INFO:device.service.OpenConfigServicer:device is device_id { - device_uuid { - uuid: "68741528-2e94-5274-ab3c-fddcd8dc05ef" - } -} -name: "R1" -device_type: "optical-roadm" -device_operational_status: DEVICEOPERATIONALSTATUS_ENABLED -device_drivers: DEVICEDRIVER_OC -device_endpoints { - endpoint_id { - 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: "02c19f3c-73ac-55b9-b4c2-7def7e7df9fe" - } - } - name: "port-48-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0332be2a-9b4e-52d7-ac7b-3ea58bf00375" - } - } - name: "port-12-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "08da1aa7-9253-5e92-bf2c-6e66ffe7a4ff" - } - } - name: "port-38-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0b1c4d0e-5140-5085-ab66-2def390b650f" - } - } - name: "port-33-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "12b4419f-9ae9-5839-ad52-9684b1f30878" - } - } - name: "port-34-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "188af412-9ac2-588f-8f00-a956aa6b2ae5" - } - } - name: "port-43-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "18a51dcf-905d-5104-9ef1-f24740fd6d78" - } - } - name: "port-12-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "1e02e33d-4b14-502d-9806-988f64cccb5d" - } - } - name: "port-43-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "21b8ccaa-9f7b-5bc5-9fc0-6f32025eb8a6" - } - } - name: "port-41-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "22d287ab-7935-55cb-b681-944a064726a9" - } - } - name: "port-11-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "28666b3c-4b96-5cb6-8006-eba13ca8ab6e" - } - } - name: "port-9-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "29e8b36f-6989-5651-99fe-b3cb2ee5b4b8" - } - } - name: "port-40-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "2b646bf7-3120-5254-a4fb-748294c61a71" - } - } - name: "port-2-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "35aaee89-81a3-56b1-b1ba-33f972d0af49" - } - } - name: "port-36-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "385bc8da-171b-574c-9d4f-d9b08f29c469" - } - } - name: "port-40-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "38f57fc2-4b25-5b8e-8ab0-e2676594b652" - } - } - name: "port-39-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3972ab17-4386-5a0c-92db-fc8096433068" - } - } - name: "port-38-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3a49ceb2-fd5b-59e2-975a-b065c4e127a4" - } - } - name: "port-7-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3b1551b2-3c17-54f6-8990-308ee42b421d" - } - } - name: "port-15-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3f8b1948-619c-5130-a158-b7beb838434c" - } - } - name: "port-14-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "435a198b-cd6f-5d29-a72d-ea4f04cb658a" - } - } - name: "port-35-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "436bb32a-c8a0-5718-bbdb-382c79d96587" - } - } - name: "port-1-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "4b197fb8-d26e-59fb-a96c-d347ba017b28" - } - } - name: "port-46-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "53e3c997-d487-5d96-a6c4-998a562dcb96" - } - } - name: "port-5-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "55684f06-7aab-5061-aa0d-2e37b45e5ec7" - } - } - name: "port-2-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "56c81904-047c-5d7c-a765-79b9e4b7abf2" - } - } - name: "port-3-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "59871dc1-872d-5df1-9392-2537a591c86c" - } - } - name: "port-45-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "59fcacb0-1840-5dd3-9dfa-a07cf4f91bd2" - } - } - name: "port-3-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5ac999c3-3df8-53c4-8f4a-52e5943f5c4c" - } - } - name: "port-14-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "62099377-4f4f-5ffb-aa37-6dec3319a21e" - } - } - name: "port-13-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "6a6dc5d4-567c-5104-b50d-6820768d2699" - } - } - name: "port-46-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "77df46fd-6d6e-5726-9960-ca439c925dea" - } - } - name: "port-1-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "7be48ef0-2357-55fa-aca6-a1aeeeb3267a" - } - } - name: "port-42-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "7ce13dc8-d5f1-5233-beec-1d99416c9164" - } - } - name: "port-44-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "883609be-6125-5bbf-91ac-2a30e75a7d1e" - } - } - name: "port-16-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "8d0c4ac4-c522-5992-a206-45e8bf8389c6" - } - } - name: "port-7-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "904c4b18-10a6-512b-9bb2-8ec81e74fda4" - } - } - name: "port-34-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "91492a21-2f88-5acc-a427-2a57230eb2ea" - } - } - name: "port-15-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "927b0db8-602b-54d5-acd9-c1cd6395425f" - } - } - name: "port-39-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a18a7eb1-811d-5d27-be08-db212d83f25e" - } - } - name: "port-45-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a7058178-97da-5b95-b969-abe5ab7a8e6f" - } - } - name: "port-42-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a7d33ece-9565-59ec-999f-4c995d142f83" - } - } - name: "port-4-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a9061634-e9a7-5d13-bc96-09fbf31cd610" - } - } - name: "port-41-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b5354091-162e-5073-aeb2-ec5debcfcf9f" - } - } - name: "port-16-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b9fbeed8-e304-5bd5-90e1-3e43c6af5a16" - } - } - name: "port-35-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c31537c8-13df-503d-bf91-64e860e6b573" - } - } - name: "port-48-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ca4f5f60-37ba-567b-a474-ff8951033342" - } - } - name: "port-47-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cc197d41-625f-50d1-94d8-c6c63a31ccfb" - } - } - name: "port-8-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ccb07637-f7d6-5b4a-9fc6-8510ef694cd9" - } - } - name: "port-4-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cd539095-12a6-5460-8b07-481ec1901c9a" - } - } - name: "port-33-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cfe60fca-3fe5-5747-ace8-ca7913e26d81" - } - } - name: "port-13-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "dda83a5d-29b7-5f96-9b0a-bd1f39e1db2f" - } - } - name: "port-37-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e2500678-0f36-555a-9133-7cd04d3ad63a" - } - } - name: "port-6-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e5265cb0-2e80-5ea1-80d8-333749bb7f14" - } - } - name: "port-5-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e9d0dac3-11f2-5b84-9125-d0300ccd8eeb" - } - } - name: "port-37-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e9d4bff3-76ac-5490-b897-a30b9a42a8b1" - } - } - name: "port-44-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ea73d8c4-1077-55c9-87f1-9c377cee196f" - } - } - name: "port-9-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "eb38e3cd-e42a-54b2-846c-82207a95e8e3" - } - } - name: "port-10-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ebfe571c-77b2-5f66-9efe-25583cc1f587" - } - } - name: "port-36-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ee4df110-8657-571c-aa20-a70ec79db01f" - } - } - name: "port-47-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "f206246e-cb90-56b4-b908-1dc3daa7ac3f" - } - } - name: "port-11-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "f7052fb4-fab8-5821-95e0-d407043742d8" - } - } - name: "port-8-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "f8bd2b7e-6d37-5bbc-92f4-9b9b2e0ce22c" - } - } - name: "port-10-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ff51524f-7b51-5efd-af6b-6bc8541d3716" - } - } - name: "port-6-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -controller_id { -} - -[2024-06-07 08:55:42,886] INFO:device.service.OpenConfigServicer:from openconfigservicer [{'resource_key': 'channel_namespace', 'value': None}, {'resource_key': 'add_transceiver', 'value': None}, {'resource_key': 'source_port', 'value': ['port-33-in']}, {'resource_key': 'destination_port', 'value': ['port-1-out']}, {'resource_key': 'target-output-power', 'value': '1.0'}, {'resource_key': 'frequency', 'value': 192056250}, {'resource_key': 'operational-mode', 'value': 8}, {'resource_key': 'line-port', 'value': None}, {'resource_key': 'name', 'value': 'C_BAND'}, {'resource_key': 'optical-band-parent', 'value': 1}, {'resource_key': 'channel_name', 'value': None}, {'resource_key': 'lower-frequency', 'value': None}, {'resource_key': 'upper-frequency', 'value': None}] and conditions {'is_opticalband': False, 'edit_type': 'optical-channel'} -[2024-06-07 08:55:42,886] INFO:root:ports are {'source_port': ['port-33-in'], 'destination_port': ['port-1-out']} -[2024-06-07 08:55:42,887] INFO:device.service.OpenConfigServicer:error in configuring xml/html attributes should be passed as strings, ints or floats. Got None (type ) instead. -[2024-06-07 08:55:42,903] INFO:device.service.OpenConfigServicer: config from openconfigservicer {'channels': [], 'transceivers': {'transceiver': []}, 'interfaces': {'interface': ''}, 'channel_namespace': None, 'endpoints': [], 'device_name': 'R2', 'new_config': {'target-output-power': '1.0', 'frequency': 192056250, 'operational-mode': 8, 'band': 100000, 'flow_id': 1, 'ob_id': 1, 'band_type': 'C_BAND'}, 'is_opticalband': False, 'flow': [['bcfb768c-e8fb-5e0b-9559-821d120b5410', '76d3c064-04eb-5edf-95ac-645cb6348b61']]} -[2024-06-07 08:55:42,934] INFO:device.service.OpenConfigServicer:device is device_id { - device_uuid { - uuid: "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6" - } -} -name: "R2" -device_type: "optical-roadm" -device_operational_status: DEVICEOPERATIONALSTATUS_ENABLED -device_drivers: DEVICEDRIVER_OC -device_endpoints { - endpoint_id { - 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: "053a62f6-2760-562a-b285-15a9b159c2c5" - } - } - name: "port-46-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0a9b56db-32f8-5c60-83af-7ceaa39c618e" - } - } - name: "port-2-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0d103312-7c8c-5e8a-980f-f6863b42d0d3" - } - } - name: "port-10-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0ee5d330-9700-5684-92c1-bcb6c4c8a3bc" - } - } - name: "port-8-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "115ed444-0128-53f1-aa1a-ce8129a55f67" - } - } - name: "port-9-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "12ea85fc-4388-59c1-9cb9-b480ee06e01a" - } - } - name: "port-45-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "14bb0e42-db22-5dfb-b618-4caa72a8e8cc" - } - } - name: "port-42-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "18a7b3b1-d4a3-590a-a5a9-b7db5293ac61" - } - } - name: "port-48-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "19041fc0-6807-5b8f-9b26-7e7eed556980" - } - } - name: "port-6-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "1950275c-e218-5190-8ca5-6a2228c4a87b" - } - } - name: "port-10-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "21db5850-b53e-57de-ba2a-bf578bffb1ea" - } - } - name: "port-46-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "261a53b4-d257-5f35-bf5b-b2f975d7d2ed" - } - } - name: "port-35-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "266dc3a1-0892-5454-a917-3fa62190c6c2" - } - } - name: "port-8-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "2e4f4523-3fb0-5704-9a47-1cf467d70bc8" - } - } - name: "port-13-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "2f6d500b-2407-516f-9468-4f059b218f4b" - } - } - name: "port-43-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3062d499-cf08-5f02-94c6-8906ebdf756b" - } - } - name: "port-41-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "31060d00-8617-55c3-92f2-f42b876478c1" - } - } - name: "port-4-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "399d3645-5565-502b-bfc8-3ea9cf68a83b" - } - } - name: "port-36-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3ba5f6db-ffde-59d9-a7ae-af06e96a9674" - } - } - name: "port-40-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3e17084e-d2b4-5cb2-b31a-7f6d80feb60e" - } - } - name: "port-5-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3e74aa2a-cf0d-51ce-b406-dcf1b96ae5d5" - } - } - name: "port-11-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3efedbc2-7363-53cf-a0b9-fc4a2bcbd245" - } - } - name: "port-1-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "48a917ad-12d8-5ec4-aaab-84b35337abfe" - } - } - name: "port-14-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5047aede-f784-58ab-b80a-454386a43c64" - } - } - name: "port-12-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "50b41e11-e2f7-5720-b2b0-bc2a43eb7b95" - } - } - name: "port-38-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5aeb719f-e322-5185-be08-a2f837992a4f" - } - } - name: "port-44-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5cfa4f91-cbce-5721-b612-e6b5eaa76721" - } - } - name: "port-35-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5d5cb9d0-e675-55b7-8a76-5649f4c95c81" - } - } - name: "port-39-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5dd55ad7-b980-562e-b579-d724a3655d31" - } - } - name: "port-34-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5eba7909-6f11-5154-b6e9-e2a2bbc75bb0" - } - } - name: "port-48-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "625560d9-4809-5f40-b3cf-23ec59efe71a" - } - } - name: "port-38-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "630a400f-dd0c-51d0-8049-c281881190b0" - } - } - name: "port-3-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "6a2d629b-9dfe-58af-bc5b-96277a127512" - } - } - name: "port-41-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "6e621543-9616-57bf-806c-2564047f234b" - } - } - name: "port-15-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "6e9b83ef-b9a4-5898-9495-38c45635aac7" - } - } - name: "port-34-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "72fabf2f-0121-5198-a4bf-ab82034d7da9" - } - } - name: "port-16-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "743daf39-41eb-500c-b61b-d7b473249022" - } - } - name: "port-47-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "76d3c064-04eb-5edf-95ac-645cb6348b61" - } - } - name: "port-33-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "77d8c722-2ad2-5a7c-8669-fb900f1166e1" - } - } - name: "port-45-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "8657516b-33f4-5d1c-839d-51acbc6fb93d" - } - } - name: "port-36-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "86f6b3e0-3e7e-5db2-bb71-6e05229c97eb" - } - } - name: "port-3-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "922a952b-50b6-5985-bf44-3afeb53f396e" - } - } - name: "port-44-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "94ae7ec2-0cba-55ea-a36f-2143b205ed64" - } - } - name: "port-43-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "994c45dd-b2b8-53c4-957d-4834f45e0e1f" - } - } - name: "port-13-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a08ab669-238c-5e9e-9e86-780d39111595" - } - } - name: "port-40-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a751a510-e108-5819-bafb-3d3e6881b4eb" - } - } - name: "port-12-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b22d517e-2d36-518b-9e3e-c75c625f06ef" - } - } - name: "port-7-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b3ab2b45-ed47-5c14-801d-b1104dd9d619" - } - } - name: "port-6-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b71a78da-69db-5260-8a15-8de81d02a20d" - } - } - name: "port-9-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "bc82f789-cbb1-5f3e-b989-88dab185ea0d" - } - } - name: "port-37-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "bcfb768c-e8fb-5e0b-9559-821d120b5410" - } - } - name: "port-1-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "bd08db44-134e-5902-bb24-b2453bf21db4" - } - } - name: "port-5-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "be1b3bb0-8aed-569a-be91-e888b0c0985d" - } - } - name: "port-33-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c027a391-2cf6-5b96-bba3-051e01c63f43" - } - } - name: "port-7-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c2d5ac50-2faf-5608-a6ae-7c023bceb289" - } - } - name: "port-39-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c4568f02-d291-5c95-b9bc-846278862db9" - } - } - name: "port-4-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c559fb60-6495-5992-b339-ac7a590e337c" - } - } - name: "port-16-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cace07d7-0ca3-51be-bef1-b58db0ccba6f" - } - } - name: "port-2-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "caf865b8-df54-5601-9163-1cdbe8f7a599" - } - } - name: "port-47-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cc5064c4-bc42-5c50-b5b0-9b2ad1405bd8" - } - } - name: "port-42-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e650eba7-019d-5c4f-9d75-14d47a711f2f" - } - } - name: "port-14-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e7566eac-9fa0-5137-929a-7cf2485babea" - } - } - name: "port-37-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ea7812b2-db7c-5504-a415-6b4299ae090f" - } - } - name: "port-11-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "fd4d5404-baf3-5f5f-b7b7-a825c90e5f2a" - } - } - name: "port-15-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -controller_id { -} - -[2024-06-07 08:55:42,935] INFO:device.service.OpenConfigServicer:from openconfigservicer [{'resource_key': 'channel_namespace', 'value': None}, {'resource_key': 'add_transceiver', 'value': None}, {'resource_key': 'source_port', 'value': ['port-1-in']}, {'resource_key': 'destination_port', 'value': ['port-33-out']}, {'resource_key': 'target-output-power', 'value': '1.0'}, {'resource_key': 'frequency', 'value': 192056250}, {'resource_key': 'operational-mode', 'value': 8}, {'resource_key': 'line-port', 'value': None}, {'resource_key': 'name', 'value': 'C_BAND'}, {'resource_key': 'optical-band-parent', 'value': 1}, {'resource_key': 'channel_name', 'value': None}, {'resource_key': 'lower-frequency', 'value': None}, {'resource_key': 'upper-frequency', 'value': None}] and conditions {'is_opticalband': False, 'edit_type': 'optical-channel'} -[2024-06-07 08:55:42,935] INFO:root:ports are {'source_port': ['port-1-in'], 'destination_port': ['port-33-out']} -[2024-06-07 08:55:42,935] INFO:device.service.OpenConfigServicer:error in configuring xml/html attributes should be passed as strings, ints or floats. Got None (type ) instead. -[2024-06-07 08:55:42,955] INFO:device.service.OpenConfigServicer: config from openconfigservicer {'channels': [{'name': {'index': 'channel-3'}, 'frequency': 191600000, 'target-output-power': '100.0', 'operational-mode': 0}, {'name': {'index': 'channel-1'}, 'frequency': 191600000, 'target-output-power': '100.0', 'operational-mode': 0}, {'name': {'index': 'channel-4'}, 'frequency': 191600000, 'target-output-power': '100.0', 'operational-mode': 0}, {'name': {'index': 'channel-2'}, 'frequency': 191600000, 'target-output-power': '100.0', 'operational-mode': 0}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'interfaces': {'interface': ''}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'device_name': 'T2.1', 'new_config': {'target-output-power': '1.0', 'frequency': 192056250, 'operational-mode': 8, 'band': 100000, 'flow_id': 1, 'ob_id': 1, 'band_type': 'C_BAND'}, 'is_opticalband': False, 'flow': [['2a307a8e-d326-5ea2-9437-b0320fb4c2a6', '0']]} -[2024-06-07 08:55:42,972] INFO:device.service.OpenConfigServicer:device is device_id { - device_uuid { - uuid: "87d74166-65e3-595e-b643-122b4fd0303f" - } -} -name: "T2.1" -device_type: "optical-transponder" -device_operational_status: DEVICEOPERATIONALSTATUS_ENABLED -device_drivers: DEVICEDRIVER_OC -device_endpoints { - endpoint_id { - 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: "0329c3cb-7e98-504b-9a08-67a5480eb0a0" - } - } - name: "4" - endpoint_type: "port-4" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "274a5fa6-0915-5a53-ba0e-996fc25d0aa2" - } - } - name: "2" - endpoint_type: "port-2" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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" - } - } - name: "1" - endpoint_type: "port-1" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "70d6a261-98fe-5953-8f28-3379a9f626ab" - } - } - name: "3" - endpoint_type: "port-3" - endpoint_location { - } -} -controller_id { -} - -[2024-06-07 08:55:42,972] INFO:device.service.OpenConfigServicer:from openconfigservicer [{'resource_key': 'channel_namespace', 'value': 'http://openconfig.net/yang/terminal-device'}, {'resource_key': 'add_transceiver', 'value': None}, {'resource_key': 'source_port', 'value': ['1']}, {'resource_key': 'destination_port', 'value': [None]}, {'resource_key': 'target-output-power', 'value': '1.0'}, {'resource_key': 'frequency', 'value': 192056250}, {'resource_key': 'operational-mode', 'value': 8}, {'resource_key': 'line-port', 'value': None}, {'resource_key': 'name', 'value': 'C_BAND'}, {'resource_key': 'optical-band-parent', 'value': 1}, {'resource_key': 'channel_name', 'value': None}, {'resource_key': 'lower-frequency', 'value': None}, {'resource_key': 'upper-frequency', 'value': None}] and conditions {'is_opticalband': False, 'edit_type': 'optical-channel'} -[2024-06-07 08:55:42,973] INFO:root:ports are {'source_port': ['1'], 'destination_port': [None]} -[2024-06-07 08:55:42,974] INFO:ncclient.operations.rpc:[host 172.17.254.42 session-id 30] Requesting 'EditConfig' -[2024-06-07 08:55:43,104] INFO:root:resonse from edit - -[2024-06-07 08:55:43,105] INFO:device.service.OpenConfigServicer:resluts [True] and is_all_good True -[2024-06-07 08:55:43,106] INFO:ncclient.operations.rpc:[host 172.17.254.42 session-id 30] Requesting 'Get' -[2024-06-07 08:55:43,339] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:43,341] INFO:root:dic {'frequency': '192056250'} -[2024-06-07 08:55:43,341] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:43,342] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0'} -[2024-06-07 08:55:43,342] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:43,344] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8'} -[2024-06-07 08:55:43,344] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:43,345] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1'} -[2024-06-07 08:55:43,346] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:43,347] INFO:root:dic {'frequency': '191600000'} -[2024-06-07 08:55:43,347] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:43,349] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-07 08:55:43,349] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:43,350] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-07 08:55:43,351] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:43,352] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-06-07 08:55:43,352] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:43,354] INFO:root:dic {'frequency': '191600000'} -[2024-06-07 08:55:43,354] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:43,355] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-07 08:55:43,355] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:43,357] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-07 08:55:43,357] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:43,358] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-06-07 08:55:43,359] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:43,360] INFO:root:dic {'frequency': '191600000'} -[2024-06-07 08:55:43,360] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:43,363] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-07 08:55:43,363] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:43,365] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-07 08:55:43,365] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-07 08:55:43,366] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-06-07 08:55:43,368] INFO:root:parameters {'channels': [{'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1', 'name': {'index': 'channel-1'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2', 'name': {'index': 'channel-2'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3', 'name': {'index': 'channel-3'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4', 'name': {'index': 'channel-4'}}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'ports': [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})]} diff --git a/aa b/aa deleted file mode 100644 index d95b0dd00738ffd5d48304691546c4d88e9b717f..0000000000000000000000000000000000000000 --- a/aa +++ /dev/null @@ -1,22686 +0,0 @@ -[2024-06-20 13:19:29,931] INFO:__main__:Starting... -[2024-06-20 13:19:29,944] DEBUG:monitoring.client.MonitoringClient:Creating channel to monitoringservice:7070... -[2024-06-20 13:19:29,945] DEBUG:monitoring.client.MonitoringClient:Channel created -[2024-06-20 13:19:29,945] DEBUG:device.service.DeviceServiceServicerImpl:Creating Servicer... -[2024-06-20 13:19:29,945] DEBUG:device.service.DeviceServiceServicerImpl:Servicer Created -[2024-06-20 13:19:29,945] DEBUG:device.service.OpenConfigServicer:Creating Servicer... -[2024-06-20 13:19:29,945] DEBUG:device.service.OpenConfigServicer:Servicer Created -[2024-06-20 13:19:29,945] INFO:device.service.DeviceService:Starting Service (tentative endpoint: 0.0.0.0:2020, max_workers: 200)... -[2024-06-20 13:19:29,980] INFO:device.service.DeviceService:Listening on 0.0.0.0:2020... -[2024-06-20 13:19:29,984] DEBUG:device.service.DeviceService:Service started -[2024-06-20 13:19:29,984] INFO:__main__:Pre-loading drivers... -[2024-06-20 13:19:29,984] DEBUG:context.client.ContextClient:Creating channel to 10.152.183.195:1010... -[2024-06-20 13:19:29,985] DEBUG:context.client.ContextClient:Channel created -[2024-06-20 13:19:29,985] DEBUG:context.client.ContextClient:ListDevices request: {} -[2024-06-20 13:19:38,045] INFO:common.tools.client.RetryDecorator:Retry 1/15 after 5.000000 seconds... -[2024-06-20 13:19:38,046] DEBUG:context.client.ContextClient:ListDevices request: {} -[2024-06-20 13:19:46,061] INFO:common.tools.client.RetryDecorator:Retry 2/15 after 5.000000 seconds... -[2024-06-20 13:19:46,061] DEBUG:context.client.ContextClient:ListDevices request: {} -[2024-06-20 13:19:46,606] DEBUG:context.client.ContextClient:ListDevices result: {"devices": []} -[2024-06-20 13:23:47,342] DEBUG:device.service.DeviceServiceServicerImpl:AddDevice request: {"components": [], "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.41"}}, {"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": [], "device_id": {"device_uuid": {"uuid": "T1.1"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_DISABLED", "device_type": "optical-transponder", "name": ""} -[2024-06-20 13:23:47,343] DEBUG:context.client.ContextClient:Creating channel to 10.152.183.195:1010... -[2024-06-20 13:23:47,343] DEBUG:context.client.ContextClient:Channel created -[2024-06-20 13:23:47,344] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "T1.1"}}]}, "include_components": true, "include_config_rules": true, "include_endpoints": true} -[2024-06-20 13:23:47,358] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": []} -[2024-06-20 13:23:47,359] DEBUG:context.client.ContextClient:SetDevice request: {"components": [], "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.41"}}, {"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": [], "device_id": {"device_uuid": {"uuid": "T1.1"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_UNDEFINED", "device_type": "optical-transponder", "name": ""} -[2024-06-20 13:23:47,454] DEBUG:context.client.ContextClient:SetDevice result: {"device_uuid": {"uuid": "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7"}} -[2024-06-20 13:23:47,454] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7"}}]}, "include_components": true, "include_config_rules": true, "include_endpoints": true} -[2024-06-20 13:23:47,492] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": [{"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.41"}}, {"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": [], "device_id": {"device_uuid": {"uuid": "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_UNDEFINED", "device_type": "optical-transponder", "name": "T1.1"}]} -[2024-06-20 13:23:47,493] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(4dbdc2d8-cbde-5e48-a3c0-5161387a58c7) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-06-20 13:23:47,493] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(4dbdc2d8-cbde-5e48-a3c0-5161387a58c7) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-06-20 13:23:47,500] DEBUG:tzlocal:/etc/timezone found, contents: - Etc/UTC - -[2024-06-20 13:23:47,500] DEBUG:tzlocal:/etc/localtime found -[2024-06-20 13:23:47,502] DEBUG:tzlocal:2 found: - {'/etc/timezone': 'Etc/UTC', '/etc/localtime is a symlink to': 'Etc/UTC'} -[2024-06-20 13:23:47,518] DEBUG:ncclient.transport.session:[host None session 0x7fa749881490] created: client_capabilities= -[2024-06-20 13:23:47,790] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session 0x7fa749881490] parsing netconf v1.0 -[2024-06-20 13:23:47,790] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session 0x7fa749881490] parsing netconf v1.0 -[2024-06-20 13:23:47,807] INFO:root:settings {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-06-20 13:23:47,808] INFO:ncclient.operations.rpc:[host 172.17.254.41 session-id 32] Requesting 'Get' -[2024-06-20 13:23:47,809] DEBUG:ncclient.operations.rpc:[host 172.17.254.41 session-id 32] Sync request, will wait for timeout=120 -[2024-06-20 13:23:47,965] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:23:47,966] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:23:47,966] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:47,966] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:47,966] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:23:47,966] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:47,966] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:23:47,966] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:23:47,966] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:23:47,966] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:23:47,967] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:23:47,967] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:47,967] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:47,967] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:23:47,967] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:47,967] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:23:47,967] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:23:47,967] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:23:47,967] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:23:47,967] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:23:47,968] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:47,968] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:47,968] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:23:47,968] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:47,968] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:23:47,968] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:23:47,968] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:23:47,968] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:23:47,968] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:23:47,969] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:47,969] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:47,969] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:23:47,969] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:47,969] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: appending 16376 bytes -[2024-06-20 13:23:47,969] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: fragment = " -falsefalsetruefalsefalsefalseeth0eth0truefalsetrue00
192.168.1.1192.168.1.124
DISABLEfalsetruefalse
falsefalsetrue1false
truechannel-1channel-1channel-1oc-opt-types:OPTICAL_CHANNEL1920562501.08transceiver-11920562501.08transceiver-110.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-2channel-2channel-2oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-21916000000.00transceiver-210.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-3channel-3channel-3oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-31916000000.00transceiver-310.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-4channel-4channel-4oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-41916000000.00transceiver-410.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00devicedeviceMellanoxSwitchoc-platform-types:OPERATING_SYSTEMSSSA-CNIT1.0.01.0.01.0.0610610port-1port-1port-1oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index1onos-index1channel-1channel-1channel-1port-2port-2port-2oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index2onos-index2channel-2channel-2channel-2port-3port-3port-3oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index3onos-index3channel-3channel-3channel-3port-4port-4port-4oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index4onos-index4channel-4channel-4channel-4transceiver-1transceiver-1transceiver-1oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-1transceiver-2transceiver-2transceiver-2oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-2transceiver-3transceiver-3transceiver-3oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHEREN" -[2024-06-20 13:23:47,969] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:23:47,969] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:23:47,987] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:23:47,987] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:23:47,987] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:47,987] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:47,988] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:23:47,988] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:47,988] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:23:47,988] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:23:47,988] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:23:47,988] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:23:47,988] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:23:47,988] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:47,988] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:47,988] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:23:47,988] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:47,989] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:23:47,989] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:23:47,989] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:23:47,989] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:23:47,989] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:23:47,989] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:47,989] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:47,989] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:23:47,989] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:47,989] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:23:47,990] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:23:47,990] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:23:47,990] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:23:47,990] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:23:47,990] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:47,990] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:47,990] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:23:47,990] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:47,990] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: appending 16376 bytes -[2024-06-20 13:23:47,990] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: fragment = "T_OPTICCisco400zr-QSFP-DD01156732111channel-3transceiver-4transceiver-4transceiver-4oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-4falsefalsetruefalsefalsefalse192.168.1.1192.168.1.188true65432179truefalseNONEfalse30903030falsefalsefalsetruefalsefalse0falsefalsefalsefalseREJECT_ROUTEREJECT_ROUTERFC2328_COMPATIBLE11Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONE1Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-1transceiver-111Optical channel assigned 100OPTICAL_CHANNELchannel-1100.01Optical channel assigned 100OPTICAL_CHANNELchannel-1100.022Logical channel 2DISABLEDoc-opt-types:PROT_OTNNONE2Logical channel 2DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-2transceiver-211Optical channel assigned 100OPTICAL_CHANNELchannel-2100.01Optical channel assigned 100OPTICAL_CHANNELchannel-2100.033Logical channel 3DISABLEDoc-opt-types:PROT_OTNNONE3Logical channel 3DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-3transceiver-311Optical channel assigned 100OPTICAL_CHANNELchannel-3100.01Optical channel assigned 100OPTICAL_CHANNELchannel-3100.044Logical channel 4DISABLEDoc-opt-types:PROT_OTNNONE4Logical channel 4DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-4transceiver-411Optical channel assigned 100OPTICAL_CHANNELchannel-4100.01Optical channel assigned 100OPTICAL_CHANNELchannel-4100.011FEC1Ericsson22FEC2Ericssonadmin9000100$1$MAUsMGRB$0QVLq8d0AZKgnyMHQHXGj./var/confd/homes/admin/.ssh/var/confd/homes/adminoper9003103$1$OuxlaJdk$U/2..0bsSRBOdB89X.V/B./var/confd/homes/oper/.ssh/var/confd/homes/operoptical9001101$1$.fTK5rN8$70SU3wMX3Ppun/0gE7wsA0/var/confd/homes/optical/.ssh/var/confd/homes/opticalpacket9002102$1$2Q0WT3GS$kHtMcIEPrKOjv5AIRaIRp./var/confd/homes/packet/.ssh/var/confd/homes/packetprivate9005103$1$kQyh8qdQ$M.AQv0IrSWDrKfW2RHAHj0/var/confd/homes/private/.ssh/var/confd/homes/privatepublic9004100$1$MGwjebs5$q/SznJWMzKIsd1aIb5UN.1/var/confd/homes/public/.ssh/var/confd/homes/public0\h> 15\h# exec0actionautowizardenableexithelpstartup15configure6.4falsestartediana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashianachietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesinetietf-interfaces2014-05-08urn:ietf:params:xml:ns:yang:ietf-interfacesifietf-netconf-acm2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-acmnacmietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringncmietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsncnietf-yang-library2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-libraryyanglibnetconfrestietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesyangnetconf_netmodurn:ietf:params:xml:ns:netmod:notificationnmnetconfopenconfig-alarm-types2018-01-16http://openconfig.net/yang/alarms/typesoc-alarm-typesopenconfig-bfd2022-06-28http://openconfig.net/yang/bfdoc-bfdopenconfig-bgp2022-05-21http://openconfig.net/yang/bgpoc-bgpopenconfig-bgp-types2021-08-06http://openconfig.net/yang/bgp-typesoc-bgp-typesopenconfig-evpn-types2021-06-21http://openconfig.net/yang/evpn-typesoc-evpn-typesopenconfig-if-ethernet2022-04-20http://openconfig.net/yang/interfaces/ethernetoc-ethopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipoc-ipopenconfig-inet-types2021-08-17http://openconfig.net/yang/types/inetoc-inetopenconfig-interfaces2021-04-06http://openconfig.net/yang/interfacesoc-ifopenconfig-lldp2018-11-21http://openconfig.net/yang/lldpoc-lldpopenconfig-lldp-types2018-11-21http://openconfig.net/yang/lldp/typesoc-lldp-typesopenconfig-mpls-types2021-12-01http://openconfig.net/yang/mpls-typesoc-mplstopenconfig-network-instance-types2021-07-14http://openconfig.net/yang/network-instance-typesoc-ni-typesopenconfig-ospf-types2018-11-21http://openconfig.net/yang/ospf-typesoc-ospf-typesNETCONFdefault NETCONF event streamfalsemellanoxNotifications regarding the transpondertrue2024-06-06T22:51:35.958749+00:00truepermitpermitpermittrue000adminadminprivateoperoperpublicoptopticalpckpacketany-group*get*/readpermittailf-aaa-authenticationtailf-aaa/aaa/authentication/users/user[name='$USER']read updatepermittailf-aaa-usertailf-aaa/user[name='$USER']create read update deletepermittailf-webui-usertailf-webui/webui/data-stores/user-profile[username='$USER']create read update deletepermitpacketpckvlanvlan/switched-vlanscreate read update deletepermitterminal-device*/terminal-devicecreate update deletedenycomponents*/componentscreate update deletedenyopticaloptterminal-device*/terminal-devicecreate read update deletepermitcomponents*/componentscreate read update deletepermitvlanvlan/switched-vlanscreate update deletedenyadminadminany-accesspermiturn:ietf:params:netconf:base:1.0urn:ietf:params:netconf:base:1.1urn:ietf:params:netconf:capability:writable-running:1.0urn:ietf:params:netconf:capability:xpath:1.0urn:ietf:params:netconf:capability:validate:1.0urn:ietf:params:netconf:capability:validate:1.1urn:ietf:params:netconf:capability:rollback-on-error:1.0urn:ietf:params:netconf:capability:notification:1.0urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all-taggedurn:ietf:params:netconf:capability:yang-library:1.0?revision=2016-06-21&module-set-id=f1285a0c7bf3c6c159ca5c87b160ec60http://tail-f.com/ns/netconf/extensionshttp://openconfig.net/yang/alarms/types?module=openconfig-alarm-types&revision=2018-01-16http://openconfig.net/yang/bfd?module=openconfig-bfd&revision=2022-06-28http://openconfig.net/yang/bgp?module=openconfig-bgp&revision=2022-05-21http://openconfig.net/yang/bgp-types?module=openconfig-bgp-types&revision=2021-08-06http://openconfig.net/yang/evpn-types?module=openconfig-evpn-types&revision=2021-06-21http://openconfig.net/yang/interfaces?module=openconfig-interfaces&revision=2021-04-06http://openconfig.net/yang/interfaces/ethernet?module=openconfig-if-ethernet&revision=2022-04-20http://openconfig.net/yang/interfaces/ip?module=openconfig-if-ip&revision=2019-01-08http://openconfig.net/yang/lldp?module=openconfig-lldp&revision=2018-11-21http://openconfig.net/yang/lldp/types?module=openconfig-lldp-types&revision=2018-11-21http://openconfig.net/yang/mpls-types?module=openconfig-mpls-types&revision=2021-12-01http://openconfig.net/yang/network-instance-types?module=openconfig-network-instance-types&revision=2021-07-14http://openconfig.net/yang/openconfig-types?module=openconfig-types&revision=2019-04-16http://openconfig.net/yang/ospf-types?module=openconfig-ospf-types&revision=2018-11-21http://openconfig.net/yang/ospfv2?module=openconfig-ospfv2&revision=2022-02-10http://openconfig.net/yang/platform?module=openconfig-platform&revision=2018-01-30http://openconfig.net/yang/platform-types?module=openconfig-platform-types&revision=2021-01-18http://openconfig.net/yang/platform/port?module=openconfig-platform-port&revision=2021-04-22http://openconfig.net/yang/platform/transceiver?module=openconfig-platform-transceiver&revision=2021-02-23http://openconfig.net/yang/policy-types?module=openconfig-policy-types&revision=2022-11-08http://openconfig.net/yang/protocols?module=openconfig-protocolshttp://openconfig.net/yang/rib/bgp?module=openconfig-rib-bgp&revision=2022-06-06http://openconfig.net/yang/rib/bgp-types?module=openconfig-rib-bgp-types&revision=2019-03-14http://openconfig.net/yang/routing-policy?module=openconfig-routing-policy&revision=2022-05-24http://openconfig.net/yang/segment-routing-types?module=openconfig-segment-routing-types&revision=2020-02-04http://openconfig.net/yang/telemetry?module=openconfig-telemetry&revision=2018-11-21http://openconfig.net/yang/telemetry-types?module=openconfig-telemetry-types&revision=2018-11-21http://openconfig.net/yang/terminal-device?module=openconfig-terminal-device&revision=2021-02-23http://openconfig.net/yang/transport-types?module=openconfig-transport-types&revision=2021-03-22http://openconfig.net/yang/types/inet?module=openconfig-inet-types&revision=2021-08-17http://openconfig.net/yang/types/yang?module=openconfig-yang-types&revision=2021-07-14http://sssup.it/yang/vlan?module=vlanhttp://tail-f.com/ns/aaa/1.1?module=tailf-aaa&revision=2015-06-16http://tail-f.com/ns/kicker?module=tailf-kicker&revision=2017-03-16http://tail-f.com/yang/acm?module=tailf-acm&revision=2013-03-07http://tail-f.com/yang/common-monitoring?module=tailf-common-monitoring&revision=2013-06-14http://tail-f.com/yang/confd-monitoring?module=tailf-confd-monitoring&revision=2013-06-14http://tail-f.com/yang/netconf-monitoring?module=tailf-netconf-monitoring&revision=2016-11-24urn:ietf:params:xml:ns:yang:iana-crypt-hash?module=iana-crypt-hash&revision=2014-08-06&features=crypt-hash-sha-512,crypt-hash-sha-256,crypt-hash-md5urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&revision=2013-07-15urn:ietf:params:xml:ns:yang:ietf-interfaces?module=ietf-interfaces&revision=2014-05-08&features=pre-provisioning,if-mib,arbitrary-namesurn:ietf:params:xml:ns:yang:ietf-netconf-acm?module=ietf-netconf-acm&revision=2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&revision=2010-10-04urn:ietf:params:xml:ns:yang:ietf-" -[2024-06-20 13:23:48,036] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:23:48,036] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:23:48,055] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:23:48,055] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:23:48,055] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:48,055] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:48,056] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:23:48,056] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:48,056] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:23:48,056] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:23:48,056] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:23:48,056] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:23:48,057] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:23:48,057] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:48,057] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:48,057] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:23:48,057] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:48,057] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:23:48,058] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:23:48,058] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:23:48,058] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:23:48,058] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:23:48,058] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:48,058] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:48,058] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:23:48,058] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:48,059] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:23:48,059] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:23:48,059] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:23:48,059] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:23:48,059] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:23:48,059] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:48,059] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:48,059] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:23:48,059] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:48,060] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: appending 16376 bytes -[2024-06-20 13:23:48,060] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: fragment = "netconf-notifications?module=ietf-netconf-notifications&revision=2012-02-06urn:ietf:params:xml:ns:yang:ietf-yang-library?module=ietf-yang-library&revision=2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&revision=2013-07-15urn:ietf:params:xml:ns:netconf:base:1.0?module=ietf-netconf&revision=2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?module=ietf-netconf-with-defaults&revision=2011-06-01running1717-750544-743311iana-crypt-hash2014-08-06yangurn:ietf:params:xml:ns:yang:iana-crypt-hashNETCONFietf-inet-types2013-07-15yangurn:ietf:params:xml:ns:yang:ietf-inet-typesNETCONFietf-interfaces2014-05-08yangurn:ietf:params:xml:ns:yang:ietf-interfacesNETCONFietf-netconf2011-06-01yangurn:ietf:params:xml:ns:netconf:base:1.0NETCONFietf-netconf-acm2012-02-22yangurn:ietf:params:xml:ns:yang:ietf-netconf-acmNETCONFietf-netconf-monitoring2010-10-04yangurn:ietf:params:xml:ns:yang:ietf-netconf-monitoringNETCONFietf-netconf-notifications2012-02-06yangurn:ietf:params:xml:ns:yang:ietf-netconf-notificationsNETCONFietf-netconf-with-defaults2011-06-01yangurn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsNETCONFietf-yang-library2016-06-21yangurn:ietf:params:xml:ns:yang:ietf-yang-libraryNETCONFietf-yang-types2013-07-15yangurn:ietf:params:xml:ns:yang:ietf-yang-typesNETCONFopenconfig-alarm-types2018-01-16yanghttp://openconfig.net/yang/alarms/typesNETCONFopenconfig-bfd2022-06-28yanghttp://openconfig.net/yang/bfdNETCONFopenconfig-bgp2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common-multiprotocol2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common-structure2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-errors2021-08-06yanghttp://openconfig.net/yang/bgp-typesNETCONFopenconfig-bgp-global2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-neighbor2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-peer-group2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-types2021-08-06yanghttp://openconfig.net/yang/bgp-typesNETCONFopenconfig-evpn-types2021-06-21yanghttp://openconfig.net/yang/evpn-typesNETCONFopenconfig-if-ethernet2022-04-20yanghttp://openconfig.net/yang/interfaces/ethernetNETCONFopenconfig-if-ip2019-01-08yanghttp://openconfig.net/yang/interfaces/ipNETCONFopenconfig-inet-types2021-08-17yanghttp://openconfig.net/yang/types/inetNETCONFopenconfig-interfaces2021-04-06yanghttp://openconfig.net/yang/interfacesNETCONFopenconfig-lldp2018-11-21yanghttp://openconfig.net/yang/lldpNETCONFopenconfig-lldp-types2018-11-21yanghttp://openconfig.net/yang/lldp/typesNETCONFopenconfig-mpls-types2021-12-01yanghttp://openconfig.net/yang/mpls-typesNETCONFopenconfig-network-instance-types2021-07-14yanghttp://openconfig.net/yang/network-instance-typesNETCONFopenconfig-ospf-types2018-11-21yanghttp://openconfig.net/yang/ospf-typesNETCONFopenconfig-ospfv22022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-area2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-area-interface2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-common2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-global2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-lsdb2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-platform2018-01-30yanghttp://openconfig.net/yang/platformNETCONFopenconfig-platform-port2021-04-22yanghttp://openconfig.net/yang/platform/portNETCONFopenconfig-platform-transceiver2021-02-23yanghttp://openconfig.net/yang/platform/transceiverNETCONFopenconfig-platform-types2021-01-18yanghttp://openconfig.net/yang/platform-typesNETCONFopenconfig-policy-types2022-11-08yanghttp://openconfig.net/yang/policy-typesNETCONFopenconfig-protocolsyanghttp://openconfig.net/yang/protocolsNETCONFopenconfig-rib-bgp2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-shared-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-table-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-tables2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-types2019-03-14yanghttp://openconfig.net/yang/rib/bgp-typesNETCONFopenconfig-routing-policy2022-05-24yanghttp://openconfig.net/yang/routing-policyNETCONFopenconfig-segment-routing-types2020-02-04yanghttp://openconfig.net/yang/segment-routing-typesNETCONFopenconfig-telemetry2018-11-21yanghttp://openconfig.net/yang/telemetryNETCONFopenconfig-telemetry-types2018-11-21yanghttp://openconfig.net/yang/telemetry-typesNETCONFopenconfig-terminal-device2021-02-23yanghttp://openconfig.net/yang/terminal-deviceNETCONFopenconfig-transport-types2021-03-22yanghttp://openconfig.net/yang/transport-typesNETCONFopenconfig-types2019-04-16yanghttp://openconfig.net/yang/openconfig-typesNETCONFopenconfig-yang-types2021-07-14yanghttp://openconfig.net/yang/types/yangNETCONFtailf-aaa2015-06-16yanghttp://tail-f.com/ns/aaa/1.1NETCONFtailf-acm2013-03-07yanghttp://tail-f.com/yang/acmNETCONFtailf-common-monitoring2013-06-14yanghttp://tail-f.com/yang/common-monitoringNETCONFtailf-confd-monitoring2013-06-14yanghttp://tail-f.com/yang/confd-monitoringNETCONFtailf-kicker2017-03-16yanghttp://tail-f.com/ns/kickerNETCONFtailf-netconf-monitoring2016-11-24yanghttp://tail-f.com/yang/netconf-monitoringNETCONFvlanyanghttp://sssup.it/yang/vlanNETCONF29netconf-sshadmin10.30.2.2062024-06-06T23:11:11+00:00400030netconf-sshadmin10.30.2.2062024-06-06T23:11:20+00:00200031netconf-sshadmin10.30.2.2062024-06-06T23:11:29+00:00200032netconf-sshadmin10.30.2.2082024-06-20T13:23:47+00:0010002024-06-06T22:51:35+00:000409000NETCONFdefault NETCONF event streamfalsemellanoxNotifications regarding the transpondertrue2024-06-06T22:51:35.958749+00:00f1285a0c7bf3c6c159ca5c87b160ec60iana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashcrypt-hash-sha-512crypt-hash-sha-256crypt-hash-md5importietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesimportietf-interfaces -[2024-06-20 13:23:48,069] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: saving back rest of message after 10226 bytes, original size 10226 -[2024-06-20 13:23:48,069] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:23:48,078] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,079] INFO:root:dic {'frequency': '192056250'} -[2024-06-20 13:23:48,079] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,080] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0'} -[2024-06-20 13:23:48,081] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,082] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8'} -[2024-06-20 13:23:48,082] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,083] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1'} -[2024-06-20 13:23:48,083] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,085] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:23:48,085] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,086] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:23:48,086] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,088] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:23:48,088] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,089] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-06-20 13:23:48,089] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,090] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:23:48,091] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,092] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:23:48,092] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,093] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:23:48,094] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,095] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-06-20 13:23:48,095] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,096] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:23:48,096] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,097] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:23:48,098] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,099] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:23:48,099] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,100] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-06-20 13:23:48,102] INFO:root:parameters {'channels': [{'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1', 'name': {'index': 'channel-1'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2', 'name': {'index': 'channel-2'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3', 'name': {'index': 'channel-3'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4', 'name': {'index': 'channel-4'}}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'ports': [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})]} -[2024-06-20 13:23:48,102] DEBUG:context.client.ContextClient:SetOpticalConfig request: {"config": "{\"channels\": [{\"frequency\": \"192056250\", \"target-output-power\": \"1.0\", \"operational-mode\": \"8\", \"line-port\": \"transceiver-1\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": [\"transceiver-1\", \"transceiver-2\", \"transceiver-3\", \"transceiver-4\"]}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}", "device_id": {"device_uuid": {"uuid": "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7"}}} -[2024-06-20 13:23:48,130] DEBUG:context.client.ContextClient:SetOpticalConfig result: {"opticalconfig_uuid": ""} -[2024-06-20 13:23:48,131] DEBUG:device.service.Tools:results_getconfig = [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-06-20 13:23:48,131] INFO:device.service.Tools:results_getconfig = [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-06-20 13:23:48,131] INFO:ncclient.operations.rpc:[host 172.17.254.41 session-id 32] Requesting 'Get' -[2024-06-20 13:23:48,132] DEBUG:ncclient.operations.rpc:[host 172.17.254.41 session-id 32] Sync request, will wait for timeout=120 -[2024-06-20 13:23:48,211] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:23:48,211] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:23:48,211] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:48,211] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:48,211] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:23:48,212] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:48,212] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:23:48,212] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:23:48,212] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:23:48,212] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:23:48,212] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:23:48,212] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:48,212] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:48,212] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:23:48,213] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:48,213] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:23:48,213] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:23:48,213] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:23:48,213] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:23:48,213] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:23:48,213] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:48,213] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:48,213] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:23:48,213] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:48,214] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:23:48,214] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:23:48,214] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:23:48,214] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:23:48,214] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:23:48,214] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:48,214] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:48,214] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:23:48,214] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:48,214] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: appending 16376 bytes -[2024-06-20 13:23:48,215] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: fragment = " -falsefalsetruefalsefalsefalseeth0eth0truefalsetrue00
192.168.1.1192.168.1.124
DISABLEfalsetruefalse
falsefalsetrue1false
truechannel-1channel-1channel-1oc-opt-types:OPTICAL_CHANNEL1920562501.08transceiver-11920562501.08transceiver-110.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-2channel-2channel-2oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-21916000000.00transceiver-210.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-3channel-3channel-3oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-31916000000.00transceiver-310.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-4channel-4channel-4oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-41916000000.00transceiver-410.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00devicedeviceMellanoxSwitchoc-platform-types:OPERATING_SYSTEMSSSA-CNIT1.0.01.0.01.0.0610610port-1port-1port-1oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index1onos-index1channel-1channel-1channel-1port-2port-2port-2oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index2onos-index2channel-2channel-2channel-2port-3port-3port-3oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index3onos-index3channel-3channel-3channel-3port-4port-4port-4oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index4onos-index4channel-4channel-4channel-4transceiver-1transceiver-1transceiver-1oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-1transceiver-2transceiver-2transceiver-2oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-2transceiver-3transceiver-3transceiver-3oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHEREN" -[2024-06-20 13:23:48,215] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:23:48,215] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:23:48,235] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:23:48,235] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:23:48,235] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:48,235] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:48,235] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:23:48,235] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:48,235] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:23:48,235] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:23:48,235] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:23:48,236] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:23:48,236] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:23:48,236] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:48,236] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:48,236] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:23:48,236] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:48,236] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:23:48,236] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:23:48,236] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:23:48,237] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:23:48,237] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:23:48,237] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:48,237] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:48,237] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:23:48,237] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:48,237] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:23:48,237] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:23:48,237] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:23:48,238] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:23:48,238] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:23:48,238] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:48,238] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:48,238] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:23:48,238] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:48,238] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: appending 16376 bytes -[2024-06-20 13:23:48,238] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: fragment = "T_OPTICCisco400zr-QSFP-DD01156732111channel-3transceiver-4transceiver-4transceiver-4oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-4falsefalsetruefalsefalsefalse192.168.1.1192.168.1.188true65432179truefalseNONEfalse30903030falsefalsefalsetruefalsefalse0falsefalsefalsefalseREJECT_ROUTEREJECT_ROUTERFC2328_COMPATIBLE11Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONE1Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-1transceiver-111Optical channel assigned 100OPTICAL_CHANNELchannel-1100.01Optical channel assigned 100OPTICAL_CHANNELchannel-1100.022Logical channel 2DISABLEDoc-opt-types:PROT_OTNNONE2Logical channel 2DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-2transceiver-211Optical channel assigned 100OPTICAL_CHANNELchannel-2100.01Optical channel assigned 100OPTICAL_CHANNELchannel-2100.033Logical channel 3DISABLEDoc-opt-types:PROT_OTNNONE3Logical channel 3DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-3transceiver-311Optical channel assigned 100OPTICAL_CHANNELchannel-3100.01Optical channel assigned 100OPTICAL_CHANNELchannel-3100.044Logical channel 4DISABLEDoc-opt-types:PROT_OTNNONE4Logical channel 4DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-4transceiver-411Optical channel assigned 100OPTICAL_CHANNELchannel-4100.01Optical channel assigned 100OPTICAL_CHANNELchannel-4100.011FEC1Ericsson22FEC2Ericssonadmin9000100$1$MAUsMGRB$0QVLq8d0AZKgnyMHQHXGj./var/confd/homes/admin/.ssh/var/confd/homes/adminoper9003103$1$OuxlaJdk$U/2..0bsSRBOdB89X.V/B./var/confd/homes/oper/.ssh/var/confd/homes/operoptical9001101$1$.fTK5rN8$70SU3wMX3Ppun/0gE7wsA0/var/confd/homes/optical/.ssh/var/confd/homes/opticalpacket9002102$1$2Q0WT3GS$kHtMcIEPrKOjv5AIRaIRp./var/confd/homes/packet/.ssh/var/confd/homes/packetprivate9005103$1$kQyh8qdQ$M.AQv0IrSWDrKfW2RHAHj0/var/confd/homes/private/.ssh/var/confd/homes/privatepublic9004100$1$MGwjebs5$q/SznJWMzKIsd1aIb5UN.1/var/confd/homes/public/.ssh/var/confd/homes/public0\h> 15\h# exec0actionautowizardenableexithelpstartup15configure6.4falsestartediana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashianachietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesinetietf-interfaces2014-05-08urn:ietf:params:xml:ns:yang:ietf-interfacesifietf-netconf-acm2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-acmnacmietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringncmietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsncnietf-yang-library2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-libraryyanglibnetconfrestietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesyangnetconf_netmodurn:ietf:params:xml:ns:netmod:notificationnmnetconfopenconfig-alarm-types2018-01-16http://openconfig.net/yang/alarms/typesoc-alarm-typesopenconfig-bfd2022-06-28http://openconfig.net/yang/bfdoc-bfdopenconfig-bgp2022-05-21http://openconfig.net/yang/bgpoc-bgpopenconfig-bgp-types2021-08-06http://openconfig.net/yang/bgp-typesoc-bgp-typesopenconfig-evpn-types2021-06-21http://openconfig.net/yang/evpn-typesoc-evpn-typesopenconfig-if-ethernet2022-04-20http://openconfig.net/yang/interfaces/ethernetoc-ethopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipoc-ipopenconfig-inet-types2021-08-17http://openconfig.net/yang/types/inetoc-inetopenconfig-interfaces2021-04-06http://openconfig.net/yang/interfacesoc-ifopenconfig-lldp2018-11-21http://openconfig.net/yang/lldpoc-lldpopenconfig-lldp-types2018-11-21http://openconfig.net/yang/lldp/typesoc-lldp-typesopenconfig-mpls-types2021-12-01http://openconfig.net/yang/mpls-typesoc-mplstopenconfig-network-instance-types2021-07-14http://openconfig.net/yang/network-instance-typesoc-ni-typesopenconfig-ospf-types2018-11-21http://openconfig.net/yang/ospf-typesoc-ospf-typesNETCONFdefault NETCONF event streamfalsemellanoxNotifications regarding the transpondertrue2024-06-06T22:51:35.958749+00:00truepermitpermitpermittrue000adminadminprivateoperoperpublicoptopticalpckpacketany-group*get*/readpermittailf-aaa-authenticationtailf-aaa/aaa/authentication/users/user[name='$USER']read updatepermittailf-aaa-usertailf-aaa/user[name='$USER']create read update deletepermittailf-webui-usertailf-webui/webui/data-stores/user-profile[username='$USER']create read update deletepermitpacketpckvlanvlan/switched-vlanscreate read update deletepermitterminal-device*/terminal-devicecreate update deletedenycomponents*/componentscreate update deletedenyopticaloptterminal-device*/terminal-devicecreate read update deletepermitcomponents*/componentscreate read update deletepermitvlanvlan/switched-vlanscreate update deletedenyadminadminany-accesspermiturn:ietf:params:netconf:base:1.0urn:ietf:params:netconf:base:1.1urn:ietf:params:netconf:capability:writable-running:1.0urn:ietf:params:netconf:capability:xpath:1.0urn:ietf:params:netconf:capability:validate:1.0urn:ietf:params:netconf:capability:validate:1.1urn:ietf:params:netconf:capability:rollback-on-error:1.0urn:ietf:params:netconf:capability:notification:1.0urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all-taggedurn:ietf:params:netconf:capability:yang-library:1.0?revision=2016-06-21&module-set-id=f1285a0c7bf3c6c159ca5c87b160ec60http://tail-f.com/ns/netconf/extensionshttp://openconfig.net/yang/alarms/types?module=openconfig-alarm-types&revision=2018-01-16http://openconfig.net/yang/bfd?module=openconfig-bfd&revision=2022-06-28http://openconfig.net/yang/bgp?module=openconfig-bgp&revision=2022-05-21http://openconfig.net/yang/bgp-types?module=openconfig-bgp-types&revision=2021-08-06http://openconfig.net/yang/evpn-types?module=openconfig-evpn-types&revision=2021-06-21http://openconfig.net/yang/interfaces?module=openconfig-interfaces&revision=2021-04-06http://openconfig.net/yang/interfaces/ethernet?module=openconfig-if-ethernet&revision=2022-04-20http://openconfig.net/yang/interfaces/ip?module=openconfig-if-ip&revision=2019-01-08http://openconfig.net/yang/lldp?module=openconfig-lldp&revision=2018-11-21http://openconfig.net/yang/lldp/types?module=openconfig-lldp-types&revision=2018-11-21http://openconfig.net/yang/mpls-types?module=openconfig-mpls-types&revision=2021-12-01http://openconfig.net/yang/network-instance-types?module=openconfig-network-instance-types&revision=2021-07-14http://openconfig.net/yang/openconfig-types?module=openconfig-types&revision=2019-04-16http://openconfig.net/yang/ospf-types?module=openconfig-ospf-types&revision=2018-11-21http://openconfig.net/yang/ospfv2?module=openconfig-ospfv2&revision=2022-02-10http://openconfig.net/yang/platform?module=openconfig-platform&revision=2018-01-30http://openconfig.net/yang/platform-types?module=openconfig-platform-types&revision=2021-01-18http://openconfig.net/yang/platform/port?module=openconfig-platform-port&revision=2021-04-22http://openconfig.net/yang/platform/transceiver?module=openconfig-platform-transceiver&revision=2021-02-23http://openconfig.net/yang/policy-types?module=openconfig-policy-types&revision=2022-11-08http://openconfig.net/yang/protocols?module=openconfig-protocolshttp://openconfig.net/yang/rib/bgp?module=openconfig-rib-bgp&revision=2022-06-06http://openconfig.net/yang/rib/bgp-types?module=openconfig-rib-bgp-types&revision=2019-03-14http://openconfig.net/yang/routing-policy?module=openconfig-routing-policy&revision=2022-05-24http://openconfig.net/yang/segment-routing-types?module=openconfig-segment-routing-types&revision=2020-02-04http://openconfig.net/yang/telemetry?module=openconfig-telemetry&revision=2018-11-21http://openconfig.net/yang/telemetry-types?module=openconfig-telemetry-types&revision=2018-11-21http://openconfig.net/yang/terminal-device?module=openconfig-terminal-device&revision=2021-02-23http://openconfig.net/yang/transport-types?module=openconfig-transport-types&revision=2021-03-22http://openconfig.net/yang/types/inet?module=openconfig-inet-types&revision=2021-08-17http://openconfig.net/yang/types/yang?module=openconfig-yang-types&revision=2021-07-14http://sssup.it/yang/vlan?module=vlanhttp://tail-f.com/ns/aaa/1.1?module=tailf-aaa&revision=2015-06-16http://tail-f.com/ns/kicker?module=tailf-kicker&revision=2017-03-16http://tail-f.com/yang/acm?module=tailf-acm&revision=2013-03-07http://tail-f.com/yang/common-monitoring?module=tailf-common-monitoring&revision=2013-06-14http://tail-f.com/yang/confd-monitoring?module=tailf-confd-monitoring&revision=2013-06-14http://tail-f.com/yang/netconf-monitoring?module=tailf-netconf-monitoring&revision=2016-11-24urn:ietf:params:xml:ns:yang:iana-crypt-hash?module=iana-crypt-hash&revision=2014-08-06&features=crypt-hash-sha-512,crypt-hash-sha-256,crypt-hash-md5urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&revision=2013-07-15urn:ietf:params:xml:ns:yang:ietf-interfaces?module=ietf-interfaces&revision=2014-05-08&features=pre-provisioning,if-mib,arbitrary-namesurn:ietf:params:xml:ns:yang:ietf-netconf-acm?module=ietf-netconf-acm&revision=2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&revision=2010-10-04urn:ietf:params:xml:ns:yang:ietf-" -[2024-06-20 13:23:48,255] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:23:48,255] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:23:48,274] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:23:48,274] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:23:48,274] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:48,274] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:48,274] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:23:48,275] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:48,275] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:23:48,275] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:23:48,275] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:23:48,275] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:23:48,275] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:23:48,275] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:48,275] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:48,275] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:23:48,275] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:48,276] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:23:48,276] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:23:48,276] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:23:48,276] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:23:48,276] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:23:48,276] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:48,276] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:48,276] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:23:48,276] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:48,277] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:23:48,277] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:23:48,277] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:23:48,277] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:23:48,277] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:23:48,277] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:48,277] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:48,277] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:23:48,278] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:48,278] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: appending 16376 bytes -[2024-06-20 13:23:48,278] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: fragment = "netconf-notifications?module=ietf-netconf-notifications&revision=2012-02-06urn:ietf:params:xml:ns:yang:ietf-yang-library?module=ietf-yang-library&revision=2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&revision=2013-07-15urn:ietf:params:xml:ns:netconf:base:1.0?module=ietf-netconf&revision=2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?module=ietf-netconf-with-defaults&revision=2011-06-01running1717-750544-743311iana-crypt-hash2014-08-06yangurn:ietf:params:xml:ns:yang:iana-crypt-hashNETCONFietf-inet-types2013-07-15yangurn:ietf:params:xml:ns:yang:ietf-inet-typesNETCONFietf-interfaces2014-05-08yangurn:ietf:params:xml:ns:yang:ietf-interfacesNETCONFietf-netconf2011-06-01yangurn:ietf:params:xml:ns:netconf:base:1.0NETCONFietf-netconf-acm2012-02-22yangurn:ietf:params:xml:ns:yang:ietf-netconf-acmNETCONFietf-netconf-monitoring2010-10-04yangurn:ietf:params:xml:ns:yang:ietf-netconf-monitoringNETCONFietf-netconf-notifications2012-02-06yangurn:ietf:params:xml:ns:yang:ietf-netconf-notificationsNETCONFietf-netconf-with-defaults2011-06-01yangurn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsNETCONFietf-yang-library2016-06-21yangurn:ietf:params:xml:ns:yang:ietf-yang-libraryNETCONFietf-yang-types2013-07-15yangurn:ietf:params:xml:ns:yang:ietf-yang-typesNETCONFopenconfig-alarm-types2018-01-16yanghttp://openconfig.net/yang/alarms/typesNETCONFopenconfig-bfd2022-06-28yanghttp://openconfig.net/yang/bfdNETCONFopenconfig-bgp2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common-multiprotocol2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common-structure2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-errors2021-08-06yanghttp://openconfig.net/yang/bgp-typesNETCONFopenconfig-bgp-global2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-neighbor2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-peer-group2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-types2021-08-06yanghttp://openconfig.net/yang/bgp-typesNETCONFopenconfig-evpn-types2021-06-21yanghttp://openconfig.net/yang/evpn-typesNETCONFopenconfig-if-ethernet2022-04-20yanghttp://openconfig.net/yang/interfaces/ethernetNETCONFopenconfig-if-ip2019-01-08yanghttp://openconfig.net/yang/interfaces/ipNETCONFopenconfig-inet-types2021-08-17yanghttp://openconfig.net/yang/types/inetNETCONFopenconfig-interfaces2021-04-06yanghttp://openconfig.net/yang/interfacesNETCONFopenconfig-lldp2018-11-21yanghttp://openconfig.net/yang/lldpNETCONFopenconfig-lldp-types2018-11-21yanghttp://openconfig.net/yang/lldp/typesNETCONFopenconfig-mpls-types2021-12-01yanghttp://openconfig.net/yang/mpls-typesNETCONFopenconfig-network-instance-types2021-07-14yanghttp://openconfig.net/yang/network-instance-typesNETCONFopenconfig-ospf-types2018-11-21yanghttp://openconfig.net/yang/ospf-typesNETCONFopenconfig-ospfv22022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-area2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-area-interface2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-common2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-global2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-lsdb2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-platform2018-01-30yanghttp://openconfig.net/yang/platformNETCONFopenconfig-platform-port2021-04-22yanghttp://openconfig.net/yang/platform/portNETCONFopenconfig-platform-transceiver2021-02-23yanghttp://openconfig.net/yang/platform/transceiverNETCONFopenconfig-platform-types2021-01-18yanghttp://openconfig.net/yang/platform-typesNETCONFopenconfig-policy-types2022-11-08yanghttp://openconfig.net/yang/policy-typesNETCONFopenconfig-protocolsyanghttp://openconfig.net/yang/protocolsNETCONFopenconfig-rib-bgp2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-shared-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-table-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-tables2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-types2019-03-14yanghttp://openconfig.net/yang/rib/bgp-typesNETCONFopenconfig-routing-policy2022-05-24yanghttp://openconfig.net/yang/routing-policyNETCONFopenconfig-segment-routing-types2020-02-04yanghttp://openconfig.net/yang/segment-routing-typesNETCONFopenconfig-telemetry2018-11-21yanghttp://openconfig.net/yang/telemetryNETCONFopenconfig-telemetry-types2018-11-21yanghttp://openconfig.net/yang/telemetry-typesNETCONFopenconfig-terminal-device2021-02-23yanghttp://openconfig.net/yang/terminal-deviceNETCONFopenconfig-transport-types2021-03-22yanghttp://openconfig.net/yang/transport-typesNETCONFopenconfig-types2019-04-16yanghttp://openconfig.net/yang/openconfig-typesNETCONFopenconfig-yang-types2021-07-14yanghttp://openconfig.net/yang/types/yangNETCONFtailf-aaa2015-06-16yanghttp://tail-f.com/ns/aaa/1.1NETCONFtailf-acm2013-03-07yanghttp://tail-f.com/yang/acmNETCONFtailf-common-monitoring2013-06-14yanghttp://tail-f.com/yang/common-monitoringNETCONFtailf-confd-monitoring2013-06-14yanghttp://tail-f.com/yang/confd-monitoringNETCONFtailf-kicker2017-03-16yanghttp://tail-f.com/ns/kickerNETCONFtailf-netconf-monitoring2016-11-24yanghttp://tail-f.com/yang/netconf-monitoringNETCONFvlanyanghttp://sssup.it/yang/vlanNETCONF29netconf-sshadmin10.30.2.2062024-06-06T23:11:11+00:00400030netconf-sshadmin10.30.2.2062024-06-06T23:11:20+00:00200031netconf-sshadmin10.30.2.2062024-06-06T23:11:29+00:00200032netconf-sshadmin10.30.2.2082024-06-20T13:23:47+00:0020002024-06-06T22:51:35+00:0004010000NETCONFdefault NETCONF event streamfalsemellanoxNotifications regarding the transpondertrue2024-06-06T22:51:35.958749+00:00f1285a0c7bf3c6c159ca5c87b160ec60iana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashcrypt-hash-sha-512crypt-hash-sha-256crypt-hash-md5importietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesimportietf-interfaces -[2024-06-20 13:23:48,286] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: saving back rest of message after 10227 bytes, original size 10227 -[2024-06-20 13:23:48,286] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:23:48,293] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,295] INFO:root:dic {'frequency': '192056250'} -[2024-06-20 13:23:48,295] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,297] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0'} -[2024-06-20 13:23:48,297] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,298] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8'} -[2024-06-20 13:23:48,299] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,300] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1'} -[2024-06-20 13:23:48,300] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,302] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:23:48,302] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,303] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:23:48,304] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,305] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:23:48,305] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,307] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-06-20 13:23:48,307] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,308] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:23:48,309] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,310] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:23:48,310] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,312] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:23:48,312] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,313] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-06-20 13:23:48,314] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,315] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:23:48,315] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,316] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:23:48,317] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,318] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:23:48,318] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:48,319] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-06-20 13:23:48,321] INFO:root:parameters {'channels': [{'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1', 'name': {'index': 'channel-1'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2', 'name': {'index': 'channel-2'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3', 'name': {'index': 'channel-3'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4', 'name': {'index': 'channel-4'}}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'ports': [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})]} -[2024-06-20 13:23:48,321] DEBUG:context.client.ContextClient:SetOpticalConfig request: {"config": "{\"channels\": [{\"frequency\": \"192056250\", \"target-output-power\": \"1.0\", \"operational-mode\": \"8\", \"line-port\": \"transceiver-1\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": [\"transceiver-1\", \"transceiver-2\", \"transceiver-3\", \"transceiver-4\"]}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}", "device_id": {"device_uuid": {"uuid": "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7"}}} -[2024-06-20 13:23:48,362] DEBUG:context.client.ContextClient:SetOpticalConfig result: {"opticalconfig_uuid": ""} -[2024-06-20 13:23:48,363] DEBUG:context.client.ContextClient:SetDevice request: {"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.41"}}, {"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}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[1]", "resource_value": "{\"type\": \"port-1\", \"uuid\": \"1\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[2]", "resource_value": "{\"type\": \"port-2\", \"uuid\": \"2\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[3]", "resource_value": "{\"type\": \"port-3\", \"uuid\": \"3\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[4]", "resource_value": "{\"type\": \"port-4\", \"uuid\": \"4\"}"}}]}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7"}}, "endpoint_uuid": {"uuid": "1"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "port-1", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7"}}, "endpoint_uuid": {"uuid": "2"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "port-2", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7"}}, "endpoint_uuid": {"uuid": "3"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "port-3", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7"}}, "endpoint_uuid": {"uuid": "4"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "port-4", "kpi_sample_types": [], "name": ""}], "device_id": {"device_uuid": {"uuid": "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-transponder", "name": "T1.1"} -[2024-06-20 13:23:48,436] DEBUG:context.client.ContextClient:SetDevice result: {"device_uuid": {"uuid": "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7"}} -[2024-06-20 13:23:48,436] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7"}}]}, "include_components": false, "include_config_rules": false, "include_endpoints": true} -[2024-06-20 13:23:48,480] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": [{"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"}]} -[2024-06-20 13:23:48,482] DEBUG:device.service.DeviceServiceServicerImpl:AddDevice reply: {"device_uuid": {"uuid": "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7"}} -[2024-06-20 13:23:53,655] DEBUG:device.service.DeviceServiceServicerImpl:AddDevice request: {"components": [], "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.41"}}, {"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": [], "device_id": {"device_uuid": {"uuid": "T1.2"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_DISABLED", "device_type": "optical-transponder", "name": ""} -[2024-06-20 13:23:53,655] DEBUG:context.client.ContextClient:Creating channel to 10.152.183.195:1010... -[2024-06-20 13:23:53,655] DEBUG:context.client.ContextClient:Channel created -[2024-06-20 13:23:53,656] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "T1.2"}}]}, "include_components": true, "include_config_rules": true, "include_endpoints": true} -[2024-06-20 13:23:53,668] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": []} -[2024-06-20 13:23:53,669] DEBUG:context.client.ContextClient:SetDevice request: {"components": [], "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.41"}}, {"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": [], "device_id": {"device_uuid": {"uuid": "T1.2"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_UNDEFINED", "device_type": "optical-transponder", "name": ""} -[2024-06-20 13:23:53,760] DEBUG:context.client.ContextClient:SetDevice result: {"device_uuid": {"uuid": "27c2ed23-e74a-518f-820d-ae2c8ae23086"}} -[2024-06-20 13:23:53,760] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "27c2ed23-e74a-518f-820d-ae2c8ae23086"}}]}, "include_components": true, "include_config_rules": true, "include_endpoints": true} -[2024-06-20 13:23:53,778] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": [{"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.41"}}, {"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": [], "device_id": {"device_uuid": {"uuid": "27c2ed23-e74a-518f-820d-ae2c8ae23086"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_UNDEFINED", "device_type": "optical-transponder", "name": "T1.2"}]} -[2024-06-20 13:23:53,778] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(27c2ed23-e74a-518f-820d-ae2c8ae23086) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-06-20 13:23:53,779] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(27c2ed23-e74a-518f-820d-ae2c8ae23086) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-06-20 13:23:53,779] DEBUG:ncclient.transport.session:[host None session 0x7fa7486448b0] created: client_capabilities= -[2024-06-20 13:23:53,922] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session 0x7fa7486448b0] parsing netconf v1.0 -[2024-06-20 13:23:53,922] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session 0x7fa7486448b0] parsing netconf v1.0 -[2024-06-20 13:23:53,926] INFO:root:settings {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-06-20 13:23:53,927] INFO:ncclient.operations.rpc:[host 172.17.254.41 session-id 33] Requesting 'Get' -[2024-06-20 13:23:53,927] DEBUG:ncclient.operations.rpc:[host 172.17.254.41 session-id 33] Sync request, will wait for timeout=120 -[2024-06-20 13:23:54,061] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: starting -[2024-06-20 13:23:54,061] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:23:54,062] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:54,062] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:54,062] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:23:54,062] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:54,062] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:23:54,062] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:23:54,063] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: ending -[2024-06-20 13:23:54,063] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: starting -[2024-06-20 13:23:54,063] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:23:54,063] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:54,063] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:54,064] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:23:54,064] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:54,064] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:23:54,064] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:23:54,064] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: ending -[2024-06-20 13:23:54,064] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: starting -[2024-06-20 13:23:54,065] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:23:54,065] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:54,065] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:54,065] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:23:54,065] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:54,065] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:23:54,066] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:23:54,066] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: ending -[2024-06-20 13:23:54,066] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: starting -[2024-06-20 13:23:54,066] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:23:54,066] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:54,066] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:54,067] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:23:54,067] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:54,067] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: appending 16376 bytes -[2024-06-20 13:23:54,067] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: fragment = " -falsefalsetruefalsefalsefalseeth0eth0truefalsetrue00
192.168.1.1192.168.1.124
DISABLEfalsetruefalse
falsefalsetrue1false
truechannel-1channel-1channel-1oc-opt-types:OPTICAL_CHANNEL1920562501.08transceiver-11920562501.08transceiver-110.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-2channel-2channel-2oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-21916000000.00transceiver-210.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-3channel-3channel-3oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-31916000000.00transceiver-310.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-4channel-4channel-4oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-41916000000.00transceiver-410.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00devicedeviceMellanoxSwitchoc-platform-types:OPERATING_SYSTEMSSSA-CNIT1.0.01.0.01.0.0610610port-1port-1port-1oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index1onos-index1channel-1channel-1channel-1port-2port-2port-2oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index2onos-index2channel-2channel-2channel-2port-3port-3port-3oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index3onos-index3channel-3channel-3channel-3port-4port-4port-4oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index4onos-index4channel-4channel-4channel-4transceiver-1transceiver-1transceiver-1oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-1transceiver-2transceiver-2transceiver-2oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-2transceiver-3transceiver-3transceiver-3oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHEREN" -[2024-06-20 13:23:54,067] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:23:54,068] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: ending -[2024-06-20 13:23:54,086] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: starting -[2024-06-20 13:23:54,086] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:23:54,087] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:54,087] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:54,087] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:23:54,087] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:54,087] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:23:54,088] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:23:54,088] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: ending -[2024-06-20 13:23:54,088] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: starting -[2024-06-20 13:23:54,088] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:23:54,088] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:54,089] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:54,089] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:23:54,089] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:54,089] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:23:54,089] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:23:54,090] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: ending -[2024-06-20 13:23:54,090] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: starting -[2024-06-20 13:23:54,090] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:23:54,090] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:54,090] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:54,091] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:23:54,091] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:54,091] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:23:54,091] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:23:54,091] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: ending -[2024-06-20 13:23:54,091] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: starting -[2024-06-20 13:23:54,092] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:23:54,092] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:54,092] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:54,092] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:23:54,092] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:54,092] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: appending 16376 bytes -[2024-06-20 13:23:54,093] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: fragment = "T_OPTICCisco400zr-QSFP-DD01156732111channel-3transceiver-4transceiver-4transceiver-4oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-4falsefalsetruefalsefalsefalse192.168.1.1192.168.1.188true65432179truefalseNONEfalse30903030falsefalsefalsetruefalsefalse0falsefalsefalsefalseREJECT_ROUTEREJECT_ROUTERFC2328_COMPATIBLE11Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONE1Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-1transceiver-111Optical channel assigned 100OPTICAL_CHANNELchannel-1100.01Optical channel assigned 100OPTICAL_CHANNELchannel-1100.022Logical channel 2DISABLEDoc-opt-types:PROT_OTNNONE2Logical channel 2DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-2transceiver-211Optical channel assigned 100OPTICAL_CHANNELchannel-2100.01Optical channel assigned 100OPTICAL_CHANNELchannel-2100.033Logical channel 3DISABLEDoc-opt-types:PROT_OTNNONE3Logical channel 3DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-3transceiver-311Optical channel assigned 100OPTICAL_CHANNELchannel-3100.01Optical channel assigned 100OPTICAL_CHANNELchannel-3100.044Logical channel 4DISABLEDoc-opt-types:PROT_OTNNONE4Logical channel 4DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-4transceiver-411Optical channel assigned 100OPTICAL_CHANNELchannel-4100.01Optical channel assigned 100OPTICAL_CHANNELchannel-4100.011FEC1Ericsson22FEC2Ericssonadmin9000100$1$MAUsMGRB$0QVLq8d0AZKgnyMHQHXGj./var/confd/homes/admin/.ssh/var/confd/homes/adminoper9003103$1$OuxlaJdk$U/2..0bsSRBOdB89X.V/B./var/confd/homes/oper/.ssh/var/confd/homes/operoptical9001101$1$.fTK5rN8$70SU3wMX3Ppun/0gE7wsA0/var/confd/homes/optical/.ssh/var/confd/homes/opticalpacket9002102$1$2Q0WT3GS$kHtMcIEPrKOjv5AIRaIRp./var/confd/homes/packet/.ssh/var/confd/homes/packetprivate9005103$1$kQyh8qdQ$M.AQv0IrSWDrKfW2RHAHj0/var/confd/homes/private/.ssh/var/confd/homes/privatepublic9004100$1$MGwjebs5$q/SznJWMzKIsd1aIb5UN.1/var/confd/homes/public/.ssh/var/confd/homes/public0\h> 15\h# exec0actionautowizardenableexithelpstartup15configure6.4falsestartediana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashianachietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesinetietf-interfaces2014-05-08urn:ietf:params:xml:ns:yang:ietf-interfacesifietf-netconf-acm2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-acmnacmietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringncmietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsncnietf-yang-library2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-libraryyanglibnetconfrestietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesyangnetconf_netmodurn:ietf:params:xml:ns:netmod:notificationnmnetconfopenconfig-alarm-types2018-01-16http://openconfig.net/yang/alarms/typesoc-alarm-typesopenconfig-bfd2022-06-28http://openconfig.net/yang/bfdoc-bfdopenconfig-bgp2022-05-21http://openconfig.net/yang/bgpoc-bgpopenconfig-bgp-types2021-08-06http://openconfig.net/yang/bgp-typesoc-bgp-typesopenconfig-evpn-types2021-06-21http://openconfig.net/yang/evpn-typesoc-evpn-typesopenconfig-if-ethernet2022-04-20http://openconfig.net/yang/interfaces/ethernetoc-ethopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipoc-ipopenconfig-inet-types2021-08-17http://openconfig.net/yang/types/inetoc-inetopenconfig-interfaces2021-04-06http://openconfig.net/yang/interfacesoc-ifopenconfig-lldp2018-11-21http://openconfig.net/yang/lldpoc-lldpopenconfig-lldp-types2018-11-21http://openconfig.net/yang/lldp/typesoc-lldp-typesopenconfig-mpls-types2021-12-01http://openconfig.net/yang/mpls-typesoc-mplstopenconfig-network-instance-types2021-07-14http://openconfig.net/yang/network-instance-typesoc-ni-typesopenconfig-ospf-types2018-11-21http://openconfig.net/yang/ospf-typesoc-ospf-typesNETCONFdefault NETCONF event streamfalsemellanoxNotifications regarding the transpondertrue2024-06-06T22:51:35.958749+00:00truepermitpermitpermittrue000adminadminprivateoperoperpublicoptopticalpckpacketany-group*get*/readpermittailf-aaa-authenticationtailf-aaa/aaa/authentication/users/user[name='$USER']read updatepermittailf-aaa-usertailf-aaa/user[name='$USER']create read update deletepermittailf-webui-usertailf-webui/webui/data-stores/user-profile[username='$USER']create read update deletepermitpacketpckvlanvlan/switched-vlanscreate read update deletepermitterminal-device*/terminal-devicecreate update deletedenycomponents*/componentscreate update deletedenyopticaloptterminal-device*/terminal-devicecreate read update deletepermitcomponents*/componentscreate read update deletepermitvlanvlan/switched-vlanscreate update deletedenyadminadminany-accesspermiturn:ietf:params:netconf:base:1.0urn:ietf:params:netconf:base:1.1urn:ietf:params:netconf:capability:writable-running:1.0urn:ietf:params:netconf:capability:xpath:1.0urn:ietf:params:netconf:capability:validate:1.0urn:ietf:params:netconf:capability:validate:1.1urn:ietf:params:netconf:capability:rollback-on-error:1.0urn:ietf:params:netconf:capability:notification:1.0urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all-taggedurn:ietf:params:netconf:capability:yang-library:1.0?revision=2016-06-21&module-set-id=f1285a0c7bf3c6c159ca5c87b160ec60http://tail-f.com/ns/netconf/extensionshttp://openconfig.net/yang/alarms/types?module=openconfig-alarm-types&revision=2018-01-16http://openconfig.net/yang/bfd?module=openconfig-bfd&revision=2022-06-28http://openconfig.net/yang/bgp?module=openconfig-bgp&revision=2022-05-21http://openconfig.net/yang/bgp-types?module=openconfig-bgp-types&revision=2021-08-06http://openconfig.net/yang/evpn-types?module=openconfig-evpn-types&revision=2021-06-21http://openconfig.net/yang/interfaces?module=openconfig-interfaces&revision=2021-04-06http://openconfig.net/yang/interfaces/ethernet?module=openconfig-if-ethernet&revision=2022-04-20http://openconfig.net/yang/interfaces/ip?module=openconfig-if-ip&revision=2019-01-08http://openconfig.net/yang/lldp?module=openconfig-lldp&revision=2018-11-21http://openconfig.net/yang/lldp/types?module=openconfig-lldp-types&revision=2018-11-21http://openconfig.net/yang/mpls-types?module=openconfig-mpls-types&revision=2021-12-01http://openconfig.net/yang/network-instance-types?module=openconfig-network-instance-types&revision=2021-07-14http://openconfig.net/yang/openconfig-types?module=openconfig-types&revision=2019-04-16http://openconfig.net/yang/ospf-types?module=openconfig-ospf-types&revision=2018-11-21http://openconfig.net/yang/ospfv2?module=openconfig-ospfv2&revision=2022-02-10http://openconfig.net/yang/platform?module=openconfig-platform&revision=2018-01-30http://openconfig.net/yang/platform-types?module=openconfig-platform-types&revision=2021-01-18http://openconfig.net/yang/platform/port?module=openconfig-platform-port&revision=2021-04-22http://openconfig.net/yang/platform/transceiver?module=openconfig-platform-transceiver&revision=2021-02-23http://openconfig.net/yang/policy-types?module=openconfig-policy-types&revision=2022-11-08http://openconfig.net/yang/protocols?module=openconfig-protocolshttp://openconfig.net/yang/rib/bgp?module=openconfig-rib-bgp&revision=2022-06-06http://openconfig.net/yang/rib/bgp-types?module=openconfig-rib-bgp-types&revision=2019-03-14http://openconfig.net/yang/routing-policy?module=openconfig-routing-policy&revision=2022-05-24http://openconfig.net/yang/segment-routing-types?module=openconfig-segment-routing-types&revision=2020-02-04http://openconfig.net/yang/telemetry?module=openconfig-telemetry&revision=2018-11-21http://openconfig.net/yang/telemetry-types?module=openconfig-telemetry-types&revision=2018-11-21http://openconfig.net/yang/terminal-device?module=openconfig-terminal-device&revision=2021-02-23http://openconfig.net/yang/transport-types?module=openconfig-transport-types&revision=2021-03-22http://openconfig.net/yang/types/inet?module=openconfig-inet-types&revision=2021-08-17http://openconfig.net/yang/types/yang?module=openconfig-yang-types&revision=2021-07-14http://sssup.it/yang/vlan?module=vlanhttp://tail-f.com/ns/aaa/1.1?module=tailf-aaa&revision=2015-06-16http://tail-f.com/ns/kicker?module=tailf-kicker&revision=2017-03-16http://tail-f.com/yang/acm?module=tailf-acm&revision=2013-03-07http://tail-f.com/yang/common-monitoring?module=tailf-common-monitoring&revision=2013-06-14http://tail-f.com/yang/confd-monitoring?module=tailf-confd-monitoring&revision=2013-06-14http://tail-f.com/yang/netconf-monitoring?module=tailf-netconf-monitoring&revision=2016-11-24urn:ietf:params:xml:ns:yang:iana-crypt-hash?module=iana-crypt-hash&revision=2014-08-06&features=crypt-hash-sha-512,crypt-hash-sha-256,crypt-hash-md5urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&revision=2013-07-15urn:ietf:params:xml:ns:yang:ietf-interfaces?module=ietf-interfaces&revision=2014-05-08&features=pre-provisioning,if-mib,arbitrary-namesurn:ietf:params:xml:ns:yang:ietf-netconf-acm?module=ietf-netconf-acm&revision=2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&revision=2010-10-04urn:ietf:params:xml:ns:yang:ietf-" -[2024-06-20 13:23:54,122] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:23:54,123] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: ending -[2024-06-20 13:23:54,138] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: starting -[2024-06-20 13:23:54,139] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:23:54,139] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:54,139] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:54,139] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:23:54,139] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:54,140] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:23:54,140] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:23:54,140] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: ending -[2024-06-20 13:23:54,140] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: starting -[2024-06-20 13:23:54,140] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:23:54,140] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:54,141] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:54,141] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:23:54,141] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:54,141] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:23:54,141] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:23:54,141] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: ending -[2024-06-20 13:23:54,142] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: starting -[2024-06-20 13:23:54,142] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:23:54,142] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:54,142] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:54,142] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:23:54,142] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:54,143] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:23:54,143] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:23:54,143] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: ending -[2024-06-20 13:23:54,143] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: starting -[2024-06-20 13:23:54,143] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:23:54,143] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:54,144] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:54,144] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:23:54,144] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:54,144] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: appending 16376 bytes -[2024-06-20 13:23:54,144] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: fragment = "netconf-notifications?module=ietf-netconf-notifications&revision=2012-02-06urn:ietf:params:xml:ns:yang:ietf-yang-library?module=ietf-yang-library&revision=2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&revision=2013-07-15urn:ietf:params:xml:ns:netconf:base:1.0?module=ietf-netconf&revision=2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?module=ietf-netconf-with-defaults&revision=2011-06-01running1717-750544-743311iana-crypt-hash2014-08-06yangurn:ietf:params:xml:ns:yang:iana-crypt-hashNETCONFietf-inet-types2013-07-15yangurn:ietf:params:xml:ns:yang:ietf-inet-typesNETCONFietf-interfaces2014-05-08yangurn:ietf:params:xml:ns:yang:ietf-interfacesNETCONFietf-netconf2011-06-01yangurn:ietf:params:xml:ns:netconf:base:1.0NETCONFietf-netconf-acm2012-02-22yangurn:ietf:params:xml:ns:yang:ietf-netconf-acmNETCONFietf-netconf-monitoring2010-10-04yangurn:ietf:params:xml:ns:yang:ietf-netconf-monitoringNETCONFietf-netconf-notifications2012-02-06yangurn:ietf:params:xml:ns:yang:ietf-netconf-notificationsNETCONFietf-netconf-with-defaults2011-06-01yangurn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsNETCONFietf-yang-library2016-06-21yangurn:ietf:params:xml:ns:yang:ietf-yang-libraryNETCONFietf-yang-types2013-07-15yangurn:ietf:params:xml:ns:yang:ietf-yang-typesNETCONFopenconfig-alarm-types2018-01-16yanghttp://openconfig.net/yang/alarms/typesNETCONFopenconfig-bfd2022-06-28yanghttp://openconfig.net/yang/bfdNETCONFopenconfig-bgp2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common-multiprotocol2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common-structure2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-errors2021-08-06yanghttp://openconfig.net/yang/bgp-typesNETCONFopenconfig-bgp-global2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-neighbor2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-peer-group2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-types2021-08-06yanghttp://openconfig.net/yang/bgp-typesNETCONFopenconfig-evpn-types2021-06-21yanghttp://openconfig.net/yang/evpn-typesNETCONFopenconfig-if-ethernet2022-04-20yanghttp://openconfig.net/yang/interfaces/ethernetNETCONFopenconfig-if-ip2019-01-08yanghttp://openconfig.net/yang/interfaces/ipNETCONFopenconfig-inet-types2021-08-17yanghttp://openconfig.net/yang/types/inetNETCONFopenconfig-interfaces2021-04-06yanghttp://openconfig.net/yang/interfacesNETCONFopenconfig-lldp2018-11-21yanghttp://openconfig.net/yang/lldpNETCONFopenconfig-lldp-types2018-11-21yanghttp://openconfig.net/yang/lldp/typesNETCONFopenconfig-mpls-types2021-12-01yanghttp://openconfig.net/yang/mpls-typesNETCONFopenconfig-network-instance-types2021-07-14yanghttp://openconfig.net/yang/network-instance-typesNETCONFopenconfig-ospf-types2018-11-21yanghttp://openconfig.net/yang/ospf-typesNETCONFopenconfig-ospfv22022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-area2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-area-interface2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-common2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-global2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-lsdb2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-platform2018-01-30yanghttp://openconfig.net/yang/platformNETCONFopenconfig-platform-port2021-04-22yanghttp://openconfig.net/yang/platform/portNETCONFopenconfig-platform-transceiver2021-02-23yanghttp://openconfig.net/yang/platform/transceiverNETCONFopenconfig-platform-types2021-01-18yanghttp://openconfig.net/yang/platform-typesNETCONFopenconfig-policy-types2022-11-08yanghttp://openconfig.net/yang/policy-typesNETCONFopenconfig-protocolsyanghttp://openconfig.net/yang/protocolsNETCONFopenconfig-rib-bgp2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-shared-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-table-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-tables2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-types2019-03-14yanghttp://openconfig.net/yang/rib/bgp-typesNETCONFopenconfig-routing-policy2022-05-24yanghttp://openconfig.net/yang/routing-policyNETCONFopenconfig-segment-routing-types2020-02-04yanghttp://openconfig.net/yang/segment-routing-typesNETCONFopenconfig-telemetry2018-11-21yanghttp://openconfig.net/yang/telemetryNETCONFopenconfig-telemetry-types2018-11-21yanghttp://openconfig.net/yang/telemetry-typesNETCONFopenconfig-terminal-device2021-02-23yanghttp://openconfig.net/yang/terminal-deviceNETCONFopenconfig-transport-types2021-03-22yanghttp://openconfig.net/yang/transport-typesNETCONFopenconfig-types2019-04-16yanghttp://openconfig.net/yang/openconfig-typesNETCONFopenconfig-yang-types2021-07-14yanghttp://openconfig.net/yang/types/yangNETCONFtailf-aaa2015-06-16yanghttp://tail-f.com/ns/aaa/1.1NETCONFtailf-acm2013-03-07yanghttp://tail-f.com/yang/acmNETCONFtailf-common-monitoring2013-06-14yanghttp://tail-f.com/yang/common-monitoringNETCONFtailf-confd-monitoring2013-06-14yanghttp://tail-f.com/yang/confd-monitoringNETCONFtailf-kicker2017-03-16yanghttp://tail-f.com/ns/kickerNETCONFtailf-netconf-monitoring2016-11-24yanghttp://tail-f.com/yang/netconf-monitoringNETCONFvlanyanghttp://sssup.it/yang/vlanNETCONF29netconf-sshadmin10.30.2.2062024-06-06T23:11:11+00:00400030netconf-sshadmin10.30.2.2062024-06-06T23:11:20+00:00200031netconf-sshadmin10.30.2.2062024-06-06T23:11:29+00:00200032netconf-sshadmin10.30.2.2082024-06-20T13:23:47+00:00200033netconf-sshadmin10.30.2.2082024-06-20T13:23:53+00:0010002024-06-06T22:51:35+00:0005011000NETCONFdefault NETCONF event streamfalsemellanoxNotifications regarding the transpondertrue2024-06-06T22:51:35.958749+00:00f1285a0c7bf3c6c159ca5c87b160ec60iana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashcrypt-hash-sha-512crypt-hash-sha-256crypt-hash-md5importietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesimportietf-interfaces2014-05-08urn:ietf:params:xml:ns:yang:ietf-interfacespre-provisioningif-mibarbitrary-namesimplementietf-netconf2011-06-01urn:ietf:params:xml:ns:netconf:base:1.0implementietf-netconf-acm2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-acmimplementietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringimplementietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsimplementietf-netconf-with-defaults2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsimplementietf-yang-library2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-libraryimplementietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesimportopenconfig-alarm-types2018-01-16http://openconfig.net/yang/alarms/typesimportopenconfig-bfd2022-06-28http://openconfig.net/yang/bfdimplementopenconfig-bgp2022-05-21http://openconfig.net/yang/bgpimplementopenconfig-bgp-common2022-05-21openconfig-bgp-common-structure2022-05-21openconfig-bgp-global2022-05-21openconfig-bgp-neighbor2022-05-21openconfig-bgp-peer-group2022-05-21openconfig-bgp-common-multiprotocol2022-05-21openconfig-bgp-types2021-08-06http://openconfig.net/yang/bgp-typesimportopenconfig-bgp-errors2021-08-06openconfig-evpn-types2021-06-21http://openconfig.net/yang/evpn-typesimportopenconfig-if-ethernet2022-04-20http://openconfig.net/yang/interfaces/ethernetimplementopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipimplementopenconfig-inet-types2021-08-17http://openconfig.net/yang/types/inetimportopenconfig-interfaces2021-04-06http://openconfig.net/yang/interfacesimplementopenconfig-lldp2018-11-21http://openconfig.net/yang/lldpimplementopenconfig-lldp-types2018-11-21http://openconfig.net/yang/lldp/typesimportopenconfig-mpls-types2021-12-01http://openconfig.net/yang/mpls-typesimportopenconfig-ospf-types2018-11-21http://openconfig.net/yang/ospf-typesimportopenconfig-ospfv22022-02-10http://openconfig.net/yang/ospfv2importopenconfig-ospfv2-area2022-02-10openconfig-ospfv2-common2022-02-10openconfig-ospfv2-global2022-02-10openconfig-ospfv2-lsdb2022-02-10openconfig-ospfv2-area-interface2022-02-10openconfig-platform2018-01-30http://openconfig.net/yang/platformimplementopenconfig-platform-port2021-04-22http://openconfig.net/yang/platform/portimplementopenconfig-platform-transceiver2021-02-23http://openconfig.net/yang/platform/transceiverimplementopenconfig-platform-types2021-01-18http://openconfig.net/yang/platform-typesimportopenconfig-policy-types2022-11-08http://openconfig.net/yang/policy-typesimportopenconfig-protocolshttp://openconfig.net/yang/protocolsimplementopenconfig-rib-bgp2022-06-06http://openconfig.net/yang/rib/bgpimportopenconfig-rib-bgp-attributes2022-06-06openconfig-rib-bgp-tables2022-06-06openconfig-rib-bgp-table-attributes2022-06-06openconfig-rib-bgp-shared-attributes2022-06-06openconfig-rib-bgp-types2019-03-14http://openconfig.net/yang/rib/bgp-typesimportopenconfig-routing-policy2022-05-24http://openconfig.net/yang/routing-policyimplementopenconfig-telemetry2018-11-21http://openconfig.net/yang/telemetryimplementopenconfig-telemetry-types2018-11-21http://openconfig.net/yang/telemetry-typesimportopenconfig-terminal-device2021-02-23http://openconfig.net/yang/terminal-deviceimplementopenconfig-transport-types2021-03-22http://openconfig.net/yang/transport-typesimportopenconfig-types2019-04-16http://openconfig.net/yang/openconfig-typesimportopenconfig-yang-types2021-07-14http://openconfig.net/yang/types/yangimporttailf-aaa2015-06-16http://tail-f.com/ns/aaa/1.1implementtailf-acm2013-03-07http://tail-f.com/yang/acmimplementtailf-common-monitoring2013-06-14http://tail-f.com/yang/common-monitoringimporttailf-confd-monitoring2013-06-14http://tail-f.com/yang/confd-monitoringimplementtailf-kicker2017-03-16http://tail-f.com/ns/kickerimplementtailf-netconf-monitoring2016-11-24http://tail-f.com/yang/netconf-monitoringimplementvlanhttp://sssup.it/yang/vlanimplementopenconfig-segment-routing-types2020-02-04http://openconfig.net/yang/segment-routing-typesimportopenconfig-network-instance-types2021-07-14http://openconfig.net/yang/network-instance-typesimport
" -[2024-06-20 13:23:54,151] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: matching from 10539 bytes from start of buffer -[2024-06-20 13:23:54,151] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: regular expression start=0, end=4 -[2024-06-20 13:23:54,151] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: found end of message delimiter -[2024-06-20 13:23:54,153] DEBUG:ncclient.operations.rpc:[host 172.17.254.41 session-id 33] Delivering to -[2024-06-20 13:23:54,153] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: saving back rest of message after 10543 bytes, original size 10543 -[2024-06-20 13:23:54,154] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: ending -[2024-06-20 13:23:54,161] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,162] INFO:root:dic {'frequency': '192056250'} -[2024-06-20 13:23:54,163] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,164] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0'} -[2024-06-20 13:23:54,164] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,166] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8'} -[2024-06-20 13:23:54,167] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,168] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1'} -[2024-06-20 13:23:54,168] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,170] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:23:54,170] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,171] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:23:54,171] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,172] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:23:54,175] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,176] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-06-20 13:23:54,177] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,179] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:23:54,179] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,181] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:23:54,181] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,182] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:23:54,183] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,184] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-06-20 13:23:54,184] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,185] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:23:54,185] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,187] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:23:54,187] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,188] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:23:54,188] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,190] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-06-20 13:23:54,191] INFO:root:parameters {'channels': [{'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1', 'name': {'index': 'channel-1'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2', 'name': {'index': 'channel-2'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3', 'name': {'index': 'channel-3'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4', 'name': {'index': 'channel-4'}}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'ports': [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})]} -[2024-06-20 13:23:54,192] DEBUG:context.client.ContextClient:SetOpticalConfig request: {"config": "{\"channels\": [{\"frequency\": \"192056250\", \"target-output-power\": \"1.0\", \"operational-mode\": \"8\", \"line-port\": \"transceiver-1\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": [\"transceiver-1\", \"transceiver-2\", \"transceiver-3\", \"transceiver-4\"]}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}", "device_id": {"device_uuid": {"uuid": "27c2ed23-e74a-518f-820d-ae2c8ae23086"}}} -[2024-06-20 13:23:54,219] DEBUG:context.client.ContextClient:SetOpticalConfig result: {"opticalconfig_uuid": ""} -[2024-06-20 13:23:54,219] DEBUG:device.service.Tools:results_getconfig = [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-06-20 13:23:54,219] INFO:device.service.Tools:results_getconfig = [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-06-20 13:23:54,220] INFO:ncclient.operations.rpc:[host 172.17.254.41 session-id 33] Requesting 'Get' -[2024-06-20 13:23:54,220] DEBUG:ncclient.operations.rpc:[host 172.17.254.41 session-id 33] Sync request, will wait for timeout=120 -[2024-06-20 13:23:54,298] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: starting -[2024-06-20 13:23:54,298] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:23:54,298] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:54,298] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:54,298] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:23:54,298] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:54,298] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:23:54,298] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:23:54,298] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: ending -[2024-06-20 13:23:54,299] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: starting -[2024-06-20 13:23:54,299] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:23:54,299] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:54,299] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:54,299] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:23:54,299] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:54,299] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:23:54,299] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:23:54,299] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: ending -[2024-06-20 13:23:54,299] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: starting -[2024-06-20 13:23:54,300] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:23:54,300] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:54,300] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:54,300] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:23:54,300] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:54,300] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:23:54,300] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:23:54,300] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: ending -[2024-06-20 13:23:54,300] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: starting -[2024-06-20 13:23:54,301] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:23:54,301] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:54,301] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:54,301] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:23:54,301] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:54,301] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: appending 16376 bytes -[2024-06-20 13:23:54,301] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: fragment = " -falsefalsetruefalsefalsefalseeth0eth0truefalsetrue00
192.168.1.1192.168.1.124
DISABLEfalsetruefalse
falsefalsetrue1false
truechannel-1channel-1channel-1oc-opt-types:OPTICAL_CHANNEL1920562501.08transceiver-11920562501.08transceiver-110.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-2channel-2channel-2oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-21916000000.00transceiver-210.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-3channel-3channel-3oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-31916000000.00transceiver-310.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-4channel-4channel-4oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-41916000000.00transceiver-410.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00devicedeviceMellanoxSwitchoc-platform-types:OPERATING_SYSTEMSSSA-CNIT1.0.01.0.01.0.0610610port-1port-1port-1oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index1onos-index1channel-1channel-1channel-1port-2port-2port-2oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index2onos-index2channel-2channel-2channel-2port-3port-3port-3oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index3onos-index3channel-3channel-3channel-3port-4port-4port-4oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index4onos-index4channel-4channel-4channel-4transceiver-1transceiver-1transceiver-1oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-1transceiver-2transceiver-2transceiver-2oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-2transceiver-3transceiver-3transceiver-3oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHEREN" -[2024-06-20 13:23:54,301] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:23:54,301] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: ending -[2024-06-20 13:23:54,323] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: starting -[2024-06-20 13:23:54,323] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:23:54,323] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:54,323] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:54,323] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:23:54,324] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:54,324] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:23:54,324] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:23:54,324] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: ending -[2024-06-20 13:23:54,324] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: starting -[2024-06-20 13:23:54,324] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:23:54,324] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:54,324] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:54,324] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:23:54,325] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:54,325] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:23:54,325] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:23:54,325] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: ending -[2024-06-20 13:23:54,325] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: starting -[2024-06-20 13:23:54,325] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:23:54,325] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:54,325] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:54,325] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:23:54,325] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:54,325] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:23:54,326] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:23:54,326] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: ending -[2024-06-20 13:23:54,326] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: starting -[2024-06-20 13:23:54,326] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:23:54,326] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:54,326] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:54,326] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:23:54,326] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:54,326] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: appending 16376 bytes -[2024-06-20 13:23:54,326] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: fragment = "T_OPTICCisco400zr-QSFP-DD01156732111channel-3transceiver-4transceiver-4transceiver-4oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-4falsefalsetruefalsefalsefalse192.168.1.1192.168.1.188true65432179truefalseNONEfalse30903030falsefalsefalsetruefalsefalse0falsefalsefalsefalseREJECT_ROUTEREJECT_ROUTERFC2328_COMPATIBLE11Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONE1Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-1transceiver-111Optical channel assigned 100OPTICAL_CHANNELchannel-1100.01Optical channel assigned 100OPTICAL_CHANNELchannel-1100.022Logical channel 2DISABLEDoc-opt-types:PROT_OTNNONE2Logical channel 2DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-2transceiver-211Optical channel assigned 100OPTICAL_CHANNELchannel-2100.01Optical channel assigned 100OPTICAL_CHANNELchannel-2100.033Logical channel 3DISABLEDoc-opt-types:PROT_OTNNONE3Logical channel 3DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-3transceiver-311Optical channel assigned 100OPTICAL_CHANNELchannel-3100.01Optical channel assigned 100OPTICAL_CHANNELchannel-3100.044Logical channel 4DISABLEDoc-opt-types:PROT_OTNNONE4Logical channel 4DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-4transceiver-411Optical channel assigned 100OPTICAL_CHANNELchannel-4100.01Optical channel assigned 100OPTICAL_CHANNELchannel-4100.011FEC1Ericsson22FEC2Ericssonadmin9000100$1$MAUsMGRB$0QVLq8d0AZKgnyMHQHXGj./var/confd/homes/admin/.ssh/var/confd/homes/adminoper9003103$1$OuxlaJdk$U/2..0bsSRBOdB89X.V/B./var/confd/homes/oper/.ssh/var/confd/homes/operoptical9001101$1$.fTK5rN8$70SU3wMX3Ppun/0gE7wsA0/var/confd/homes/optical/.ssh/var/confd/homes/opticalpacket9002102$1$2Q0WT3GS$kHtMcIEPrKOjv5AIRaIRp./var/confd/homes/packet/.ssh/var/confd/homes/packetprivate9005103$1$kQyh8qdQ$M.AQv0IrSWDrKfW2RHAHj0/var/confd/homes/private/.ssh/var/confd/homes/privatepublic9004100$1$MGwjebs5$q/SznJWMzKIsd1aIb5UN.1/var/confd/homes/public/.ssh/var/confd/homes/public0\h> 15\h# exec0actionautowizardenableexithelpstartup15configure6.4falsestartediana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashianachietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesinetietf-interfaces2014-05-08urn:ietf:params:xml:ns:yang:ietf-interfacesifietf-netconf-acm2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-acmnacmietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringncmietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsncnietf-yang-library2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-libraryyanglibnetconfrestietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesyangnetconf_netmodurn:ietf:params:xml:ns:netmod:notificationnmnetconfopenconfig-alarm-types2018-01-16http://openconfig.net/yang/alarms/typesoc-alarm-typesopenconfig-bfd2022-06-28http://openconfig.net/yang/bfdoc-bfdopenconfig-bgp2022-05-21http://openconfig.net/yang/bgpoc-bgpopenconfig-bgp-types2021-08-06http://openconfig.net/yang/bgp-typesoc-bgp-typesopenconfig-evpn-types2021-06-21http://openconfig.net/yang/evpn-typesoc-evpn-typesopenconfig-if-ethernet2022-04-20http://openconfig.net/yang/interfaces/ethernetoc-ethopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipoc-ipopenconfig-inet-types2021-08-17http://openconfig.net/yang/types/inetoc-inetopenconfig-interfaces2021-04-06http://openconfig.net/yang/interfacesoc-ifopenconfig-lldp2018-11-21http://openconfig.net/yang/lldpoc-lldpopenconfig-lldp-types2018-11-21http://openconfig.net/yang/lldp/typesoc-lldp-typesopenconfig-mpls-types2021-12-01http://openconfig.net/yang/mpls-typesoc-mplstopenconfig-network-instance-types2021-07-14http://openconfig.net/yang/network-instance-typesoc-ni-typesopenconfig-ospf-types2018-11-21http://openconfig.net/yang/ospf-typesoc-ospf-typesNETCONFdefault NETCONF event streamfalsemellanoxNotifications regarding the transpondertrue2024-06-06T22:51:35.958749+00:00truepermitpermitpermittrue000adminadminprivateoperoperpublicoptopticalpckpacketany-group*get*/readpermittailf-aaa-authenticationtailf-aaa/aaa/authentication/users/user[name='$USER']read updatepermittailf-aaa-usertailf-aaa/user[name='$USER']create read update deletepermittailf-webui-usertailf-webui/webui/data-stores/user-profile[username='$USER']create read update deletepermitpacketpckvlanvlan/switched-vlanscreate read update deletepermitterminal-device*/terminal-devicecreate update deletedenycomponents*/componentscreate update deletedenyopticaloptterminal-device*/terminal-devicecreate read update deletepermitcomponents*/componentscreate read update deletepermitvlanvlan/switched-vlanscreate update deletedenyadminadminany-accesspermiturn:ietf:params:netconf:base:1.0urn:ietf:params:netconf:base:1.1urn:ietf:params:netconf:capability:writable-running:1.0urn:ietf:params:netconf:capability:xpath:1.0urn:ietf:params:netconf:capability:validate:1.0urn:ietf:params:netconf:capability:validate:1.1urn:ietf:params:netconf:capability:rollback-on-error:1.0urn:ietf:params:netconf:capability:notification:1.0urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all-taggedurn:ietf:params:netconf:capability:yang-library:1.0?revision=2016-06-21&module-set-id=f1285a0c7bf3c6c159ca5c87b160ec60http://tail-f.com/ns/netconf/extensionshttp://openconfig.net/yang/alarms/types?module=openconfig-alarm-types&revision=2018-01-16http://openconfig.net/yang/bfd?module=openconfig-bfd&revision=2022-06-28http://openconfig.net/yang/bgp?module=openconfig-bgp&revision=2022-05-21http://openconfig.net/yang/bgp-types?module=openconfig-bgp-types&revision=2021-08-06http://openconfig.net/yang/evpn-types?module=openconfig-evpn-types&revision=2021-06-21http://openconfig.net/yang/interfaces?module=openconfig-interfaces&revision=2021-04-06http://openconfig.net/yang/interfaces/ethernet?module=openconfig-if-ethernet&revision=2022-04-20http://openconfig.net/yang/interfaces/ip?module=openconfig-if-ip&revision=2019-01-08http://openconfig.net/yang/lldp?module=openconfig-lldp&revision=2018-11-21http://openconfig.net/yang/lldp/types?module=openconfig-lldp-types&revision=2018-11-21http://openconfig.net/yang/mpls-types?module=openconfig-mpls-types&revision=2021-12-01http://openconfig.net/yang/network-instance-types?module=openconfig-network-instance-types&revision=2021-07-14http://openconfig.net/yang/openconfig-types?module=openconfig-types&revision=2019-04-16http://openconfig.net/yang/ospf-types?module=openconfig-ospf-types&revision=2018-11-21http://openconfig.net/yang/ospfv2?module=openconfig-ospfv2&revision=2022-02-10http://openconfig.net/yang/platform?module=openconfig-platform&revision=2018-01-30http://openconfig.net/yang/platform-types?module=openconfig-platform-types&revision=2021-01-18http://openconfig.net/yang/platform/port?module=openconfig-platform-port&revision=2021-04-22http://openconfig.net/yang/platform/transceiver?module=openconfig-platform-transceiver&revision=2021-02-23http://openconfig.net/yang/policy-types?module=openconfig-policy-types&revision=2022-11-08http://openconfig.net/yang/protocols?module=openconfig-protocolshttp://openconfig.net/yang/rib/bgp?module=openconfig-rib-bgp&revision=2022-06-06http://openconfig.net/yang/rib/bgp-types?module=openconfig-rib-bgp-types&revision=2019-03-14http://openconfig.net/yang/routing-policy?module=openconfig-routing-policy&revision=2022-05-24http://openconfig.net/yang/segment-routing-types?module=openconfig-segment-routing-types&revision=2020-02-04http://openconfig.net/yang/telemetry?module=openconfig-telemetry&revision=2018-11-21http://openconfig.net/yang/telemetry-types?module=openconfig-telemetry-types&revision=2018-11-21http://openconfig.net/yang/terminal-device?module=openconfig-terminal-device&revision=2021-02-23http://openconfig.net/yang/transport-types?module=openconfig-transport-types&revision=2021-03-22http://openconfig.net/yang/types/inet?module=openconfig-inet-types&revision=2021-08-17http://openconfig.net/yang/types/yang?module=openconfig-yang-types&revision=2021-07-14http://sssup.it/yang/vlan?module=vlanhttp://tail-f.com/ns/aaa/1.1?module=tailf-aaa&revision=2015-06-16http://tail-f.com/ns/kicker?module=tailf-kicker&revision=2017-03-16http://tail-f.com/yang/acm?module=tailf-acm&revision=2013-03-07http://tail-f.com/yang/common-monitoring?module=tailf-common-monitoring&revision=2013-06-14http://tail-f.com/yang/confd-monitoring?module=tailf-confd-monitoring&revision=2013-06-14http://tail-f.com/yang/netconf-monitoring?module=tailf-netconf-monitoring&revision=2016-11-24urn:ietf:params:xml:ns:yang:iana-crypt-hash?module=iana-crypt-hash&revision=2014-08-06&features=crypt-hash-sha-512,crypt-hash-sha-256,crypt-hash-md5urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&revision=2013-07-15urn:ietf:params:xml:ns:yang:ietf-interfaces?module=ietf-interfaces&revision=2014-05-08&features=pre-provisioning,if-mib,arbitrary-namesurn:ietf:params:xml:ns:yang:ietf-netconf-acm?module=ietf-netconf-acm&revision=2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&revision=2010-10-04urn:ietf:params:xml:ns:yang:ietf-" -[2024-06-20 13:23:54,338] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:23:54,338] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: ending -[2024-06-20 13:23:54,360] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: starting -[2024-06-20 13:23:54,360] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:23:54,360] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:54,360] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:54,360] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:23:54,360] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:54,360] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:23:54,361] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:23:54,361] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: ending -[2024-06-20 13:23:54,361] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: starting -[2024-06-20 13:23:54,361] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:23:54,361] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:54,361] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:54,361] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:23:54,361] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:54,361] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:23:54,362] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:23:54,362] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: ending -[2024-06-20 13:23:54,362] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: starting -[2024-06-20 13:23:54,362] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:23:54,362] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:54,362] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:54,362] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:23:54,362] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:54,362] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:23:54,362] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:23:54,363] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: ending -[2024-06-20 13:23:54,363] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: starting -[2024-06-20 13:23:54,363] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:23:54,363] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:23:54,363] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:23:54,363] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:23:54,363] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:23:54,363] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: appending 16376 bytes -[2024-06-20 13:23:54,363] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: fragment = "netconf-notifications?module=ietf-netconf-notifications&revision=2012-02-06urn:ietf:params:xml:ns:yang:ietf-yang-library?module=ietf-yang-library&revision=2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&revision=2013-07-15urn:ietf:params:xml:ns:netconf:base:1.0?module=ietf-netconf&revision=2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?module=ietf-netconf-with-defaults&revision=2011-06-01running1717-750544-743311iana-crypt-hash2014-08-06yangurn:ietf:params:xml:ns:yang:iana-crypt-hashNETCONFietf-inet-types2013-07-15yangurn:ietf:params:xml:ns:yang:ietf-inet-typesNETCONFietf-interfaces2014-05-08yangurn:ietf:params:xml:ns:yang:ietf-interfacesNETCONFietf-netconf2011-06-01yangurn:ietf:params:xml:ns:netconf:base:1.0NETCONFietf-netconf-acm2012-02-22yangurn:ietf:params:xml:ns:yang:ietf-netconf-acmNETCONFietf-netconf-monitoring2010-10-04yangurn:ietf:params:xml:ns:yang:ietf-netconf-monitoringNETCONFietf-netconf-notifications2012-02-06yangurn:ietf:params:xml:ns:yang:ietf-netconf-notificationsNETCONFietf-netconf-with-defaults2011-06-01yangurn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsNETCONFietf-yang-library2016-06-21yangurn:ietf:params:xml:ns:yang:ietf-yang-libraryNETCONFietf-yang-types2013-07-15yangurn:ietf:params:xml:ns:yang:ietf-yang-typesNETCONFopenconfig-alarm-types2018-01-16yanghttp://openconfig.net/yang/alarms/typesNETCONFopenconfig-bfd2022-06-28yanghttp://openconfig.net/yang/bfdNETCONFopenconfig-bgp2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common-multiprotocol2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common-structure2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-errors2021-08-06yanghttp://openconfig.net/yang/bgp-typesNETCONFopenconfig-bgp-global2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-neighbor2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-peer-group2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-types2021-08-06yanghttp://openconfig.net/yang/bgp-typesNETCONFopenconfig-evpn-types2021-06-21yanghttp://openconfig.net/yang/evpn-typesNETCONFopenconfig-if-ethernet2022-04-20yanghttp://openconfig.net/yang/interfaces/ethernetNETCONFopenconfig-if-ip2019-01-08yanghttp://openconfig.net/yang/interfaces/ipNETCONFopenconfig-inet-types2021-08-17yanghttp://openconfig.net/yang/types/inetNETCONFopenconfig-interfaces2021-04-06yanghttp://openconfig.net/yang/interfacesNETCONFopenconfig-lldp2018-11-21yanghttp://openconfig.net/yang/lldpNETCONFopenconfig-lldp-types2018-11-21yanghttp://openconfig.net/yang/lldp/typesNETCONFopenconfig-mpls-types2021-12-01yanghttp://openconfig.net/yang/mpls-typesNETCONFopenconfig-network-instance-types2021-07-14yanghttp://openconfig.net/yang/network-instance-typesNETCONFopenconfig-ospf-types2018-11-21yanghttp://openconfig.net/yang/ospf-typesNETCONFopenconfig-ospfv22022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-area2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-area-interface2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-common2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-global2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-lsdb2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-platform2018-01-30yanghttp://openconfig.net/yang/platformNETCONFopenconfig-platform-port2021-04-22yanghttp://openconfig.net/yang/platform/portNETCONFopenconfig-platform-transceiver2021-02-23yanghttp://openconfig.net/yang/platform/transceiverNETCONFopenconfig-platform-types2021-01-18yanghttp://openconfig.net/yang/platform-typesNETCONFopenconfig-policy-types2022-11-08yanghttp://openconfig.net/yang/policy-typesNETCONFopenconfig-protocolsyanghttp://openconfig.net/yang/protocolsNETCONFopenconfig-rib-bgp2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-shared-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-table-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-tables2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-types2019-03-14yanghttp://openconfig.net/yang/rib/bgp-typesNETCONFopenconfig-routing-policy2022-05-24yanghttp://openconfig.net/yang/routing-policyNETCONFopenconfig-segment-routing-types2020-02-04yanghttp://openconfig.net/yang/segment-routing-typesNETCONFopenconfig-telemetry2018-11-21yanghttp://openconfig.net/yang/telemetryNETCONFopenconfig-telemetry-types2018-11-21yanghttp://openconfig.net/yang/telemetry-typesNETCONFopenconfig-terminal-device2021-02-23yanghttp://openconfig.net/yang/terminal-deviceNETCONFopenconfig-transport-types2021-03-22yanghttp://openconfig.net/yang/transport-typesNETCONFopenconfig-types2019-04-16yanghttp://openconfig.net/yang/openconfig-typesNETCONFopenconfig-yang-types2021-07-14yanghttp://openconfig.net/yang/types/yangNETCONFtailf-aaa2015-06-16yanghttp://tail-f.com/ns/aaa/1.1NETCONFtailf-acm2013-03-07yanghttp://tail-f.com/yang/acmNETCONFtailf-common-monitoring2013-06-14yanghttp://tail-f.com/yang/common-monitoringNETCONFtailf-confd-monitoring2013-06-14yanghttp://tail-f.com/yang/confd-monitoringNETCONFtailf-kicker2017-03-16yanghttp://tail-f.com/ns/kickerNETCONFtailf-netconf-monitoring2016-11-24yanghttp://tail-f.com/yang/netconf-monitoringNETCONFvlanyanghttp://sssup.it/yang/vlanNETCONF29netconf-sshadmin10.30.2.2062024-06-06T23:11:11+00:00400030netconf-sshadmin10.30.2.2062024-06-06T23:11:20+00:00200031netconf-sshadmin10.30.2.2062024-06-06T23:11:29+00:00200032netconf-sshadmin10.30.2.2082024-06-20T13:23:47+00:00200033netconf-sshadmin10.30.2.2082024-06-20T13:23:53+00:0020002024-06-06T22:51:35+00:0005012000NETCONFdefault NETCONF event streamfalsemellanoxNotifications regarding the transpondertrue2024-06-06T22:51:35.958749+00:00f1285a0c7bf3c6c159ca5c87b160ec60iana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashcrypt-hash-sha-512crypt-hash-sha-256crypt-hash-md5importietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesimportietf-interfaces2014-05-08urn:ietf:params:xml:ns:yang:ietf-interfacespre-provisioningif-mibarbitrary-namesimplementietf-netconf2011-06-01urn:ietf:params:xml:ns:netconf:base:1.0implementietf-netconf-acm2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-acmimplementietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringimplementietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsimplementietf-netconf-with-defaults2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsimplementietf-yang-library2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-libraryimplementietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesimportopenconfig-alarm-types2018-01-16http://openconfig.net/yang/alarms/typesimportopenconfig-bfd2022-06-28http://openconfig.net/yang/bfdimplementopenconfig-bgp2022-05-21http://openconfig.net/yang/bgpimplementopenconfig-bgp-common2022-05-21openconfig-bgp-common-structure2022-05-21openconfig-bgp-global2022-05-21openconfig-bgp-neighbor2022-05-21openconfig-bgp-peer-group2022-05-21openconfig-bgp-common-multiprotocol2022-05-21openconfig-bgp-types2021-08-06http://openconfig.net/yang/bgp-typesimportopenconfig-bgp-errors2021-08-06openconfig-evpn-types2021-06-21http://openconfig.net/yang/evpn-typesimportopenconfig-if-ethernet2022-04-20http://openconfig.net/yang/interfaces/ethernetimplementopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipimplementopenconfig-inet-types2021-08-17http://openconfig.net/yang/types/inetimportopenconfig-interfaces2021-04-06http://openconfig.net/yang/interfacesimplementopenconfig-lldp2018-11-21http://openconfig.net/yang/lldpimplementopenconfig-lldp-types2018-11-21http://openconfig.net/yang/lldp/typesimportopenconfig-mpls-types2021-12-01http://openconfig.net/yang/mpls-typesimportopenconfig-ospf-types2018-11-21http://openconfig.net/yang/ospf-typesimportopenconfig-ospfv22022-02-10http://openconfig.net/yang/ospfv2importopenconfig-ospfv2-area2022-02-10openconfig-ospfv2-common2022-02-10openconfig-ospfv2-global2022-02-10openconfig-ospfv2-lsdb2022-02-10openconfig-ospfv2-area-interface2022-02-10openconfig-platform2018-01-30http://openconfig.net/yang/platformimplementopenconfig-platform-port2021-04-22http://openconfig.net/yang/platform/portimplementopenconfig-platform-transceiver2021-02-23http://openconfig.net/yang/platform/transceiverimplementopenconfig-platform-types2021-01-18http://openconfig.net/yang/platform-typesimportopenconfig-policy-types2022-11-08http://openconfig.net/yang/policy-typesimportopenconfig-protocolshttp://openconfig.net/yang/protocolsimplementopenconfig-rib-bgp2022-06-06http://openconfig.net/yang/rib/bgpimportopenconfig-rib-bgp-attributes2022-06-06openconfig-rib-bgp-tables2022-06-06openconfig-rib-bgp-table-attributes2022-06-06openconfig-rib-bgp-shared-attributes2022-06-06openconfig-rib-bgp-types2019-03-14http://openconfig.net/yang/rib/bgp-typesimportopenconfig-routing-policy2022-05-24http://openconfig.net/yang/routing-policyimplementopenconfig-telemetry2018-11-21http://openconfig.net/yang/telemetryimplementopenconfig-telemetry-types2018-11-21http://openconfig.net/yang/telemetry-typesimportopenconfig-terminal-device2021-02-23http://openconfig.net/yang/terminal-deviceimplementopenconfig-transport-types2021-03-22http://openconfig.net/yang/transport-typesimportopenconfig-types2019-04-16http://openconfig.net/yang/openconfig-typesimportopenconfig-yang-types2021-07-14http://openconfig.net/yang/types/yangimporttailf-aaa2015-06-16http://tail-f.com/ns/aaa/1.1implementtailf-acm2013-03-07http://tail-f.com/yang/acmimplementtailf-common-monitoring2013-06-14http://tail-f.com/yang/common-monitoringimporttailf-confd-monitoring2013-06-14http://tail-f.com/yang/confd-monitoringimplementtailf-kicker2017-03-16http://tail-f.com/ns/kickerimplementtailf-netconf-monitoring2016-11-24http://tail-f.com/yang/netconf-monitoringimplementvlanhttp://sssup.it/yang/vlanimplementopenconfig-segment-routing-types2020-02-04http://openconfig.net/yang/segment-routing-typesimportopenconfig-network-instance-types2021-07-14http://openconfig.net/yang/network-instance-typesimport
" -[2024-06-20 13:23:54,371] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: matching from 10539 bytes from start of buffer -[2024-06-20 13:23:54,372] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: regular expression start=0, end=4 -[2024-06-20 13:23:54,372] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: found end of message delimiter -[2024-06-20 13:23:54,374] DEBUG:ncclient.operations.rpc:[host 172.17.254.41 session-id 33] Delivering to -[2024-06-20 13:23:54,374] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: saving back rest of message after 10543 bytes, original size 10543 -[2024-06-20 13:23:54,374] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 33] _parse11: ending -[2024-06-20 13:23:54,381] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,382] INFO:root:dic {'frequency': '192056250'} -[2024-06-20 13:23:54,382] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,383] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0'} -[2024-06-20 13:23:54,384] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,385] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8'} -[2024-06-20 13:23:54,385] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,386] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1'} -[2024-06-20 13:23:54,386] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,388] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:23:54,388] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,389] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:23:54,389] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,390] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:23:54,391] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,392] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-06-20 13:23:54,392] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,393] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:23:54,393] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,394] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:23:54,395] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,396] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:23:54,396] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,397] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-06-20 13:23:54,397] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,399] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:23:54,399] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,400] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:23:54,400] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,401] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:23:54,402] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:23:54,403] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-06-20 13:23:54,405] INFO:root:parameters {'channels': [{'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1', 'name': {'index': 'channel-1'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2', 'name': {'index': 'channel-2'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3', 'name': {'index': 'channel-3'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4', 'name': {'index': 'channel-4'}}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'ports': [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})]} -[2024-06-20 13:23:54,405] DEBUG:context.client.ContextClient:SetOpticalConfig request: {"config": "{\"channels\": [{\"frequency\": \"192056250\", \"target-output-power\": \"1.0\", \"operational-mode\": \"8\", \"line-port\": \"transceiver-1\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": [\"transceiver-1\", \"transceiver-2\", \"transceiver-3\", \"transceiver-4\"]}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}", "device_id": {"device_uuid": {"uuid": "27c2ed23-e74a-518f-820d-ae2c8ae23086"}}} -[2024-06-20 13:23:54,434] DEBUG:context.client.ContextClient:SetOpticalConfig result: {"opticalconfig_uuid": ""} -[2024-06-20 13:23:54,435] DEBUG:context.client.ContextClient:SetDevice request: {"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.41"}}, {"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}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[1]", "resource_value": "{\"type\": \"port-1\", \"uuid\": \"1\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[2]", "resource_value": "{\"type\": \"port-2\", \"uuid\": \"2\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[3]", "resource_value": "{\"type\": \"port-3\", \"uuid\": \"3\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[4]", "resource_value": "{\"type\": \"port-4\", \"uuid\": \"4\"}"}}]}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "27c2ed23-e74a-518f-820d-ae2c8ae23086"}}, "endpoint_uuid": {"uuid": "1"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "port-1", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "27c2ed23-e74a-518f-820d-ae2c8ae23086"}}, "endpoint_uuid": {"uuid": "2"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "port-2", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "27c2ed23-e74a-518f-820d-ae2c8ae23086"}}, "endpoint_uuid": {"uuid": "3"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "port-3", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "27c2ed23-e74a-518f-820d-ae2c8ae23086"}}, "endpoint_uuid": {"uuid": "4"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "port-4", "kpi_sample_types": [], "name": ""}], "device_id": {"device_uuid": {"uuid": "27c2ed23-e74a-518f-820d-ae2c8ae23086"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-transponder", "name": "T1.2"} -[2024-06-20 13:23:54,503] DEBUG:context.client.ContextClient:SetDevice result: {"device_uuid": {"uuid": "27c2ed23-e74a-518f-820d-ae2c8ae23086"}} -[2024-06-20 13:23:54,503] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "27c2ed23-e74a-518f-820d-ae2c8ae23086"}}]}, "include_components": false, "include_config_rules": false, "include_endpoints": true} -[2024-06-20 13:23:54,547] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": [{"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"}]} -[2024-06-20 13:23:54,548] DEBUG:device.service.DeviceServiceServicerImpl:AddDevice reply: {"device_uuid": {"uuid": "27c2ed23-e74a-518f-820d-ae2c8ae23086"}} -[2024-06-20 13:24:00,443] DEBUG:device.service.DeviceServiceServicerImpl:AddDevice request: {"components": [], "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.41"}}, {"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": [], "device_id": {"device_uuid": {"uuid": "T1.3"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_DISABLED", "device_type": "optical-transponder", "name": ""} -[2024-06-20 13:24:00,443] DEBUG:context.client.ContextClient:Creating channel to 10.152.183.195:1010... -[2024-06-20 13:24:00,443] DEBUG:context.client.ContextClient:Channel created -[2024-06-20 13:24:00,443] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "T1.3"}}]}, "include_components": true, "include_config_rules": true, "include_endpoints": true} -[2024-06-20 13:24:00,464] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": []} -[2024-06-20 13:24:00,464] DEBUG:context.client.ContextClient:SetDevice request: {"components": [], "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.41"}}, {"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": [], "device_id": {"device_uuid": {"uuid": "T1.3"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_UNDEFINED", "device_type": "optical-transponder", "name": ""} -[2024-06-20 13:24:00,499] DEBUG:context.client.ContextClient:SetDevice result: {"device_uuid": {"uuid": "cf618e18-c0a1-58c4-9827-943a2c0523d6"}} -[2024-06-20 13:24:00,499] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "cf618e18-c0a1-58c4-9827-943a2c0523d6"}}]}, "include_components": true, "include_config_rules": true, "include_endpoints": true} -[2024-06-20 13:24:00,519] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": [{"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.41"}}, {"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": [], "device_id": {"device_uuid": {"uuid": "cf618e18-c0a1-58c4-9827-943a2c0523d6"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_UNDEFINED", "device_type": "optical-transponder", "name": "T1.3"}]} -[2024-06-20 13:24:00,519] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(cf618e18-c0a1-58c4-9827-943a2c0523d6) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-06-20 13:24:00,519] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(cf618e18-c0a1-58c4-9827-943a2c0523d6) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-06-20 13:24:00,520] DEBUG:ncclient.transport.session:[host None session 0x7fa748648760] created: client_capabilities= -[2024-06-20 13:24:00,662] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session 0x7fa748648760] parsing netconf v1.0 -[2024-06-20 13:24:00,662] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session 0x7fa748648760] parsing netconf v1.0 -[2024-06-20 13:24:00,665] INFO:root:settings {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-06-20 13:24:00,666] INFO:ncclient.operations.rpc:[host 172.17.254.41 session-id 34] Requesting 'Get' -[2024-06-20 13:24:00,667] DEBUG:ncclient.operations.rpc:[host 172.17.254.41 session-id 34] Sync request, will wait for timeout=120 -[2024-06-20 13:24:00,819] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: starting -[2024-06-20 13:24:00,819] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:00,820] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:00,820] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:00,820] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:00,820] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:00,820] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:00,820] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:00,820] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: ending -[2024-06-20 13:24:00,820] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: starting -[2024-06-20 13:24:00,820] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:00,820] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:00,821] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:00,821] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:00,821] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:00,821] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:00,821] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:00,821] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: ending -[2024-06-20 13:24:00,821] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: starting -[2024-06-20 13:24:00,821] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:00,821] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:00,821] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:00,821] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:00,822] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:00,822] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:00,822] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:00,822] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: ending -[2024-06-20 13:24:00,822] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: starting -[2024-06-20 13:24:00,822] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:00,822] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:00,822] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:00,822] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:00,822] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:00,823] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: appending 16376 bytes -[2024-06-20 13:24:00,823] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: fragment = " -falsefalsetruefalsefalsefalseeth0eth0truefalsetrue00
192.168.1.1192.168.1.124
DISABLEfalsetruefalse
falsefalsetrue1false
truechannel-1channel-1channel-1oc-opt-types:OPTICAL_CHANNEL1920562501.08transceiver-11920562501.08transceiver-110.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-2channel-2channel-2oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-21916000000.00transceiver-210.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-3channel-3channel-3oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-31916000000.00transceiver-310.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-4channel-4channel-4oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-41916000000.00transceiver-410.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00devicedeviceMellanoxSwitchoc-platform-types:OPERATING_SYSTEMSSSA-CNIT1.0.01.0.01.0.0610610port-1port-1port-1oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index1onos-index1channel-1channel-1channel-1port-2port-2port-2oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index2onos-index2channel-2channel-2channel-2port-3port-3port-3oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index3onos-index3channel-3channel-3channel-3port-4port-4port-4oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index4onos-index4channel-4channel-4channel-4transceiver-1transceiver-1transceiver-1oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-1transceiver-2transceiver-2transceiver-2oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-2transceiver-3transceiver-3transceiver-3oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHEREN" -[2024-06-20 13:24:00,823] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:24:00,823] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: ending -[2024-06-20 13:24:00,847] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: starting -[2024-06-20 13:24:00,848] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:00,848] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:00,848] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:00,848] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:00,848] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:00,848] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:00,848] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:00,848] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: ending -[2024-06-20 13:24:00,848] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: starting -[2024-06-20 13:24:00,848] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:00,849] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:00,849] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:00,849] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:00,849] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:00,849] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:00,849] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:00,849] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: ending -[2024-06-20 13:24:00,849] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: starting -[2024-06-20 13:24:00,849] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:00,849] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:00,850] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:00,850] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:00,850] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:00,850] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:00,850] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:00,850] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: ending -[2024-06-20 13:24:00,850] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: starting -[2024-06-20 13:24:00,850] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:00,850] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:00,850] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:00,850] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:00,851] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:00,851] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: appending 16376 bytes -[2024-06-20 13:24:00,851] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: fragment = "T_OPTICCisco400zr-QSFP-DD01156732111channel-3transceiver-4transceiver-4transceiver-4oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-4falsefalsetruefalsefalsefalse192.168.1.1192.168.1.188true65432179truefalseNONEfalse30903030falsefalsefalsetruefalsefalse0falsefalsefalsefalseREJECT_ROUTEREJECT_ROUTERFC2328_COMPATIBLE11Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONE1Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-1transceiver-111Optical channel assigned 100OPTICAL_CHANNELchannel-1100.01Optical channel assigned 100OPTICAL_CHANNELchannel-1100.022Logical channel 2DISABLEDoc-opt-types:PROT_OTNNONE2Logical channel 2DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-2transceiver-211Optical channel assigned 100OPTICAL_CHANNELchannel-2100.01Optical channel assigned 100OPTICAL_CHANNELchannel-2100.033Logical channel 3DISABLEDoc-opt-types:PROT_OTNNONE3Logical channel 3DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-3transceiver-311Optical channel assigned 100OPTICAL_CHANNELchannel-3100.01Optical channel assigned 100OPTICAL_CHANNELchannel-3100.044Logical channel 4DISABLEDoc-opt-types:PROT_OTNNONE4Logical channel 4DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-4transceiver-411Optical channel assigned 100OPTICAL_CHANNELchannel-4100.01Optical channel assigned 100OPTICAL_CHANNELchannel-4100.011FEC1Ericsson22FEC2Ericssonadmin9000100$1$MAUsMGRB$0QVLq8d0AZKgnyMHQHXGj./var/confd/homes/admin/.ssh/var/confd/homes/adminoper9003103$1$OuxlaJdk$U/2..0bsSRBOdB89X.V/B./var/confd/homes/oper/.ssh/var/confd/homes/operoptical9001101$1$.fTK5rN8$70SU3wMX3Ppun/0gE7wsA0/var/confd/homes/optical/.ssh/var/confd/homes/opticalpacket9002102$1$2Q0WT3GS$kHtMcIEPrKOjv5AIRaIRp./var/confd/homes/packet/.ssh/var/confd/homes/packetprivate9005103$1$kQyh8qdQ$M.AQv0IrSWDrKfW2RHAHj0/var/confd/homes/private/.ssh/var/confd/homes/privatepublic9004100$1$MGwjebs5$q/SznJWMzKIsd1aIb5UN.1/var/confd/homes/public/.ssh/var/confd/homes/public0\h> 15\h# exec0actionautowizardenableexithelpstartup15configure6.4falsestartediana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashianachietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesinetietf-interfaces2014-05-08urn:ietf:params:xml:ns:yang:ietf-interfacesifietf-netconf-acm2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-acmnacmietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringncmietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsncnietf-yang-library2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-libraryyanglibnetconfrestietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesyangnetconf_netmodurn:ietf:params:xml:ns:netmod:notificationnmnetconfopenconfig-alarm-types2018-01-16http://openconfig.net/yang/alarms/typesoc-alarm-typesopenconfig-bfd2022-06-28http://openconfig.net/yang/bfdoc-bfdopenconfig-bgp2022-05-21http://openconfig.net/yang/bgpoc-bgpopenconfig-bgp-types2021-08-06http://openconfig.net/yang/bgp-typesoc-bgp-typesopenconfig-evpn-types2021-06-21http://openconfig.net/yang/evpn-typesoc-evpn-typesopenconfig-if-ethernet2022-04-20http://openconfig.net/yang/interfaces/ethernetoc-ethopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipoc-ipopenconfig-inet-types2021-08-17http://openconfig.net/yang/types/inetoc-inetopenconfig-interfaces2021-04-06http://openconfig.net/yang/interfacesoc-ifopenconfig-lldp2018-11-21http://openconfig.net/yang/lldpoc-lldpopenconfig-lldp-types2018-11-21http://openconfig.net/yang/lldp/typesoc-lldp-typesopenconfig-mpls-types2021-12-01http://openconfig.net/yang/mpls-typesoc-mplstopenconfig-network-instance-types2021-07-14http://openconfig.net/yang/network-instance-typesoc-ni-typesopenconfig-ospf-types2018-11-21http://openconfig.net/yang/ospf-typesoc-ospf-typesNETCONFdefault NETCONF event streamfalsemellanoxNotifications regarding the transpondertrue2024-06-06T22:51:35.958749+00:00truepermitpermitpermittrue000adminadminprivateoperoperpublicoptopticalpckpacketany-group*get*/readpermittailf-aaa-authenticationtailf-aaa/aaa/authentication/users/user[name='$USER']read updatepermittailf-aaa-usertailf-aaa/user[name='$USER']create read update deletepermittailf-webui-usertailf-webui/webui/data-stores/user-profile[username='$USER']create read update deletepermitpacketpckvlanvlan/switched-vlanscreate read update deletepermitterminal-device*/terminal-devicecreate update deletedenycomponents*/componentscreate update deletedenyopticaloptterminal-device*/terminal-devicecreate read update deletepermitcomponents*/componentscreate read update deletepermitvlanvlan/switched-vlanscreate update deletedenyadminadminany-accesspermiturn:ietf:params:netconf:base:1.0urn:ietf:params:netconf:base:1.1urn:ietf:params:netconf:capability:writable-running:1.0urn:ietf:params:netconf:capability:xpath:1.0urn:ietf:params:netconf:capability:validate:1.0urn:ietf:params:netconf:capability:validate:1.1urn:ietf:params:netconf:capability:rollback-on-error:1.0urn:ietf:params:netconf:capability:notification:1.0urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all-taggedurn:ietf:params:netconf:capability:yang-library:1.0?revision=2016-06-21&module-set-id=f1285a0c7bf3c6c159ca5c87b160ec60http://tail-f.com/ns/netconf/extensionshttp://openconfig.net/yang/alarms/types?module=openconfig-alarm-types&revision=2018-01-16http://openconfig.net/yang/bfd?module=openconfig-bfd&revision=2022-06-28http://openconfig.net/yang/bgp?module=openconfig-bgp&revision=2022-05-21http://openconfig.net/yang/bgp-types?module=openconfig-bgp-types&revision=2021-08-06http://openconfig.net/yang/evpn-types?module=openconfig-evpn-types&revision=2021-06-21http://openconfig.net/yang/interfaces?module=openconfig-interfaces&revision=2021-04-06http://openconfig.net/yang/interfaces/ethernet?module=openconfig-if-ethernet&revision=2022-04-20http://openconfig.net/yang/interfaces/ip?module=openconfig-if-ip&revision=2019-01-08http://openconfig.net/yang/lldp?module=openconfig-lldp&revision=2018-11-21http://openconfig.net/yang/lldp/types?module=openconfig-lldp-types&revision=2018-11-21http://openconfig.net/yang/mpls-types?module=openconfig-mpls-types&revision=2021-12-01http://openconfig.net/yang/network-instance-types?module=openconfig-network-instance-types&revision=2021-07-14http://openconfig.net/yang/openconfig-types?module=openconfig-types&revision=2019-04-16http://openconfig.net/yang/ospf-types?module=openconfig-ospf-types&revision=2018-11-21http://openconfig.net/yang/ospfv2?module=openconfig-ospfv2&revision=2022-02-10http://openconfig.net/yang/platform?module=openconfig-platform&revision=2018-01-30http://openconfig.net/yang/platform-types?module=openconfig-platform-types&revision=2021-01-18http://openconfig.net/yang/platform/port?module=openconfig-platform-port&revision=2021-04-22http://openconfig.net/yang/platform/transceiver?module=openconfig-platform-transceiver&revision=2021-02-23http://openconfig.net/yang/policy-types?module=openconfig-policy-types&revision=2022-11-08http://openconfig.net/yang/protocols?module=openconfig-protocolshttp://openconfig.net/yang/rib/bgp?module=openconfig-rib-bgp&revision=2022-06-06http://openconfig.net/yang/rib/bgp-types?module=openconfig-rib-bgp-types&revision=2019-03-14http://openconfig.net/yang/routing-policy?module=openconfig-routing-policy&revision=2022-05-24http://openconfig.net/yang/segment-routing-types?module=openconfig-segment-routing-types&revision=2020-02-04http://openconfig.net/yang/telemetry?module=openconfig-telemetry&revision=2018-11-21http://openconfig.net/yang/telemetry-types?module=openconfig-telemetry-types&revision=2018-11-21http://openconfig.net/yang/terminal-device?module=openconfig-terminal-device&revision=2021-02-23http://openconfig.net/yang/transport-types?module=openconfig-transport-types&revision=2021-03-22http://openconfig.net/yang/types/inet?module=openconfig-inet-types&revision=2021-08-17http://openconfig.net/yang/types/yang?module=openconfig-yang-types&revision=2021-07-14http://sssup.it/yang/vlan?module=vlanhttp://tail-f.com/ns/aaa/1.1?module=tailf-aaa&revision=2015-06-16http://tail-f.com/ns/kicker?module=tailf-kicker&revision=2017-03-16http://tail-f.com/yang/acm?module=tailf-acm&revision=2013-03-07http://tail-f.com/yang/common-monitoring?module=tailf-common-monitoring&revision=2013-06-14http://tail-f.com/yang/confd-monitoring?module=tailf-confd-monitoring&revision=2013-06-14http://tail-f.com/yang/netconf-monitoring?module=tailf-netconf-monitoring&revision=2016-11-24urn:ietf:params:xml:ns:yang:iana-crypt-hash?module=iana-crypt-hash&revision=2014-08-06&features=crypt-hash-sha-512,crypt-hash-sha-256,crypt-hash-md5urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&revision=2013-07-15urn:ietf:params:xml:ns:yang:ietf-interfaces?module=ietf-interfaces&revision=2014-05-08&features=pre-provisioning,if-mib,arbitrary-namesurn:ietf:params:xml:ns:yang:ietf-netconf-acm?module=ietf-netconf-acm&revision=2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&revision=2010-10-04urn:ietf:params:xml:ns:yang:ietf-" -[2024-06-20 13:24:00,884] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:24:00,884] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: ending -[2024-06-20 13:24:00,902] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: starting -[2024-06-20 13:24:00,902] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:00,902] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:00,902] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:00,902] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:00,902] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:00,902] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:00,902] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:00,902] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: ending -[2024-06-20 13:24:00,903] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: starting -[2024-06-20 13:24:00,903] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:00,903] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:00,903] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:00,903] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:00,903] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:00,903] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:00,903] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:00,903] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: ending -[2024-06-20 13:24:00,903] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: starting -[2024-06-20 13:24:00,904] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:00,904] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:00,904] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:00,904] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:00,904] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:00,904] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:00,904] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:00,904] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: ending -[2024-06-20 13:24:00,904] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: starting -[2024-06-20 13:24:00,904] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:00,905] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:00,905] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:00,905] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:00,905] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:00,905] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: appending 16376 bytes -[2024-06-20 13:24:00,905] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: fragment = "netconf-notifications?module=ietf-netconf-notifications&revision=2012-02-06urn:ietf:params:xml:ns:yang:ietf-yang-library?module=ietf-yang-library&revision=2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&revision=2013-07-15urn:ietf:params:xml:ns:netconf:base:1.0?module=ietf-netconf&revision=2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?module=ietf-netconf-with-defaults&revision=2011-06-01running1717-750544-743311iana-crypt-hash2014-08-06yangurn:ietf:params:xml:ns:yang:iana-crypt-hashNETCONFietf-inet-types2013-07-15yangurn:ietf:params:xml:ns:yang:ietf-inet-typesNETCONFietf-interfaces2014-05-08yangurn:ietf:params:xml:ns:yang:ietf-interfacesNETCONFietf-netconf2011-06-01yangurn:ietf:params:xml:ns:netconf:base:1.0NETCONFietf-netconf-acm2012-02-22yangurn:ietf:params:xml:ns:yang:ietf-netconf-acmNETCONFietf-netconf-monitoring2010-10-04yangurn:ietf:params:xml:ns:yang:ietf-netconf-monitoringNETCONFietf-netconf-notifications2012-02-06yangurn:ietf:params:xml:ns:yang:ietf-netconf-notificationsNETCONFietf-netconf-with-defaults2011-06-01yangurn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsNETCONFietf-yang-library2016-06-21yangurn:ietf:params:xml:ns:yang:ietf-yang-libraryNETCONFietf-yang-types2013-07-15yangurn:ietf:params:xml:ns:yang:ietf-yang-typesNETCONFopenconfig-alarm-types2018-01-16yanghttp://openconfig.net/yang/alarms/typesNETCONFopenconfig-bfd2022-06-28yanghttp://openconfig.net/yang/bfdNETCONFopenconfig-bgp2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common-multiprotocol2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common-structure2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-errors2021-08-06yanghttp://openconfig.net/yang/bgp-typesNETCONFopenconfig-bgp-global2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-neighbor2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-peer-group2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-types2021-08-06yanghttp://openconfig.net/yang/bgp-typesNETCONFopenconfig-evpn-types2021-06-21yanghttp://openconfig.net/yang/evpn-typesNETCONFopenconfig-if-ethernet2022-04-20yanghttp://openconfig.net/yang/interfaces/ethernetNETCONFopenconfig-if-ip2019-01-08yanghttp://openconfig.net/yang/interfaces/ipNETCONFopenconfig-inet-types2021-08-17yanghttp://openconfig.net/yang/types/inetNETCONFopenconfig-interfaces2021-04-06yanghttp://openconfig.net/yang/interfacesNETCONFopenconfig-lldp2018-11-21yanghttp://openconfig.net/yang/lldpNETCONFopenconfig-lldp-types2018-11-21yanghttp://openconfig.net/yang/lldp/typesNETCONFopenconfig-mpls-types2021-12-01yanghttp://openconfig.net/yang/mpls-typesNETCONFopenconfig-network-instance-types2021-07-14yanghttp://openconfig.net/yang/network-instance-typesNETCONFopenconfig-ospf-types2018-11-21yanghttp://openconfig.net/yang/ospf-typesNETCONFopenconfig-ospfv22022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-area2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-area-interface2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-common2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-global2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-lsdb2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-platform2018-01-30yanghttp://openconfig.net/yang/platformNETCONFopenconfig-platform-port2021-04-22yanghttp://openconfig.net/yang/platform/portNETCONFopenconfig-platform-transceiver2021-02-23yanghttp://openconfig.net/yang/platform/transceiverNETCONFopenconfig-platform-types2021-01-18yanghttp://openconfig.net/yang/platform-typesNETCONFopenconfig-policy-types2022-11-08yanghttp://openconfig.net/yang/policy-typesNETCONFopenconfig-protocolsyanghttp://openconfig.net/yang/protocolsNETCONFopenconfig-rib-bgp2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-shared-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-table-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-tables2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-types2019-03-14yanghttp://openconfig.net/yang/rib/bgp-typesNETCONFopenconfig-routing-policy2022-05-24yanghttp://openconfig.net/yang/routing-policyNETCONFopenconfig-segment-routing-types2020-02-04yanghttp://openconfig.net/yang/segment-routing-typesNETCONFopenconfig-telemetry2018-11-21yanghttp://openconfig.net/yang/telemetryNETCONFopenconfig-telemetry-types2018-11-21yanghttp://openconfig.net/yang/telemetry-typesNETCONFopenconfig-terminal-device2021-02-23yanghttp://openconfig.net/yang/terminal-deviceNETCONFopenconfig-transport-types2021-03-22yanghttp://openconfig.net/yang/transport-typesNETCONFopenconfig-types2019-04-16yanghttp://openconfig.net/yang/openconfig-typesNETCONFopenconfig-yang-types2021-07-14yanghttp://openconfig.net/yang/types/yangNETCONFtailf-aaa2015-06-16yanghttp://tail-f.com/ns/aaa/1.1NETCONFtailf-acm2013-03-07yanghttp://tail-f.com/yang/acmNETCONFtailf-common-monitoring2013-06-14yanghttp://tail-f.com/yang/common-monitoringNETCONFtailf-confd-monitoring2013-06-14yanghttp://tail-f.com/yang/confd-monitoringNETCONFtailf-kicker2017-03-16yanghttp://tail-f.com/ns/kickerNETCONFtailf-netconf-monitoring2016-11-24yanghttp://tail-f.com/yang/netconf-monitoringNETCONFvlanyanghttp://sssup.it/yang/vlanNETCONF29netconf-sshadmin10.30.2.2062024-06-06T23:11:11+00:00400030netconf-sshadmin10.30.2.2062024-06-06T23:11:20+00:00200031netconf-sshadmin10.30.2.2062024-06-06T23:11:29+00:00200032netconf-sshadmin10.30.2.2082024-06-20T13:23:47+00:00200033netconf-sshadmin10.30.2.2082024-06-20T13:23:53+00:00200034netconf-sshadmin10.30.2.2082024-06-20T13:24:00+00:0010002024-06-06T22:51:35+00:0006013000NETCONFdefault NETCONF event streamfalsemellanoxNotifications regarding the transpondertrue2024-06-06T22:51:35.958749+00:00f1285a0c7bf3c6c159ca5c87b160ec60iana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashcrypt-hash-sha-512crypt-hash-sha-256crypt-hash-md5importietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesimportietf-interfaces2014-05-08urn:ietf:params:xml:ns:yang:ietf-interfacespre-provisioningif-mibarbitrary-namesimplementietf-netconf2011-06-01urn:ietf:params:xml:ns:netconf:base:1.0implementietf-netconf-acm2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-acmimplementietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringimplementietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsimplementietf-netconf-with-defaults2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsimplementietf-yang-library2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-libraryimplementietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesimportopenconfig-alarm-types2018-01-16http://openconfig.net/yang/alarms/typesimportopenconfig-bfd2022-06-28http://openconfig.net/yang/bfdimplementopenconfig-bgp2022-05-21http://openconfig.net/yang/bgpimplementopenconfig-bgp-common2022-05-21openconfig-bgp-common-structure2022-05-21openconfig-bgp-global2022-05-21openconfig-bgp-neighbor2022-05-21openconfig-bgp-peer-group2022-05-21openconfig-bgp-common-multiprotocol2022-05-21openconfig-bgp-types2021-08-06http://openconfig.net/yang/bgp-typesimportopenconfig-bgp-errors2021-08-06openconfig-evpn-types2021-06-21http://openconfig.net/yang/evpn-typesimportopenconfig-if-ethernet2022-04-20http://openconfig.net/yang/interfaces/ethernetimplementopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipimplementopenconfig-inet-types2021-08-17http://openconfig.net/yang/types/inetimportopenconfig-interfaces2021-04-06http://openconfig.net/yang/interfacesimplementopenconfig-lldp2018-11-21http://openconfig.net/yang/lldpimplementopenconfig-lldp-types2018-11-21http://openconfig.net/yang/lldp/typesimportopenconfig-mpls-types2021-12-01http://openconfig.net/yang/mpls-typesimportopenconfig-ospf-types2018-11-21http://openconfig.net/yang/ospf-typesimportopenconfig-ospfv22022-02-10http://openconfig.net/yang/ospfv2importopenconfig-ospfv2-area2022-02-10openconfig-ospfv2-common2022-02-10openconfig-ospfv2-global2022-02-10openconfig-ospfv2-lsdb2022-02-10openconfig-ospfv2-area-interface2022-02-10openconfig-platform2018-01-30http://openconfig.net/yang/platformimplementopenconfig-platform-port2021-04-22http://openconfig.net/yang/platform/portimplementopenconfig-platform-transceiver2021-02-23http://openconfig.net/yang/platform/transceiverimplementopenconfig-platform-types2021-01-18http://openconfig.net/yang/platform-typesimportopenconfig-policy-types2022-11-08http://openconfig.net/yang/policy-typesimportopenconfig-protocolshttp://openconfig.net/yang/protocolsimplementopenconfig-rib-bgp2022-06-06http://openconfig.net/yang/rib/bgpimportopenconfig-rib-bgp-attributes2022-06-06openconfig-rib-bgp-tables2022-06-06openconfig-rib-bgp-table-attributes2022-06-06openconfig-rib-bgp-shared-attributes2022-06-06openconfig-rib-bgp-types2019-03-14http://openconfig.net/yang/rib/bgp-typesimportopenconfig-routing-policy2022-05-24http://openconfig.net/yang/routing-policyimplementopenconfig-telemetry2018-11-21http://openconfig.net/yang/telemetryimplementopenconfig-telemetry-types2018-11-21http://openconfig.net/yang/telemetry-typesimportopenconfig-terminal-device2021-02-23http://openconfig.net/yang/terminal-deviceimplementopenconfig-transport-types2021-03-22http://openconfig.net/yang/transport-typesimportopenconfig-types2019-04-16http://openconfig.net/yang/openconfig-typesimportopenconfig-yang-types2021-07-14http://openconfig.net/yang/types/yangimporttailf-aaa2015-06-16http://tail-f.com/ns/aaa/1.1implementtailf-acm2013-03-07http://tail-f.com/yang/acmimplementtailf-common-monitoring2013-06-14http://tail-f.com/yang/common-monitoringimporttailf-confd-monitoring2013-06-14http://tail-f.com/yang/confd-monitoringimplementtailf-kicker2017-03-16http://tail-f.com/ns/kickerimplementtailf-netconf-monitoring2016-11-24http://tail-f.com/yang/netconf-monitoringimplementvlanhttp://sssup.it/yang/vlanimplementopenconfig-segment-routing-types2020-02-04http://openconfig.net/yang/segment-routing-typesimportopenconfig-network-instance-types2021-07-14http://openconfig.net/yang/network-instance-typesimport
" -[2024-06-20 13:24:00,913] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: matching from 10855 bytes from start of buffer -[2024-06-20 13:24:00,913] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: regular expression start=0, end=4 -[2024-06-20 13:24:00,913] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: found end of message delimiter -[2024-06-20 13:24:00,915] DEBUG:ncclient.operations.rpc:[host 172.17.254.41 session-id 34] Delivering to -[2024-06-20 13:24:00,915] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: saving back rest of message after 10859 bytes, original size 10859 -[2024-06-20 13:24:00,915] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: ending -[2024-06-20 13:24:00,922] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:00,923] INFO:root:dic {'frequency': '192056250'} -[2024-06-20 13:24:00,924] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:00,925] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0'} -[2024-06-20 13:24:00,925] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:00,927] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8'} -[2024-06-20 13:24:00,927] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:00,928] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1'} -[2024-06-20 13:24:00,929] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:00,930] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:24:00,930] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:00,931] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:24:00,932] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:00,933] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:24:00,933] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:00,935] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-06-20 13:24:00,935] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:00,936] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:24:00,936] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:00,938] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:24:00,938] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:00,939] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:24:00,940] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:00,941] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-06-20 13:24:00,941] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:00,943] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:24:00,943] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:00,944] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:24:00,945] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:00,946] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:24:00,946] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:00,947] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-06-20 13:24:00,949] INFO:root:parameters {'channels': [{'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1', 'name': {'index': 'channel-1'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2', 'name': {'index': 'channel-2'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3', 'name': {'index': 'channel-3'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4', 'name': {'index': 'channel-4'}}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'ports': [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})]} -[2024-06-20 13:24:00,950] DEBUG:context.client.ContextClient:SetOpticalConfig request: {"config": "{\"channels\": [{\"frequency\": \"192056250\", \"target-output-power\": \"1.0\", \"operational-mode\": \"8\", \"line-port\": \"transceiver-1\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": [\"transceiver-1\", \"transceiver-2\", \"transceiver-3\", \"transceiver-4\"]}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}", "device_id": {"device_uuid": {"uuid": "cf618e18-c0a1-58c4-9827-943a2c0523d6"}}} -[2024-06-20 13:24:00,986] DEBUG:context.client.ContextClient:SetOpticalConfig result: {"opticalconfig_uuid": ""} -[2024-06-20 13:24:00,987] DEBUG:device.service.Tools:results_getconfig = [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-06-20 13:24:00,987] INFO:device.service.Tools:results_getconfig = [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-06-20 13:24:00,988] INFO:ncclient.operations.rpc:[host 172.17.254.41 session-id 34] Requesting 'Get' -[2024-06-20 13:24:00,988] DEBUG:ncclient.operations.rpc:[host 172.17.254.41 session-id 34] Sync request, will wait for timeout=120 -[2024-06-20 13:24:01,052] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: starting -[2024-06-20 13:24:01,052] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:01,052] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:01,052] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:01,053] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:01,053] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:01,053] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:01,053] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:01,053] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: ending -[2024-06-20 13:24:01,053] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: starting -[2024-06-20 13:24:01,053] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:01,054] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:01,054] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:01,054] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:01,054] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:01,054] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:01,054] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:01,055] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: ending -[2024-06-20 13:24:01,055] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: starting -[2024-06-20 13:24:01,055] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:01,055] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:01,055] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:01,055] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:01,056] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:01,056] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:01,056] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:01,056] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: ending -[2024-06-20 13:24:01,056] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: starting -[2024-06-20 13:24:01,056] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:01,057] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:01,057] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:01,057] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:01,057] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:01,057] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: appending 16376 bytes -[2024-06-20 13:24:01,057] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: fragment = " -falsefalsetruefalsefalsefalseeth0eth0truefalsetrue00
192.168.1.1192.168.1.124
DISABLEfalsetruefalse
falsefalsetrue1false
truechannel-1channel-1channel-1oc-opt-types:OPTICAL_CHANNEL1920562501.08transceiver-11920562501.08transceiver-110.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-2channel-2channel-2oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-21916000000.00transceiver-210.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-3channel-3channel-3oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-31916000000.00transceiver-310.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-4channel-4channel-4oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-41916000000.00transceiver-410.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00devicedeviceMellanoxSwitchoc-platform-types:OPERATING_SYSTEMSSSA-CNIT1.0.01.0.01.0.0610610port-1port-1port-1oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index1onos-index1channel-1channel-1channel-1port-2port-2port-2oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index2onos-index2channel-2channel-2channel-2port-3port-3port-3oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index3onos-index3channel-3channel-3channel-3port-4port-4port-4oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index4onos-index4channel-4channel-4channel-4transceiver-1transceiver-1transceiver-1oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-1transceiver-2transceiver-2transceiver-2oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-2transceiver-3transceiver-3transceiver-3oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHEREN" -[2024-06-20 13:24:01,057] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:24:01,058] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: ending -[2024-06-20 13:24:01,074] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: starting -[2024-06-20 13:24:01,074] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:01,074] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:01,074] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:01,074] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:01,075] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:01,075] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:01,075] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:01,075] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: ending -[2024-06-20 13:24:01,075] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: starting -[2024-06-20 13:24:01,076] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:01,076] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:01,076] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:01,076] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:01,076] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:01,076] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:01,076] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:01,076] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: ending -[2024-06-20 13:24:01,077] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: starting -[2024-06-20 13:24:01,077] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:01,077] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:01,077] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:01,077] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:01,077] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:01,077] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:01,077] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:01,077] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: ending -[2024-06-20 13:24:01,077] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: starting -[2024-06-20 13:24:01,077] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:01,077] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:01,078] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:01,078] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:01,078] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:01,078] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: appending 16376 bytes -[2024-06-20 13:24:01,078] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: fragment = "T_OPTICCisco400zr-QSFP-DD01156732111channel-3transceiver-4transceiver-4transceiver-4oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-4falsefalsetruefalsefalsefalse192.168.1.1192.168.1.188true65432179truefalseNONEfalse30903030falsefalsefalsetruefalsefalse0falsefalsefalsefalseREJECT_ROUTEREJECT_ROUTERFC2328_COMPATIBLE11Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONE1Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-1transceiver-111Optical channel assigned 100OPTICAL_CHANNELchannel-1100.01Optical channel assigned 100OPTICAL_CHANNELchannel-1100.022Logical channel 2DISABLEDoc-opt-types:PROT_OTNNONE2Logical channel 2DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-2transceiver-211Optical channel assigned 100OPTICAL_CHANNELchannel-2100.01Optical channel assigned 100OPTICAL_CHANNELchannel-2100.033Logical channel 3DISABLEDoc-opt-types:PROT_OTNNONE3Logical channel 3DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-3transceiver-311Optical channel assigned 100OPTICAL_CHANNELchannel-3100.01Optical channel assigned 100OPTICAL_CHANNELchannel-3100.044Logical channel 4DISABLEDoc-opt-types:PROT_OTNNONE4Logical channel 4DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-4transceiver-411Optical channel assigned 100OPTICAL_CHANNELchannel-4100.01Optical channel assigned 100OPTICAL_CHANNELchannel-4100.011FEC1Ericsson22FEC2Ericssonadmin9000100$1$MAUsMGRB$0QVLq8d0AZKgnyMHQHXGj./var/confd/homes/admin/.ssh/var/confd/homes/adminoper9003103$1$OuxlaJdk$U/2..0bsSRBOdB89X.V/B./var/confd/homes/oper/.ssh/var/confd/homes/operoptical9001101$1$.fTK5rN8$70SU3wMX3Ppun/0gE7wsA0/var/confd/homes/optical/.ssh/var/confd/homes/opticalpacket9002102$1$2Q0WT3GS$kHtMcIEPrKOjv5AIRaIRp./var/confd/homes/packet/.ssh/var/confd/homes/packetprivate9005103$1$kQyh8qdQ$M.AQv0IrSWDrKfW2RHAHj0/var/confd/homes/private/.ssh/var/confd/homes/privatepublic9004100$1$MGwjebs5$q/SznJWMzKIsd1aIb5UN.1/var/confd/homes/public/.ssh/var/confd/homes/public0\h> 15\h# exec0actionautowizardenableexithelpstartup15configure6.4falsestartediana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashianachietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesinetietf-interfaces2014-05-08urn:ietf:params:xml:ns:yang:ietf-interfacesifietf-netconf-acm2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-acmnacmietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringncmietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsncnietf-yang-library2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-libraryyanglibnetconfrestietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesyangnetconf_netmodurn:ietf:params:xml:ns:netmod:notificationnmnetconfopenconfig-alarm-types2018-01-16http://openconfig.net/yang/alarms/typesoc-alarm-typesopenconfig-bfd2022-06-28http://openconfig.net/yang/bfdoc-bfdopenconfig-bgp2022-05-21http://openconfig.net/yang/bgpoc-bgpopenconfig-bgp-types2021-08-06http://openconfig.net/yang/bgp-typesoc-bgp-typesopenconfig-evpn-types2021-06-21http://openconfig.net/yang/evpn-typesoc-evpn-typesopenconfig-if-ethernet2022-04-20http://openconfig.net/yang/interfaces/ethernetoc-ethopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipoc-ipopenconfig-inet-types2021-08-17http://openconfig.net/yang/types/inetoc-inetopenconfig-interfaces2021-04-06http://openconfig.net/yang/interfacesoc-ifopenconfig-lldp2018-11-21http://openconfig.net/yang/lldpoc-lldpopenconfig-lldp-types2018-11-21http://openconfig.net/yang/lldp/typesoc-lldp-typesopenconfig-mpls-types2021-12-01http://openconfig.net/yang/mpls-typesoc-mplstopenconfig-network-instance-types2021-07-14http://openconfig.net/yang/network-instance-typesoc-ni-typesopenconfig-ospf-types2018-11-21http://openconfig.net/yang/ospf-typesoc-ospf-typesNETCONFdefault NETCONF event streamfalsemellanoxNotifications regarding the transpondertrue2024-06-06T22:51:35.958749+00:00truepermitpermitpermittrue000adminadminprivateoperoperpublicoptopticalpckpacketany-group*get*/readpermittailf-aaa-authenticationtailf-aaa/aaa/authentication/users/user[name='$USER']read updatepermittailf-aaa-usertailf-aaa/user[name='$USER']create read update deletepermittailf-webui-usertailf-webui/webui/data-stores/user-profile[username='$USER']create read update deletepermitpacketpckvlanvlan/switched-vlanscreate read update deletepermitterminal-device*/terminal-devicecreate update deletedenycomponents*/componentscreate update deletedenyopticaloptterminal-device*/terminal-devicecreate read update deletepermitcomponents*/componentscreate read update deletepermitvlanvlan/switched-vlanscreate update deletedenyadminadminany-accesspermiturn:ietf:params:netconf:base:1.0urn:ietf:params:netconf:base:1.1urn:ietf:params:netconf:capability:writable-running:1.0urn:ietf:params:netconf:capability:xpath:1.0urn:ietf:params:netconf:capability:validate:1.0urn:ietf:params:netconf:capability:validate:1.1urn:ietf:params:netconf:capability:rollback-on-error:1.0urn:ietf:params:netconf:capability:notification:1.0urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all-taggedurn:ietf:params:netconf:capability:yang-library:1.0?revision=2016-06-21&module-set-id=f1285a0c7bf3c6c159ca5c87b160ec60http://tail-f.com/ns/netconf/extensionshttp://openconfig.net/yang/alarms/types?module=openconfig-alarm-types&revision=2018-01-16http://openconfig.net/yang/bfd?module=openconfig-bfd&revision=2022-06-28http://openconfig.net/yang/bgp?module=openconfig-bgp&revision=2022-05-21http://openconfig.net/yang/bgp-types?module=openconfig-bgp-types&revision=2021-08-06http://openconfig.net/yang/evpn-types?module=openconfig-evpn-types&revision=2021-06-21http://openconfig.net/yang/interfaces?module=openconfig-interfaces&revision=2021-04-06http://openconfig.net/yang/interfaces/ethernet?module=openconfig-if-ethernet&revision=2022-04-20http://openconfig.net/yang/interfaces/ip?module=openconfig-if-ip&revision=2019-01-08http://openconfig.net/yang/lldp?module=openconfig-lldp&revision=2018-11-21http://openconfig.net/yang/lldp/types?module=openconfig-lldp-types&revision=2018-11-21http://openconfig.net/yang/mpls-types?module=openconfig-mpls-types&revision=2021-12-01http://openconfig.net/yang/network-instance-types?module=openconfig-network-instance-types&revision=2021-07-14http://openconfig.net/yang/openconfig-types?module=openconfig-types&revision=2019-04-16http://openconfig.net/yang/ospf-types?module=openconfig-ospf-types&revision=2018-11-21http://openconfig.net/yang/ospfv2?module=openconfig-ospfv2&revision=2022-02-10http://openconfig.net/yang/platform?module=openconfig-platform&revision=2018-01-30http://openconfig.net/yang/platform-types?module=openconfig-platform-types&revision=2021-01-18http://openconfig.net/yang/platform/port?module=openconfig-platform-port&revision=2021-04-22http://openconfig.net/yang/platform/transceiver?module=openconfig-platform-transceiver&revision=2021-02-23http://openconfig.net/yang/policy-types?module=openconfig-policy-types&revision=2022-11-08http://openconfig.net/yang/protocols?module=openconfig-protocolshttp://openconfig.net/yang/rib/bgp?module=openconfig-rib-bgp&revision=2022-06-06http://openconfig.net/yang/rib/bgp-types?module=openconfig-rib-bgp-types&revision=2019-03-14http://openconfig.net/yang/routing-policy?module=openconfig-routing-policy&revision=2022-05-24http://openconfig.net/yang/segment-routing-types?module=openconfig-segment-routing-types&revision=2020-02-04http://openconfig.net/yang/telemetry?module=openconfig-telemetry&revision=2018-11-21http://openconfig.net/yang/telemetry-types?module=openconfig-telemetry-types&revision=2018-11-21http://openconfig.net/yang/terminal-device?module=openconfig-terminal-device&revision=2021-02-23http://openconfig.net/yang/transport-types?module=openconfig-transport-types&revision=2021-03-22http://openconfig.net/yang/types/inet?module=openconfig-inet-types&revision=2021-08-17http://openconfig.net/yang/types/yang?module=openconfig-yang-types&revision=2021-07-14http://sssup.it/yang/vlan?module=vlanhttp://tail-f.com/ns/aaa/1.1?module=tailf-aaa&revision=2015-06-16http://tail-f.com/ns/kicker?module=tailf-kicker&revision=2017-03-16http://tail-f.com/yang/acm?module=tailf-acm&revision=2013-03-07http://tail-f.com/yang/common-monitoring?module=tailf-common-monitoring&revision=2013-06-14http://tail-f.com/yang/confd-monitoring?module=tailf-confd-monitoring&revision=2013-06-14http://tail-f.com/yang/netconf-monitoring?module=tailf-netconf-monitoring&revision=2016-11-24urn:ietf:params:xml:ns:yang:iana-crypt-hash?module=iana-crypt-hash&revision=2014-08-06&features=crypt-hash-sha-512,crypt-hash-sha-256,crypt-hash-md5urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&revision=2013-07-15urn:ietf:params:xml:ns:yang:ietf-interfaces?module=ietf-interfaces&revision=2014-05-08&features=pre-provisioning,if-mib,arbitrary-namesurn:ietf:params:xml:ns:yang:ietf-netconf-acm?module=ietf-netconf-acm&revision=2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&revision=2010-10-04urn:ietf:params:xml:ns:yang:ietf-" -[2024-06-20 13:24:01,094] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:24:01,094] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: ending -[2024-06-20 13:24:01,118] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: starting -[2024-06-20 13:24:01,118] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:01,118] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:01,118] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:01,118] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:01,118] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:01,118] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:01,118] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:01,119] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: ending -[2024-06-20 13:24:01,119] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: starting -[2024-06-20 13:24:01,119] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:01,119] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:01,119] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:01,119] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:01,119] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:01,119] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:01,120] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:01,120] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: ending -[2024-06-20 13:24:01,120] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: starting -[2024-06-20 13:24:01,120] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:01,120] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:01,121] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:01,121] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:01,121] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:01,121] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:01,122] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:01,122] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: ending -[2024-06-20 13:24:01,122] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: starting -[2024-06-20 13:24:01,122] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:01,123] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:01,123] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:01,123] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:01,123] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:01,123] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: appending 16376 bytes -[2024-06-20 13:24:01,123] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: fragment = "netconf-notifications?module=ietf-netconf-notifications&revision=2012-02-06urn:ietf:params:xml:ns:yang:ietf-yang-library?module=ietf-yang-library&revision=2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&revision=2013-07-15urn:ietf:params:xml:ns:netconf:base:1.0?module=ietf-netconf&revision=2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?module=ietf-netconf-with-defaults&revision=2011-06-01running1717-750544-743311iana-crypt-hash2014-08-06yangurn:ietf:params:xml:ns:yang:iana-crypt-hashNETCONFietf-inet-types2013-07-15yangurn:ietf:params:xml:ns:yang:ietf-inet-typesNETCONFietf-interfaces2014-05-08yangurn:ietf:params:xml:ns:yang:ietf-interfacesNETCONFietf-netconf2011-06-01yangurn:ietf:params:xml:ns:netconf:base:1.0NETCONFietf-netconf-acm2012-02-22yangurn:ietf:params:xml:ns:yang:ietf-netconf-acmNETCONFietf-netconf-monitoring2010-10-04yangurn:ietf:params:xml:ns:yang:ietf-netconf-monitoringNETCONFietf-netconf-notifications2012-02-06yangurn:ietf:params:xml:ns:yang:ietf-netconf-notificationsNETCONFietf-netconf-with-defaults2011-06-01yangurn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsNETCONFietf-yang-library2016-06-21yangurn:ietf:params:xml:ns:yang:ietf-yang-libraryNETCONFietf-yang-types2013-07-15yangurn:ietf:params:xml:ns:yang:ietf-yang-typesNETCONFopenconfig-alarm-types2018-01-16yanghttp://openconfig.net/yang/alarms/typesNETCONFopenconfig-bfd2022-06-28yanghttp://openconfig.net/yang/bfdNETCONFopenconfig-bgp2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common-multiprotocol2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common-structure2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-errors2021-08-06yanghttp://openconfig.net/yang/bgp-typesNETCONFopenconfig-bgp-global2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-neighbor2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-peer-group2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-types2021-08-06yanghttp://openconfig.net/yang/bgp-typesNETCONFopenconfig-evpn-types2021-06-21yanghttp://openconfig.net/yang/evpn-typesNETCONFopenconfig-if-ethernet2022-04-20yanghttp://openconfig.net/yang/interfaces/ethernetNETCONFopenconfig-if-ip2019-01-08yanghttp://openconfig.net/yang/interfaces/ipNETCONFopenconfig-inet-types2021-08-17yanghttp://openconfig.net/yang/types/inetNETCONFopenconfig-interfaces2021-04-06yanghttp://openconfig.net/yang/interfacesNETCONFopenconfig-lldp2018-11-21yanghttp://openconfig.net/yang/lldpNETCONFopenconfig-lldp-types2018-11-21yanghttp://openconfig.net/yang/lldp/typesNETCONFopenconfig-mpls-types2021-12-01yanghttp://openconfig.net/yang/mpls-typesNETCONFopenconfig-network-instance-types2021-07-14yanghttp://openconfig.net/yang/network-instance-typesNETCONFopenconfig-ospf-types2018-11-21yanghttp://openconfig.net/yang/ospf-typesNETCONFopenconfig-ospfv22022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-area2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-area-interface2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-common2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-global2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-lsdb2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-platform2018-01-30yanghttp://openconfig.net/yang/platformNETCONFopenconfig-platform-port2021-04-22yanghttp://openconfig.net/yang/platform/portNETCONFopenconfig-platform-transceiver2021-02-23yanghttp://openconfig.net/yang/platform/transceiverNETCONFopenconfig-platform-types2021-01-18yanghttp://openconfig.net/yang/platform-typesNETCONFopenconfig-policy-types2022-11-08yanghttp://openconfig.net/yang/policy-typesNETCONFopenconfig-protocolsyanghttp://openconfig.net/yang/protocolsNETCONFopenconfig-rib-bgp2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-shared-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-table-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-tables2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-types2019-03-14yanghttp://openconfig.net/yang/rib/bgp-typesNETCONFopenconfig-routing-policy2022-05-24yanghttp://openconfig.net/yang/routing-policyNETCONFopenconfig-segment-routing-types2020-02-04yanghttp://openconfig.net/yang/segment-routing-typesNETCONFopenconfig-telemetry2018-11-21yanghttp://openconfig.net/yang/telemetryNETCONFopenconfig-telemetry-types2018-11-21yanghttp://openconfig.net/yang/telemetry-typesNETCONFopenconfig-terminal-device2021-02-23yanghttp://openconfig.net/yang/terminal-deviceNETCONFopenconfig-transport-types2021-03-22yanghttp://openconfig.net/yang/transport-typesNETCONFopenconfig-types2019-04-16yanghttp://openconfig.net/yang/openconfig-typesNETCONFopenconfig-yang-types2021-07-14yanghttp://openconfig.net/yang/types/yangNETCONFtailf-aaa2015-06-16yanghttp://tail-f.com/ns/aaa/1.1NETCONFtailf-acm2013-03-07yanghttp://tail-f.com/yang/acmNETCONFtailf-common-monitoring2013-06-14yanghttp://tail-f.com/yang/common-monitoringNETCONFtailf-confd-monitoring2013-06-14yanghttp://tail-f.com/yang/confd-monitoringNETCONFtailf-kicker2017-03-16yanghttp://tail-f.com/ns/kickerNETCONFtailf-netconf-monitoring2016-11-24yanghttp://tail-f.com/yang/netconf-monitoringNETCONFvlanyanghttp://sssup.it/yang/vlanNETCONF29netconf-sshadmin10.30.2.2062024-06-06T23:11:11+00:00400030netconf-sshadmin10.30.2.2062024-06-06T23:11:20+00:00200031netconf-sshadmin10.30.2.2062024-06-06T23:11:29+00:00200032netconf-sshadmin10.30.2.2082024-06-20T13:23:47+00:00200033netconf-sshadmin10.30.2.2082024-06-20T13:23:53+00:00200034netconf-sshadmin10.30.2.2082024-06-20T13:24:00+00:0020002024-06-06T22:51:35+00:0006014000NETCONFdefault NETCONF event streamfalsemellanoxNotifications regarding the transpondertrue2024-06-06T22:51:35.958749+00:00f1285a0c7bf3c6c159ca5c87b160ec60iana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashcrypt-hash-sha-512crypt-hash-sha-256crypt-hash-md5importietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesimportietf-interfaces2014-05-08urn:ietf:params:xml:ns:yang:ietf-interfacespre-provisioningif-mibarbitrary-namesimplementietf-netconf2011-06-01urn:ietf:params:xml:ns:netconf:base:1.0implementietf-netconf-acm2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-acmimplementietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringimplementietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsimplementietf-netconf-with-defaults2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsimplementietf-yang-library2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-libraryimplementietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesimportopenconfig-alarm-types2018-01-16http://openconfig.net/yang/alarms/typesimportopenconfig-bfd2022-06-28http://openconfig.net/yang/bfdimplementopenconfig-bgp2022-05-21http://openconfig.net/yang/bgpimplementopenconfig-bgp-common2022-05-21openconfig-bgp-common-structure2022-05-21openconfig-bgp-global2022-05-21openconfig-bgp-neighbor2022-05-21openconfig-bgp-peer-group2022-05-21openconfig-bgp-common-multiprotocol2022-05-21openconfig-bgp-types2021-08-06http://openconfig.net/yang/bgp-typesimportopenconfig-bgp-errors2021-08-06openconfig-evpn-types2021-06-21http://openconfig.net/yang/evpn-typesimportopenconfig-if-ethernet2022-04-20http://openconfig.net/yang/interfaces/ethernetimplementopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipimplementopenconfig-inet-types2021-08-17http://openconfig.net/yang/types/inetimportopenconfig-interfaces2021-04-06http://openconfig.net/yang/interfacesimplementopenconfig-lldp2018-11-21http://openconfig.net/yang/lldpimplementopenconfig-lldp-types2018-11-21http://openconfig.net/yang/lldp/typesimportopenconfig-mpls-types2021-12-01http://openconfig.net/yang/mpls-typesimportopenconfig-ospf-types2018-11-21http://openconfig.net/yang/ospf-typesimportopenconfig-ospfv22022-02-10http://openconfig.net/yang/ospfv2importopenconfig-ospfv2-area2022-02-10openconfig-ospfv2-common2022-02-10openconfig-ospfv2-global2022-02-10openconfig-ospfv2-lsdb2022-02-10openconfig-ospfv2-area-interface2022-02-10openconfig-platform2018-01-30http://openconfig.net/yang/platformimplementopenconfig-platform-port2021-04-22http://openconfig.net/yang/platform/portimplementopenconfig-platform-transceiver2021-02-23http://openconfig.net/yang/platform/transceiverimplementopenconfig-platform-types2021-01-18http://openconfig.net/yang/platform-typesimportopenconfig-policy-types2022-11-08http://openconfig.net/yang/policy-typesimportopenconfig-protocolshttp://openconfig.net/yang/protocolsimplementopenconfig-rib-bgp2022-06-06http://openconfig.net/yang/rib/bgpimportopenconfig-rib-bgp-attributes2022-06-06openconfig-rib-bgp-tables2022-06-06openconfig-rib-bgp-table-attributes2022-06-06openconfig-rib-bgp-shared-attributes2022-06-06openconfig-rib-bgp-types2019-03-14http://openconfig.net/yang/rib/bgp-typesimportopenconfig-routing-policy2022-05-24http://openconfig.net/yang/routing-policyimplementopenconfig-telemetry2018-11-21http://openconfig.net/yang/telemetryimplementopenconfig-telemetry-types2018-11-21http://openconfig.net/yang/telemetry-typesimportopenconfig-terminal-device2021-02-23http://openconfig.net/yang/terminal-deviceimplementopenconfig-transport-types2021-03-22http://openconfig.net/yang/transport-typesimportopenconfig-types2019-04-16http://openconfig.net/yang/openconfig-typesimportopenconfig-yang-types2021-07-14http://openconfig.net/yang/types/yangimporttailf-aaa2015-06-16http://tail-f.com/ns/aaa/1.1implementtailf-acm2013-03-07http://tail-f.com/yang/acmimplementtailf-common-monitoring2013-06-14http://tail-f.com/yang/common-monitoringimporttailf-confd-monitoring2013-06-14http://tail-f.com/yang/confd-monitoringimplementtailf-kicker2017-03-16http://tail-f.com/ns/kickerimplementtailf-netconf-monitoring2016-11-24http://tail-f.com/yang/netconf-monitoringimplementvlanhttp://sssup.it/yang/vlanimplementopenconfig-segment-routing-types2020-02-04http://openconfig.net/yang/segment-routing-typesimportopenconfig-network-instance-types2021-07-14http://openconfig.net/yang/network-instance-typesimport
" -[2024-06-20 13:24:01,131] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: matching from 10855 bytes from start of buffer -[2024-06-20 13:24:01,131] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: regular expression start=0, end=4 -[2024-06-20 13:24:01,131] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: found end of message delimiter -[2024-06-20 13:24:01,133] DEBUG:ncclient.operations.rpc:[host 172.17.254.41 session-id 34] Delivering to -[2024-06-20 13:24:01,134] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: saving back rest of message after 10859 bytes, original size 10859 -[2024-06-20 13:24:01,135] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 34] _parse11: ending -[2024-06-20 13:24:01,141] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:01,142] INFO:root:dic {'frequency': '192056250'} -[2024-06-20 13:24:01,142] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:01,144] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0'} -[2024-06-20 13:24:01,144] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:01,145] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8'} -[2024-06-20 13:24:01,145] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:01,147] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1'} -[2024-06-20 13:24:01,147] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:01,148] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:24:01,149] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:01,150] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:24:01,150] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:01,152] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:24:01,152] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:01,153] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-06-20 13:24:01,154] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:01,155] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:24:01,155] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:01,157] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:24:01,157] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:01,158] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:24:01,159] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:01,160] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-06-20 13:24:01,160] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:01,162] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:24:01,162] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:01,163] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:24:01,164] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:01,165] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:24:01,165] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:01,167] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-06-20 13:24:01,169] INFO:root:parameters {'channels': [{'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1', 'name': {'index': 'channel-1'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2', 'name': {'index': 'channel-2'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3', 'name': {'index': 'channel-3'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4', 'name': {'index': 'channel-4'}}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'ports': [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})]} -[2024-06-20 13:24:01,169] DEBUG:context.client.ContextClient:SetOpticalConfig request: {"config": "{\"channels\": [{\"frequency\": \"192056250\", \"target-output-power\": \"1.0\", \"operational-mode\": \"8\", \"line-port\": \"transceiver-1\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": [\"transceiver-1\", \"transceiver-2\", \"transceiver-3\", \"transceiver-4\"]}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}", "device_id": {"device_uuid": {"uuid": "cf618e18-c0a1-58c4-9827-943a2c0523d6"}}} -[2024-06-20 13:24:01,193] DEBUG:context.client.ContextClient:SetOpticalConfig result: {"opticalconfig_uuid": ""} -[2024-06-20 13:24:01,195] DEBUG:context.client.ContextClient:SetDevice request: {"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.41"}}, {"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}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[1]", "resource_value": "{\"type\": \"port-1\", \"uuid\": \"1\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[2]", "resource_value": "{\"type\": \"port-2\", \"uuid\": \"2\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[3]", "resource_value": "{\"type\": \"port-3\", \"uuid\": \"3\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[4]", "resource_value": "{\"type\": \"port-4\", \"uuid\": \"4\"}"}}]}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "cf618e18-c0a1-58c4-9827-943a2c0523d6"}}, "endpoint_uuid": {"uuid": "1"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "port-1", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "cf618e18-c0a1-58c4-9827-943a2c0523d6"}}, "endpoint_uuid": {"uuid": "2"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "port-2", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "cf618e18-c0a1-58c4-9827-943a2c0523d6"}}, "endpoint_uuid": {"uuid": "3"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "port-3", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "cf618e18-c0a1-58c4-9827-943a2c0523d6"}}, "endpoint_uuid": {"uuid": "4"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "port-4", "kpi_sample_types": [], "name": ""}], "device_id": {"device_uuid": {"uuid": "cf618e18-c0a1-58c4-9827-943a2c0523d6"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-transponder", "name": "T1.3"} -[2024-06-20 13:24:01,241] DEBUG:context.client.ContextClient:SetDevice result: {"device_uuid": {"uuid": "cf618e18-c0a1-58c4-9827-943a2c0523d6"}} -[2024-06-20 13:24:01,241] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "cf618e18-c0a1-58c4-9827-943a2c0523d6"}}]}, "include_components": false, "include_config_rules": false, "include_endpoints": true} -[2024-06-20 13:24:01,305] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": [{"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"}]} -[2024-06-20 13:24:01,306] DEBUG:device.service.DeviceServiceServicerImpl:AddDevice reply: {"device_uuid": {"uuid": "cf618e18-c0a1-58c4-9827-943a2c0523d6"}} -[2024-06-20 13:24:10,868] DEBUG:device.service.DeviceServiceServicerImpl:AddDevice request: {"components": [], "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.42"}}, {"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": [], "device_id": {"device_uuid": {"uuid": "T2.1"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_DISABLED", "device_type": "optical-transponder", "name": ""} -[2024-06-20 13:24:10,868] DEBUG:context.client.ContextClient:Creating channel to 10.152.183.195:1010... -[2024-06-20 13:24:10,869] DEBUG:context.client.ContextClient:Channel created -[2024-06-20 13:24:10,869] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "T2.1"}}]}, "include_components": true, "include_config_rules": true, "include_endpoints": true} -[2024-06-20 13:24:10,880] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": []} -[2024-06-20 13:24:10,880] DEBUG:context.client.ContextClient:SetDevice request: {"components": [], "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.42"}}, {"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": [], "device_id": {"device_uuid": {"uuid": "T2.1"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_UNDEFINED", "device_type": "optical-transponder", "name": ""} -[2024-06-20 13:24:10,910] DEBUG:context.client.ContextClient:SetDevice result: {"device_uuid": {"uuid": "87d74166-65e3-595e-b643-122b4fd0303f"}} -[2024-06-20 13:24:10,910] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "87d74166-65e3-595e-b643-122b4fd0303f"}}]}, "include_components": true, "include_config_rules": true, "include_endpoints": true} -[2024-06-20 13:24:10,934] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": [{"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.42"}}, {"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": [], "device_id": {"device_uuid": {"uuid": "87d74166-65e3-595e-b643-122b4fd0303f"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_UNDEFINED", "device_type": "optical-transponder", "name": "T2.1"}]} -[2024-06-20 13:24:10,934] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(87d74166-65e3-595e-b643-122b4fd0303f) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-06-20 13:24:10,934] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(87d74166-65e3-595e-b643-122b4fd0303f) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-06-20 13:24:10,935] DEBUG:ncclient.transport.session:[host None session 0x7fa7486bd070] created: client_capabilities= -[2024-06-20 13:24:11,079] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session 0x7fa7486bd070] parsing netconf v1.0 -[2024-06-20 13:24:11,079] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session 0x7fa7486bd070] parsing netconf v1.0 -[2024-06-20 13:24:11,082] INFO:root:settings {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-06-20 13:24:11,082] INFO:ncclient.operations.rpc:[host 172.17.254.42 session-id 32] Requesting 'Get' -[2024-06-20 13:24:11,083] DEBUG:ncclient.operations.rpc:[host 172.17.254.42 session-id 32] Sync request, will wait for timeout=120 -[2024-06-20 13:24:11,226] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:24:11,226] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:11,226] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:11,226] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:11,226] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:24:11,227] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:11,227] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:24:11,227] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:24:11,227] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:24:11,227] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:24:11,227] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:11,227] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:11,227] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:11,227] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:24:11,227] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:11,227] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:24:11,228] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:24:11,228] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:24:11,228] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:24:11,228] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:11,228] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:11,228] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:11,228] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:24:11,228] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:11,228] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:24:11,228] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:24:11,228] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:24:11,229] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:24:11,229] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:11,229] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:11,229] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:11,229] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:24:11,229] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:11,229] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: appending 16376 bytes -[2024-06-20 13:24:11,230] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: fragment = " -falsefalsetruefalsefalsefalseeth0eth0truefalsetrue00
192.168.1.1192.168.1.124
DISABLEfalsetruefalse
falsefalsetrue1false
truechannel-1channel-1channel-1oc-opt-types:OPTICAL_CHANNEL1920562501.08transceiver-11920562501.08transceiver-110.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-2channel-2channel-2oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-21916000000.00transceiver-210.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-3channel-3channel-3oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-31916000000.00transceiver-310.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-4channel-4channel-4oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-41916000000.00transceiver-410.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00devicedeviceMellanoxSwitchoc-platform-types:OPERATING_SYSTEMSSSA-CNIT1.0.01.0.01.0.0610610port-1port-1port-1oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index1onos-index1channel-1channel-1channel-1port-2port-2port-2oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index2onos-index2channel-2channel-2channel-2port-3port-3port-3oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index3onos-index3channel-3channel-3channel-3port-4port-4port-4oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index4onos-index4channel-4channel-4channel-4transceiver-1transceiver-1transceiver-1oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-1transceiver-2transceiver-2transceiver-2oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-2transceiver-3transceiver-3transceiver-3oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHEREN" -[2024-06-20 13:24:11,230] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:24:11,230] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:24:11,249] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:24:11,250] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:11,250] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:11,250] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:11,250] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:24:11,250] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:11,250] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:24:11,250] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:24:11,251] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:24:11,251] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:24:11,251] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:11,251] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:11,252] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:11,252] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:24:11,252] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:11,252] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:24:11,253] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:24:11,253] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:24:11,253] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:24:11,253] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:11,254] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:11,254] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:11,254] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:24:11,255] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:11,255] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:24:11,255] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:24:11,255] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:24:11,255] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:24:11,255] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:11,256] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:11,256] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:11,256] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:24:11,256] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:11,256] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: appending 16376 bytes -[2024-06-20 13:24:11,257] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: fragment = "T_OPTICCisco400zr-QSFP-DD01156732111channel-3transceiver-4transceiver-4transceiver-4oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-4falsefalsetruefalsefalsefalse192.168.1.1192.168.1.188true65432179truefalseNONEfalse30903030falsefalsefalsetruefalsefalse0falsefalsefalsefalseREJECT_ROUTEREJECT_ROUTERFC2328_COMPATIBLE11Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONE1Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-1transceiver-111Optical channel assigned 100OPTICAL_CHANNELchannel-1100.01Optical channel assigned 100OPTICAL_CHANNELchannel-1100.022Logical channel 2DISABLEDoc-opt-types:PROT_OTNNONE2Logical channel 2DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-2transceiver-211Optical channel assigned 100OPTICAL_CHANNELchannel-2100.01Optical channel assigned 100OPTICAL_CHANNELchannel-2100.033Logical channel 3DISABLEDoc-opt-types:PROT_OTNNONE3Logical channel 3DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-3transceiver-311Optical channel assigned 100OPTICAL_CHANNELchannel-3100.01Optical channel assigned 100OPTICAL_CHANNELchannel-3100.044Logical channel 4DISABLEDoc-opt-types:PROT_OTNNONE4Logical channel 4DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-4transceiver-411Optical channel assigned 100OPTICAL_CHANNELchannel-4100.01Optical channel assigned 100OPTICAL_CHANNELchannel-4100.011FEC1Ericsson22FEC2Ericssonadmin9000100$1$lPNyHD3D$t9eLr07hXOEy1983ReE8k0/var/confd/homes/admin/.ssh/var/confd/homes/adminoper9003103$1$gflBsGcV$PdW1/SBjHWGBRlZuBfdva//var/confd/homes/oper/.ssh/var/confd/homes/operoptical9001101$1$HCxex4ow$jHGQxsbMB1dWNK97ydKv20/var/confd/homes/optical/.ssh/var/confd/homes/opticalpacket9002102$1$2CYgcCNT$bV6L4CxgDPQP9EMyZ4Rsc1/var/confd/homes/packet/.ssh/var/confd/homes/packetprivate9005103$1$2MXxtlsM$qZfOcm4WXD2c8duQXzdru0/var/confd/homes/private/.ssh/var/confd/homes/privatepublic9004100$1$1tOWUHZV$iad9vZD8aF68c6x21nhHo//var/confd/homes/public/.ssh/var/confd/homes/public0\h> 15\h# exec0actionautowizardenableexithelpstartup15configure6.4falsestartediana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashianachietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesinetietf-interfaces2014-05-08urn:ietf:params:xml:ns:yang:ietf-interfacesifietf-netconf-acm2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-acmnacmietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringncmietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsncnietf-yang-library2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-libraryyanglibnetconfrestietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesyangnetconf_netmodurn:ietf:params:xml:ns:netmod:notificationnmnetconfopenconfig-alarm-types2018-01-16http://openconfig.net/yang/alarms/typesoc-alarm-typesopenconfig-bfd2022-06-28http://openconfig.net/yang/bfdoc-bfdopenconfig-bgp2022-05-21http://openconfig.net/yang/bgpoc-bgpopenconfig-bgp-types2021-08-06http://openconfig.net/yang/bgp-typesoc-bgp-typesopenconfig-evpn-types2021-06-21http://openconfig.net/yang/evpn-typesoc-evpn-typesopenconfig-if-ethernet2022-04-20http://openconfig.net/yang/interfaces/ethernetoc-ethopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipoc-ipopenconfig-inet-types2021-08-17http://openconfig.net/yang/types/inetoc-inetopenconfig-interfaces2021-04-06http://openconfig.net/yang/interfacesoc-ifopenconfig-lldp2018-11-21http://openconfig.net/yang/lldpoc-lldpopenconfig-lldp-types2018-11-21http://openconfig.net/yang/lldp/typesoc-lldp-typesopenconfig-mpls-types2021-12-01http://openconfig.net/yang/mpls-typesoc-mplstopenconfig-network-instance-types2021-07-14http://openconfig.net/yang/network-instance-typesoc-ni-typesopenconfig-ospf-types2018-11-21http://openconfig.net/yang/ospf-typesoc-ospf-typesNETCONFdefault NETCONF event streamfalsemellanoxNotifications regarding the transpondertrue2024-06-06T22:51:42.135613+00:00truepermitpermitpermittrue000adminadminprivateoperoperpublicoptopticalpckpacketany-group*get*/readpermittailf-aaa-authenticationtailf-aaa/aaa/authentication/users/user[name='$USER']read updatepermittailf-aaa-usertailf-aaa/user[name='$USER']create read update deletepermittailf-webui-usertailf-webui/webui/data-stores/user-profile[username='$USER']create read update deletepermitpacketpckvlanvlan/switched-vlanscreate read update deletepermitterminal-device*/terminal-devicecreate update deletedenycomponents*/componentscreate update deletedenyopticaloptterminal-device*/terminal-devicecreate read update deletepermitcomponents*/componentscreate read update deletepermitvlanvlan/switched-vlanscreate update deletedenyadminadminany-accesspermiturn:ietf:params:netconf:base:1.0urn:ietf:params:netconf:base:1.1urn:ietf:params:netconf:capability:writable-running:1.0urn:ietf:params:netconf:capability:xpath:1.0urn:ietf:params:netconf:capability:validate:1.0urn:ietf:params:netconf:capability:validate:1.1urn:ietf:params:netconf:capability:rollback-on-error:1.0urn:ietf:params:netconf:capability:notification:1.0urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all-taggedurn:ietf:params:netconf:capability:yang-library:1.0?revision=2016-06-21&module-set-id=f1285a0c7bf3c6c159ca5c87b160ec60http://tail-f.com/ns/netconf/extensionshttp://openconfig.net/yang/alarms/types?module=openconfig-alarm-types&revision=2018-01-16http://openconfig.net/yang/bfd?module=openconfig-bfd&revision=2022-06-28http://openconfig.net/yang/bgp?module=openconfig-bgp&revision=2022-05-21http://openconfig.net/yang/bgp-types?module=openconfig-bgp-types&revision=2021-08-06http://openconfig.net/yang/evpn-types?module=openconfig-evpn-types&revision=2021-06-21http://openconfig.net/yang/interfaces?module=openconfig-interfaces&revision=2021-04-06http://openconfig.net/yang/interfaces/ethernet?module=openconfig-if-ethernet&revision=2022-04-20http://openconfig.net/yang/interfaces/ip?module=openconfig-if-ip&revision=2019-01-08http://openconfig.net/yang/lldp?module=openconfig-lldp&revision=2018-11-21http://openconfig.net/yang/lldp/types?module=openconfig-lldp-types&revision=2018-11-21http://openconfig.net/yang/mpls-types?module=openconfig-mpls-types&revision=2021-12-01http://openconfig.net/yang/network-instance-types?module=openconfig-network-instance-types&revision=2021-07-14http://openconfig.net/yang/openconfig-types?module=openconfig-types&revision=2019-04-16http://openconfig.net/yang/ospf-types?module=openconfig-ospf-types&revision=2018-11-21http://openconfig.net/yang/ospfv2?module=openconfig-ospfv2&revision=2022-02-10http://openconfig.net/yang/platform?module=openconfig-platform&revision=2018-01-30http://openconfig.net/yang/platform-types?module=openconfig-platform-types&revision=2021-01-18http://openconfig.net/yang/platform/port?module=openconfig-platform-port&revision=2021-04-22http://openconfig.net/yang/platform/transceiver?module=openconfig-platform-transceiver&revision=2021-02-23http://openconfig.net/yang/policy-types?module=openconfig-policy-types&revision=2022-11-08http://openconfig.net/yang/protocols?module=openconfig-protocolshttp://openconfig.net/yang/rib/bgp?module=openconfig-rib-bgp&revision=2022-06-06http://openconfig.net/yang/rib/bgp-types?module=openconfig-rib-bgp-types&revision=2019-03-14http://openconfig.net/yang/routing-policy?module=openconfig-routing-policy&revision=2022-05-24http://openconfig.net/yang/segment-routing-types?module=openconfig-segment-routing-types&revision=2020-02-04http://openconfig.net/yang/telemetry?module=openconfig-telemetry&revision=2018-11-21http://openconfig.net/yang/telemetry-types?module=openconfig-telemetry-types&revision=2018-11-21http://openconfig.net/yang/terminal-device?module=openconfig-terminal-device&revision=2021-02-23http://openconfig.net/yang/transport-types?module=openconfig-transport-types&revision=2021-03-22http://openconfig.net/yang/types/inet?module=openconfig-inet-types&revision=2021-08-17http://openconfig.net/yang/types/yang?module=openconfig-yang-types&revision=2021-07-14http://sssup.it/yang/vlan?module=vlanhttp://tail-f.com/ns/aaa/1.1?module=tailf-aaa&revision=2015-06-16http://tail-f.com/ns/kicker?module=tailf-kicker&revision=2017-03-16http://tail-f.com/yang/acm?module=tailf-acm&revision=2013-03-07http://tail-f.com/yang/common-monitoring?module=tailf-common-monitoring&revision=2013-06-14http://tail-f.com/yang/confd-monitoring?module=tailf-confd-monitoring&revision=2013-06-14http://tail-f.com/yang/netconf-monitoring?module=tailf-netconf-monitoring&revision=2016-11-24urn:ietf:params:xml:ns:yang:iana-crypt-hash?module=iana-crypt-hash&revision=2014-08-06&features=crypt-hash-sha-512,crypt-hash-sha-256,crypt-hash-md5urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&revision=2013-07-15urn:ietf:params:xml:ns:yang:ietf-interfaces?module=ietf-interfaces&revision=2014-05-08&features=pre-provisioning,if-mib,arbitrary-namesurn:ietf:params:xml:ns:yang:ietf-netconf-acm?module=ietf-netconf-acm&revision=2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&revision=2010-10-04urn:ietf:params:xml:ns:yang:ietf-" -[2024-06-20 13:24:11,295] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:24:11,295] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:24:11,311] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:24:11,311] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:11,312] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:11,312] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:11,312] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:24:11,312] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:11,312] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:24:11,313] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:24:11,313] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:24:11,313] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:24:11,314] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:11,314] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:11,314] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:11,314] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:24:11,314] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:11,314] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:24:11,315] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:24:11,315] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:24:11,315] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:24:11,315] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:11,315] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:11,316] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:11,316] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:24:11,317] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:11,318] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:24:11,318] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:24:11,318] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:24:11,318] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:24:11,318] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:11,318] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:11,318] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:11,318] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:24:11,319] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:11,319] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: appending 16376 bytes -[2024-06-20 13:24:11,319] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: fragment = "netconf-notifications?module=ietf-netconf-notifications&revision=2012-02-06urn:ietf:params:xml:ns:yang:ietf-yang-library?module=ietf-yang-library&revision=2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&revision=2013-07-15urn:ietf:params:xml:ns:netconf:base:1.0?module=ietf-netconf&revision=2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?module=ietf-netconf-with-defaults&revision=2011-06-01running1717-750545-631285iana-crypt-hash2014-08-06yangurn:ietf:params:xml:ns:yang:iana-crypt-hashNETCONFietf-inet-types2013-07-15yangurn:ietf:params:xml:ns:yang:ietf-inet-typesNETCONFietf-interfaces2014-05-08yangurn:ietf:params:xml:ns:yang:ietf-interfacesNETCONFietf-netconf2011-06-01yangurn:ietf:params:xml:ns:netconf:base:1.0NETCONFietf-netconf-acm2012-02-22yangurn:ietf:params:xml:ns:yang:ietf-netconf-acmNETCONFietf-netconf-monitoring2010-10-04yangurn:ietf:params:xml:ns:yang:ietf-netconf-monitoringNETCONFietf-netconf-notifications2012-02-06yangurn:ietf:params:xml:ns:yang:ietf-netconf-notificationsNETCONFietf-netconf-with-defaults2011-06-01yangurn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsNETCONFietf-yang-library2016-06-21yangurn:ietf:params:xml:ns:yang:ietf-yang-libraryNETCONFietf-yang-types2013-07-15yangurn:ietf:params:xml:ns:yang:ietf-yang-typesNETCONFopenconfig-alarm-types2018-01-16yanghttp://openconfig.net/yang/alarms/typesNETCONFopenconfig-bfd2022-06-28yanghttp://openconfig.net/yang/bfdNETCONFopenconfig-bgp2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common-multiprotocol2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common-structure2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-errors2021-08-06yanghttp://openconfig.net/yang/bgp-typesNETCONFopenconfig-bgp-global2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-neighbor2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-peer-group2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-types2021-08-06yanghttp://openconfig.net/yang/bgp-typesNETCONFopenconfig-evpn-types2021-06-21yanghttp://openconfig.net/yang/evpn-typesNETCONFopenconfig-if-ethernet2022-04-20yanghttp://openconfig.net/yang/interfaces/ethernetNETCONFopenconfig-if-ip2019-01-08yanghttp://openconfig.net/yang/interfaces/ipNETCONFopenconfig-inet-types2021-08-17yanghttp://openconfig.net/yang/types/inetNETCONFopenconfig-interfaces2021-04-06yanghttp://openconfig.net/yang/interfacesNETCONFopenconfig-lldp2018-11-21yanghttp://openconfig.net/yang/lldpNETCONFopenconfig-lldp-types2018-11-21yanghttp://openconfig.net/yang/lldp/typesNETCONFopenconfig-mpls-types2021-12-01yanghttp://openconfig.net/yang/mpls-typesNETCONFopenconfig-network-instance-types2021-07-14yanghttp://openconfig.net/yang/network-instance-typesNETCONFopenconfig-ospf-types2018-11-21yanghttp://openconfig.net/yang/ospf-typesNETCONFopenconfig-ospfv22022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-area2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-area-interface2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-common2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-global2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-lsdb2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-platform2018-01-30yanghttp://openconfig.net/yang/platformNETCONFopenconfig-platform-port2021-04-22yanghttp://openconfig.net/yang/platform/portNETCONFopenconfig-platform-transceiver2021-02-23yanghttp://openconfig.net/yang/platform/transceiverNETCONFopenconfig-platform-types2021-01-18yanghttp://openconfig.net/yang/platform-typesNETCONFopenconfig-policy-types2022-11-08yanghttp://openconfig.net/yang/policy-typesNETCONFopenconfig-protocolsyanghttp://openconfig.net/yang/protocolsNETCONFopenconfig-rib-bgp2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-shared-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-table-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-tables2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-types2019-03-14yanghttp://openconfig.net/yang/rib/bgp-typesNETCONFopenconfig-routing-policy2022-05-24yanghttp://openconfig.net/yang/routing-policyNETCONFopenconfig-segment-routing-types2020-02-04yanghttp://openconfig.net/yang/segment-routing-typesNETCONFopenconfig-telemetry2018-11-21yanghttp://openconfig.net/yang/telemetryNETCONFopenconfig-telemetry-types2018-11-21yanghttp://openconfig.net/yang/telemetry-typesNETCONFopenconfig-terminal-device2021-02-23yanghttp://openconfig.net/yang/terminal-deviceNETCONFopenconfig-transport-types2021-03-22yanghttp://openconfig.net/yang/transport-typesNETCONFopenconfig-types2019-04-16yanghttp://openconfig.net/yang/openconfig-typesNETCONFopenconfig-yang-types2021-07-14yanghttp://openconfig.net/yang/types/yangNETCONFtailf-aaa2015-06-16yanghttp://tail-f.com/ns/aaa/1.1NETCONFtailf-acm2013-03-07yanghttp://tail-f.com/yang/acmNETCONFtailf-common-monitoring2013-06-14yanghttp://tail-f.com/yang/common-monitoringNETCONFtailf-confd-monitoring2013-06-14yanghttp://tail-f.com/yang/confd-monitoringNETCONFtailf-kicker2017-03-16yanghttp://tail-f.com/ns/kickerNETCONFtailf-netconf-monitoring2016-11-24yanghttp://tail-f.com/yang/netconf-monitoringNETCONFvlanyanghttp://sssup.it/yang/vlanNETCONF29netconf-sshadmin10.30.2.2062024-06-06T23:11:47+00:00200030netconf-sshadmin10.30.2.2062024-06-06T23:11:57+00:00400031netconf-sshadmin10.30.2.2062024-06-06T23:12:08+00:00200032netconf-sshadmin10.30.2.2082024-06-20T13:24:11+00:0010002024-06-06T22:51:41+00:000409000NETCONFdefault NETCONF event streamfalsemellanoxNotifications regarding the transpondertrue2024-06-06T22:51:42.135613+00:00f1285a0c7bf3c6c159ca5c87b160ec60iana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashcrypt-hash-sha-512crypt-hash-sha-256crypt-hash-md5importietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesimportietf-interfaces -[2024-06-20 13:24:11,326] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: saving back rest of message after 10226 bytes, original size 10226 -[2024-06-20 13:24:11,326] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:24:11,332] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,334] INFO:root:dic {'frequency': '192056250'} -[2024-06-20 13:24:11,334] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,335] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0'} -[2024-06-20 13:24:11,335] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,337] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8'} -[2024-06-20 13:24:11,337] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,338] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1'} -[2024-06-20 13:24:11,338] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,340] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:24:11,340] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,341] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:24:11,341] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,343] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:24:11,343] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,344] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-06-20 13:24:11,344] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,346] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:24:11,346] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,347] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:24:11,347] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,349] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:24:11,349] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,350] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-06-20 13:24:11,350] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,352] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:24:11,352] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,353] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:24:11,353] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,355] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:24:11,355] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,356] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-06-20 13:24:11,358] INFO:root:parameters {'channels': [{'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1', 'name': {'index': 'channel-1'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2', 'name': {'index': 'channel-2'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3', 'name': {'index': 'channel-3'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4', 'name': {'index': 'channel-4'}}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'ports': [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})]} -[2024-06-20 13:24:11,358] DEBUG:context.client.ContextClient:SetOpticalConfig request: {"config": "{\"channels\": [{\"frequency\": \"192056250\", \"target-output-power\": \"1.0\", \"operational-mode\": \"8\", \"line-port\": \"transceiver-1\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": [\"transceiver-1\", \"transceiver-2\", \"transceiver-3\", \"transceiver-4\"]}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}", "device_id": {"device_uuid": {"uuid": "87d74166-65e3-595e-b643-122b4fd0303f"}}} -[2024-06-20 13:24:11,385] DEBUG:context.client.ContextClient:SetOpticalConfig result: {"opticalconfig_uuid": ""} -[2024-06-20 13:24:11,385] DEBUG:device.service.Tools:results_getconfig = [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-06-20 13:24:11,386] INFO:device.service.Tools:results_getconfig = [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-06-20 13:24:11,386] INFO:ncclient.operations.rpc:[host 172.17.254.42 session-id 32] Requesting 'Get' -[2024-06-20 13:24:11,387] DEBUG:ncclient.operations.rpc:[host 172.17.254.42 session-id 32] Sync request, will wait for timeout=120 -[2024-06-20 13:24:11,458] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:24:11,458] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:11,459] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:11,459] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:11,459] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:24:11,459] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:11,460] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:24:11,460] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:24:11,460] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:24:11,461] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:24:11,461] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:11,461] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:11,461] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:11,462] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:24:11,462] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:11,462] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:24:11,462] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:24:11,463] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:24:11,464] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:24:11,464] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:11,464] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:11,464] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:11,464] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:24:11,465] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:11,465] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:24:11,465] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:24:11,465] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:24:11,466] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:24:11,466] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:11,466] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:11,466] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:11,467] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:24:11,467] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:11,467] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: appending 16376 bytes -[2024-06-20 13:24:11,467] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: fragment = " -falsefalsetruefalsefalsefalseeth0eth0truefalsetrue00
192.168.1.1192.168.1.124
DISABLEfalsetruefalse
falsefalsetrue1false
truechannel-1channel-1channel-1oc-opt-types:OPTICAL_CHANNEL1920562501.08transceiver-11920562501.08transceiver-110.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-2channel-2channel-2oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-21916000000.00transceiver-210.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-3channel-3channel-3oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-31916000000.00transceiver-310.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-4channel-4channel-4oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-41916000000.00transceiver-410.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00devicedeviceMellanoxSwitchoc-platform-types:OPERATING_SYSTEMSSSA-CNIT1.0.01.0.01.0.0610610port-1port-1port-1oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index1onos-index1channel-1channel-1channel-1port-2port-2port-2oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index2onos-index2channel-2channel-2channel-2port-3port-3port-3oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index3onos-index3channel-3channel-3channel-3port-4port-4port-4oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index4onos-index4channel-4channel-4channel-4transceiver-1transceiver-1transceiver-1oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-1transceiver-2transceiver-2transceiver-2oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-2transceiver-3transceiver-3transceiver-3oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHEREN" -[2024-06-20 13:24:11,467] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:24:11,468] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:24:11,477] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:24:11,477] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:11,478] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:11,478] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:11,478] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:24:11,478] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:11,478] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:24:11,478] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:24:11,479] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:24:11,479] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:24:11,479] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:11,479] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:11,479] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:11,479] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:24:11,480] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:11,480] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:24:11,480] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:24:11,480] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:24:11,480] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:24:11,480] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:11,481] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:11,481] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:11,481] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:24:11,481] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:11,481] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:24:11,481] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:24:11,481] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:24:11,482] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:24:11,482] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:11,482] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:11,482] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:11,482] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:24:11,482] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:11,482] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: appending 16376 bytes -[2024-06-20 13:24:11,482] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: fragment = "T_OPTICCisco400zr-QSFP-DD01156732111channel-3transceiver-4transceiver-4transceiver-4oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-4falsefalsetruefalsefalsefalse192.168.1.1192.168.1.188true65432179truefalseNONEfalse30903030falsefalsefalsetruefalsefalse0falsefalsefalsefalseREJECT_ROUTEREJECT_ROUTERFC2328_COMPATIBLE11Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONE1Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-1transceiver-111Optical channel assigned 100OPTICAL_CHANNELchannel-1100.01Optical channel assigned 100OPTICAL_CHANNELchannel-1100.022Logical channel 2DISABLEDoc-opt-types:PROT_OTNNONE2Logical channel 2DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-2transceiver-211Optical channel assigned 100OPTICAL_CHANNELchannel-2100.01Optical channel assigned 100OPTICAL_CHANNELchannel-2100.033Logical channel 3DISABLEDoc-opt-types:PROT_OTNNONE3Logical channel 3DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-3transceiver-311Optical channel assigned 100OPTICAL_CHANNELchannel-3100.01Optical channel assigned 100OPTICAL_CHANNELchannel-3100.044Logical channel 4DISABLEDoc-opt-types:PROT_OTNNONE4Logical channel 4DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-4transceiver-411Optical channel assigned 100OPTICAL_CHANNELchannel-4100.01Optical channel assigned 100OPTICAL_CHANNELchannel-4100.011FEC1Ericsson22FEC2Ericssonadmin9000100$1$lPNyHD3D$t9eLr07hXOEy1983ReE8k0/var/confd/homes/admin/.ssh/var/confd/homes/adminoper9003103$1$gflBsGcV$PdW1/SBjHWGBRlZuBfdva//var/confd/homes/oper/.ssh/var/confd/homes/operoptical9001101$1$HCxex4ow$jHGQxsbMB1dWNK97ydKv20/var/confd/homes/optical/.ssh/var/confd/homes/opticalpacket9002102$1$2CYgcCNT$bV6L4CxgDPQP9EMyZ4Rsc1/var/confd/homes/packet/.ssh/var/confd/homes/packetprivate9005103$1$2MXxtlsM$qZfOcm4WXD2c8duQXzdru0/var/confd/homes/private/.ssh/var/confd/homes/privatepublic9004100$1$1tOWUHZV$iad9vZD8aF68c6x21nhHo//var/confd/homes/public/.ssh/var/confd/homes/public0\h> 15\h# exec0actionautowizardenableexithelpstartup15configure6.4falsestartediana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashianachietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesinetietf-interfaces2014-05-08urn:ietf:params:xml:ns:yang:ietf-interfacesifietf-netconf-acm2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-acmnacmietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringncmietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsncnietf-yang-library2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-libraryyanglibnetconfrestietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesyangnetconf_netmodurn:ietf:params:xml:ns:netmod:notificationnmnetconfopenconfig-alarm-types2018-01-16http://openconfig.net/yang/alarms/typesoc-alarm-typesopenconfig-bfd2022-06-28http://openconfig.net/yang/bfdoc-bfdopenconfig-bgp2022-05-21http://openconfig.net/yang/bgpoc-bgpopenconfig-bgp-types2021-08-06http://openconfig.net/yang/bgp-typesoc-bgp-typesopenconfig-evpn-types2021-06-21http://openconfig.net/yang/evpn-typesoc-evpn-typesopenconfig-if-ethernet2022-04-20http://openconfig.net/yang/interfaces/ethernetoc-ethopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipoc-ipopenconfig-inet-types2021-08-17http://openconfig.net/yang/types/inetoc-inetopenconfig-interfaces2021-04-06http://openconfig.net/yang/interfacesoc-ifopenconfig-lldp2018-11-21http://openconfig.net/yang/lldpoc-lldpopenconfig-lldp-types2018-11-21http://openconfig.net/yang/lldp/typesoc-lldp-typesopenconfig-mpls-types2021-12-01http://openconfig.net/yang/mpls-typesoc-mplstopenconfig-network-instance-types2021-07-14http://openconfig.net/yang/network-instance-typesoc-ni-typesopenconfig-ospf-types2018-11-21http://openconfig.net/yang/ospf-typesoc-ospf-typesNETCONFdefault NETCONF event streamfalsemellanoxNotifications regarding the transpondertrue2024-06-06T22:51:42.135613+00:00truepermitpermitpermittrue000adminadminprivateoperoperpublicoptopticalpckpacketany-group*get*/readpermittailf-aaa-authenticationtailf-aaa/aaa/authentication/users/user[name='$USER']read updatepermittailf-aaa-usertailf-aaa/user[name='$USER']create read update deletepermittailf-webui-usertailf-webui/webui/data-stores/user-profile[username='$USER']create read update deletepermitpacketpckvlanvlan/switched-vlanscreate read update deletepermitterminal-device*/terminal-devicecreate update deletedenycomponents*/componentscreate update deletedenyopticaloptterminal-device*/terminal-devicecreate read update deletepermitcomponents*/componentscreate read update deletepermitvlanvlan/switched-vlanscreate update deletedenyadminadminany-accesspermiturn:ietf:params:netconf:base:1.0urn:ietf:params:netconf:base:1.1urn:ietf:params:netconf:capability:writable-running:1.0urn:ietf:params:netconf:capability:xpath:1.0urn:ietf:params:netconf:capability:validate:1.0urn:ietf:params:netconf:capability:validate:1.1urn:ietf:params:netconf:capability:rollback-on-error:1.0urn:ietf:params:netconf:capability:notification:1.0urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all-taggedurn:ietf:params:netconf:capability:yang-library:1.0?revision=2016-06-21&module-set-id=f1285a0c7bf3c6c159ca5c87b160ec60http://tail-f.com/ns/netconf/extensionshttp://openconfig.net/yang/alarms/types?module=openconfig-alarm-types&revision=2018-01-16http://openconfig.net/yang/bfd?module=openconfig-bfd&revision=2022-06-28http://openconfig.net/yang/bgp?module=openconfig-bgp&revision=2022-05-21http://openconfig.net/yang/bgp-types?module=openconfig-bgp-types&revision=2021-08-06http://openconfig.net/yang/evpn-types?module=openconfig-evpn-types&revision=2021-06-21http://openconfig.net/yang/interfaces?module=openconfig-interfaces&revision=2021-04-06http://openconfig.net/yang/interfaces/ethernet?module=openconfig-if-ethernet&revision=2022-04-20http://openconfig.net/yang/interfaces/ip?module=openconfig-if-ip&revision=2019-01-08http://openconfig.net/yang/lldp?module=openconfig-lldp&revision=2018-11-21http://openconfig.net/yang/lldp/types?module=openconfig-lldp-types&revision=2018-11-21http://openconfig.net/yang/mpls-types?module=openconfig-mpls-types&revision=2021-12-01http://openconfig.net/yang/network-instance-types?module=openconfig-network-instance-types&revision=2021-07-14http://openconfig.net/yang/openconfig-types?module=openconfig-types&revision=2019-04-16http://openconfig.net/yang/ospf-types?module=openconfig-ospf-types&revision=2018-11-21http://openconfig.net/yang/ospfv2?module=openconfig-ospfv2&revision=2022-02-10http://openconfig.net/yang/platform?module=openconfig-platform&revision=2018-01-30http://openconfig.net/yang/platform-types?module=openconfig-platform-types&revision=2021-01-18http://openconfig.net/yang/platform/port?module=openconfig-platform-port&revision=2021-04-22http://openconfig.net/yang/platform/transceiver?module=openconfig-platform-transceiver&revision=2021-02-23http://openconfig.net/yang/policy-types?module=openconfig-policy-types&revision=2022-11-08http://openconfig.net/yang/protocols?module=openconfig-protocolshttp://openconfig.net/yang/rib/bgp?module=openconfig-rib-bgp&revision=2022-06-06http://openconfig.net/yang/rib/bgp-types?module=openconfig-rib-bgp-types&revision=2019-03-14http://openconfig.net/yang/routing-policy?module=openconfig-routing-policy&revision=2022-05-24http://openconfig.net/yang/segment-routing-types?module=openconfig-segment-routing-types&revision=2020-02-04http://openconfig.net/yang/telemetry?module=openconfig-telemetry&revision=2018-11-21http://openconfig.net/yang/telemetry-types?module=openconfig-telemetry-types&revision=2018-11-21http://openconfig.net/yang/terminal-device?module=openconfig-terminal-device&revision=2021-02-23http://openconfig.net/yang/transport-types?module=openconfig-transport-types&revision=2021-03-22http://openconfig.net/yang/types/inet?module=openconfig-inet-types&revision=2021-08-17http://openconfig.net/yang/types/yang?module=openconfig-yang-types&revision=2021-07-14http://sssup.it/yang/vlan?module=vlanhttp://tail-f.com/ns/aaa/1.1?module=tailf-aaa&revision=2015-06-16http://tail-f.com/ns/kicker?module=tailf-kicker&revision=2017-03-16http://tail-f.com/yang/acm?module=tailf-acm&revision=2013-03-07http://tail-f.com/yang/common-monitoring?module=tailf-common-monitoring&revision=2013-06-14http://tail-f.com/yang/confd-monitoring?module=tailf-confd-monitoring&revision=2013-06-14http://tail-f.com/yang/netconf-monitoring?module=tailf-netconf-monitoring&revision=2016-11-24urn:ietf:params:xml:ns:yang:iana-crypt-hash?module=iana-crypt-hash&revision=2014-08-06&features=crypt-hash-sha-512,crypt-hash-sha-256,crypt-hash-md5urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&revision=2013-07-15urn:ietf:params:xml:ns:yang:ietf-interfaces?module=ietf-interfaces&revision=2014-05-08&features=pre-provisioning,if-mib,arbitrary-namesurn:ietf:params:xml:ns:yang:ietf-netconf-acm?module=ietf-netconf-acm&revision=2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&revision=2010-10-04urn:ietf:params:xml:ns:yang:ietf-" -[2024-06-20 13:24:11,494] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:24:11,494] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:24:11,511] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:24:11,511] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:11,511] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:11,512] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:11,512] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:24:11,512] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:11,512] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:24:11,512] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:24:11,512] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:24:11,512] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:24:11,512] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:11,512] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:11,513] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:11,513] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:24:11,513] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:11,513] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:24:11,513] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:24:11,513] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:24:11,513] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:24:11,513] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:11,513] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:11,513] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:11,514] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:24:11,514] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:11,514] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:24:11,514] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:24:11,514] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:24:11,515] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:24:11,515] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:11,515] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:11,515] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:11,515] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:24:11,515] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:11,516] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: appending 16376 bytes -[2024-06-20 13:24:11,516] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: fragment = "netconf-notifications?module=ietf-netconf-notifications&revision=2012-02-06urn:ietf:params:xml:ns:yang:ietf-yang-library?module=ietf-yang-library&revision=2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&revision=2013-07-15urn:ietf:params:xml:ns:netconf:base:1.0?module=ietf-netconf&revision=2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?module=ietf-netconf-with-defaults&revision=2011-06-01running1717-750545-631285iana-crypt-hash2014-08-06yangurn:ietf:params:xml:ns:yang:iana-crypt-hashNETCONFietf-inet-types2013-07-15yangurn:ietf:params:xml:ns:yang:ietf-inet-typesNETCONFietf-interfaces2014-05-08yangurn:ietf:params:xml:ns:yang:ietf-interfacesNETCONFietf-netconf2011-06-01yangurn:ietf:params:xml:ns:netconf:base:1.0NETCONFietf-netconf-acm2012-02-22yangurn:ietf:params:xml:ns:yang:ietf-netconf-acmNETCONFietf-netconf-monitoring2010-10-04yangurn:ietf:params:xml:ns:yang:ietf-netconf-monitoringNETCONFietf-netconf-notifications2012-02-06yangurn:ietf:params:xml:ns:yang:ietf-netconf-notificationsNETCONFietf-netconf-with-defaults2011-06-01yangurn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsNETCONFietf-yang-library2016-06-21yangurn:ietf:params:xml:ns:yang:ietf-yang-libraryNETCONFietf-yang-types2013-07-15yangurn:ietf:params:xml:ns:yang:ietf-yang-typesNETCONFopenconfig-alarm-types2018-01-16yanghttp://openconfig.net/yang/alarms/typesNETCONFopenconfig-bfd2022-06-28yanghttp://openconfig.net/yang/bfdNETCONFopenconfig-bgp2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common-multiprotocol2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common-structure2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-errors2021-08-06yanghttp://openconfig.net/yang/bgp-typesNETCONFopenconfig-bgp-global2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-neighbor2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-peer-group2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-types2021-08-06yanghttp://openconfig.net/yang/bgp-typesNETCONFopenconfig-evpn-types2021-06-21yanghttp://openconfig.net/yang/evpn-typesNETCONFopenconfig-if-ethernet2022-04-20yanghttp://openconfig.net/yang/interfaces/ethernetNETCONFopenconfig-if-ip2019-01-08yanghttp://openconfig.net/yang/interfaces/ipNETCONFopenconfig-inet-types2021-08-17yanghttp://openconfig.net/yang/types/inetNETCONFopenconfig-interfaces2021-04-06yanghttp://openconfig.net/yang/interfacesNETCONFopenconfig-lldp2018-11-21yanghttp://openconfig.net/yang/lldpNETCONFopenconfig-lldp-types2018-11-21yanghttp://openconfig.net/yang/lldp/typesNETCONFopenconfig-mpls-types2021-12-01yanghttp://openconfig.net/yang/mpls-typesNETCONFopenconfig-network-instance-types2021-07-14yanghttp://openconfig.net/yang/network-instance-typesNETCONFopenconfig-ospf-types2018-11-21yanghttp://openconfig.net/yang/ospf-typesNETCONFopenconfig-ospfv22022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-area2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-area-interface2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-common2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-global2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-lsdb2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-platform2018-01-30yanghttp://openconfig.net/yang/platformNETCONFopenconfig-platform-port2021-04-22yanghttp://openconfig.net/yang/platform/portNETCONFopenconfig-platform-transceiver2021-02-23yanghttp://openconfig.net/yang/platform/transceiverNETCONFopenconfig-platform-types2021-01-18yanghttp://openconfig.net/yang/platform-typesNETCONFopenconfig-policy-types2022-11-08yanghttp://openconfig.net/yang/policy-typesNETCONFopenconfig-protocolsyanghttp://openconfig.net/yang/protocolsNETCONFopenconfig-rib-bgp2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-shared-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-table-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-tables2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-types2019-03-14yanghttp://openconfig.net/yang/rib/bgp-typesNETCONFopenconfig-routing-policy2022-05-24yanghttp://openconfig.net/yang/routing-policyNETCONFopenconfig-segment-routing-types2020-02-04yanghttp://openconfig.net/yang/segment-routing-typesNETCONFopenconfig-telemetry2018-11-21yanghttp://openconfig.net/yang/telemetryNETCONFopenconfig-telemetry-types2018-11-21yanghttp://openconfig.net/yang/telemetry-typesNETCONFopenconfig-terminal-device2021-02-23yanghttp://openconfig.net/yang/terminal-deviceNETCONFopenconfig-transport-types2021-03-22yanghttp://openconfig.net/yang/transport-typesNETCONFopenconfig-types2019-04-16yanghttp://openconfig.net/yang/openconfig-typesNETCONFopenconfig-yang-types2021-07-14yanghttp://openconfig.net/yang/types/yangNETCONFtailf-aaa2015-06-16yanghttp://tail-f.com/ns/aaa/1.1NETCONFtailf-acm2013-03-07yanghttp://tail-f.com/yang/acmNETCONFtailf-common-monitoring2013-06-14yanghttp://tail-f.com/yang/common-monitoringNETCONFtailf-confd-monitoring2013-06-14yanghttp://tail-f.com/yang/confd-monitoringNETCONFtailf-kicker2017-03-16yanghttp://tail-f.com/ns/kickerNETCONFtailf-netconf-monitoring2016-11-24yanghttp://tail-f.com/yang/netconf-monitoringNETCONFvlanyanghttp://sssup.it/yang/vlanNETCONF29netconf-sshadmin10.30.2.2062024-06-06T23:11:47+00:00200030netconf-sshadmin10.30.2.2062024-06-06T23:11:57+00:00400031netconf-sshadmin10.30.2.2062024-06-06T23:12:08+00:00200032netconf-sshadmin10.30.2.2082024-06-20T13:24:11+00:0020002024-06-06T22:51:41+00:0004010000NETCONFdefault NETCONF event streamfalsemellanoxNotifications regarding the transpondertrue2024-06-06T22:51:42.135613+00:00f1285a0c7bf3c6c159ca5c87b160ec60iana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashcrypt-hash-sha-512crypt-hash-sha-256crypt-hash-md5importietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesimportietf-interfaces -[2024-06-20 13:24:11,525] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: saving back rest of message after 10227 bytes, original size 10227 -[2024-06-20 13:24:11,525] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:24:11,532] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,534] INFO:root:dic {'frequency': '192056250'} -[2024-06-20 13:24:11,534] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,535] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0'} -[2024-06-20 13:24:11,535] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,536] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8'} -[2024-06-20 13:24:11,537] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,538] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1'} -[2024-06-20 13:24:11,539] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,540] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:24:11,540] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,542] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:24:11,542] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,543] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:24:11,543] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,545] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-06-20 13:24:11,545] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,547] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:24:11,547] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,548] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:24:11,548] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,550] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:24:11,550] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,551] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-06-20 13:24:11,551] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,553] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:24:11,553] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,554] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:24:11,554] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,556] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:24:11,556] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:11,557] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-06-20 13:24:11,559] INFO:root:parameters {'channels': [{'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1', 'name': {'index': 'channel-1'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2', 'name': {'index': 'channel-2'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3', 'name': {'index': 'channel-3'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4', 'name': {'index': 'channel-4'}}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'ports': [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})]} -[2024-06-20 13:24:11,559] DEBUG:context.client.ContextClient:SetOpticalConfig request: {"config": "{\"channels\": [{\"frequency\": \"192056250\", \"target-output-power\": \"1.0\", \"operational-mode\": \"8\", \"line-port\": \"transceiver-1\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": [\"transceiver-1\", \"transceiver-2\", \"transceiver-3\", \"transceiver-4\"]}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}", "device_id": {"device_uuid": {"uuid": "87d74166-65e3-595e-b643-122b4fd0303f"}}} -[2024-06-20 13:24:11,583] DEBUG:context.client.ContextClient:SetOpticalConfig result: {"opticalconfig_uuid": ""} -[2024-06-20 13:24:11,584] DEBUG:context.client.ContextClient:SetDevice request: {"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.42"}}, {"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}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[1]", "resource_value": "{\"type\": \"port-1\", \"uuid\": \"1\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[2]", "resource_value": "{\"type\": \"port-2\", \"uuid\": \"2\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[3]", "resource_value": "{\"type\": \"port-3\", \"uuid\": \"3\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[4]", "resource_value": "{\"type\": \"port-4\", \"uuid\": \"4\"}"}}]}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "87d74166-65e3-595e-b643-122b4fd0303f"}}, "endpoint_uuid": {"uuid": "1"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "port-1", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "87d74166-65e3-595e-b643-122b4fd0303f"}}, "endpoint_uuid": {"uuid": "2"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "port-2", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "87d74166-65e3-595e-b643-122b4fd0303f"}}, "endpoint_uuid": {"uuid": "3"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "port-3", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "87d74166-65e3-595e-b643-122b4fd0303f"}}, "endpoint_uuid": {"uuid": "4"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "port-4", "kpi_sample_types": [], "name": ""}], "device_id": {"device_uuid": {"uuid": "87d74166-65e3-595e-b643-122b4fd0303f"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-transponder", "name": "T2.1"} -[2024-06-20 13:24:11,628] DEBUG:context.client.ContextClient:SetDevice result: {"device_uuid": {"uuid": "87d74166-65e3-595e-b643-122b4fd0303f"}} -[2024-06-20 13:24:11,629] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "87d74166-65e3-595e-b643-122b4fd0303f"}}]}, "include_components": false, "include_config_rules": false, "include_endpoints": true} -[2024-06-20 13:24:11,651] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": [{"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"}]} -[2024-06-20 13:24:11,652] DEBUG:device.service.DeviceServiceServicerImpl:AddDevice reply: {"device_uuid": {"uuid": "87d74166-65e3-595e-b643-122b4fd0303f"}} -[2024-06-20 13:24:16,605] DEBUG:device.service.DeviceServiceServicerImpl:AddDevice request: {"components": [], "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.42"}}, {"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": [], "device_id": {"device_uuid": {"uuid": "T2.2"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_DISABLED", "device_type": "optical-transponder", "name": ""} -[2024-06-20 13:24:16,606] DEBUG:context.client.ContextClient:Creating channel to 10.152.183.195:1010... -[2024-06-20 13:24:16,606] DEBUG:context.client.ContextClient:Channel created -[2024-06-20 13:24:16,606] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "T2.2"}}]}, "include_components": true, "include_config_rules": true, "include_endpoints": true} -[2024-06-20 13:24:16,614] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": []} -[2024-06-20 13:24:16,615] DEBUG:context.client.ContextClient:SetDevice request: {"components": [], "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.42"}}, {"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": [], "device_id": {"device_uuid": {"uuid": "T2.2"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_UNDEFINED", "device_type": "optical-transponder", "name": ""} -[2024-06-20 13:24:16,648] DEBUG:context.client.ContextClient:SetDevice result: {"device_uuid": {"uuid": "012c4e67-0024-5f30-b527-55ec6daf2639"}} -[2024-06-20 13:24:16,649] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "012c4e67-0024-5f30-b527-55ec6daf2639"}}]}, "include_components": true, "include_config_rules": true, "include_endpoints": true} -[2024-06-20 13:24:16,672] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": [{"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.42"}}, {"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": [], "device_id": {"device_uuid": {"uuid": "012c4e67-0024-5f30-b527-55ec6daf2639"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_UNDEFINED", "device_type": "optical-transponder", "name": "T2.2"}]} -[2024-06-20 13:24:16,673] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(012c4e67-0024-5f30-b527-55ec6daf2639) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-06-20 13:24:16,673] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(012c4e67-0024-5f30-b527-55ec6daf2639) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-06-20 13:24:16,674] DEBUG:ncclient.transport.session:[host None session 0x7fa749889f40] created: client_capabilities= -[2024-06-20 13:24:16,815] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session 0x7fa749889f40] parsing netconf v1.0 -[2024-06-20 13:24:16,816] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session 0x7fa749889f40] parsing netconf v1.0 -[2024-06-20 13:24:16,818] INFO:root:settings {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-06-20 13:24:16,819] INFO:ncclient.operations.rpc:[host 172.17.254.42 session-id 33] Requesting 'Get' -[2024-06-20 13:24:16,819] DEBUG:ncclient.operations.rpc:[host 172.17.254.42 session-id 33] Sync request, will wait for timeout=120 -[2024-06-20 13:24:16,976] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: starting -[2024-06-20 13:24:16,976] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:16,976] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:16,976] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:16,976] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:24:16,977] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:16,977] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:24:16,977] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:24:16,977] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: ending -[2024-06-20 13:24:16,977] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: starting -[2024-06-20 13:24:16,977] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:16,977] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:16,977] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:16,977] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:24:16,978] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:16,978] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:24:16,978] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:24:16,978] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: ending -[2024-06-20 13:24:16,978] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: starting -[2024-06-20 13:24:16,978] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:16,978] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:16,978] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:16,978] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:24:16,978] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:16,979] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:24:16,979] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:24:16,979] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: ending -[2024-06-20 13:24:16,979] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: starting -[2024-06-20 13:24:16,979] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:16,979] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:16,979] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:16,979] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:24:16,979] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:16,980] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: appending 16376 bytes -[2024-06-20 13:24:16,980] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: fragment = " -falsefalsetruefalsefalsefalseeth0eth0truefalsetrue00
192.168.1.1192.168.1.124
DISABLEfalsetruefalse
falsefalsetrue1false
truechannel-1channel-1channel-1oc-opt-types:OPTICAL_CHANNEL1920562501.08transceiver-11920562501.08transceiver-110.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-2channel-2channel-2oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-21916000000.00transceiver-210.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-3channel-3channel-3oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-31916000000.00transceiver-310.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-4channel-4channel-4oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-41916000000.00transceiver-410.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00devicedeviceMellanoxSwitchoc-platform-types:OPERATING_SYSTEMSSSA-CNIT1.0.01.0.01.0.0610610port-1port-1port-1oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index1onos-index1channel-1channel-1channel-1port-2port-2port-2oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index2onos-index2channel-2channel-2channel-2port-3port-3port-3oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index3onos-index3channel-3channel-3channel-3port-4port-4port-4oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index4onos-index4channel-4channel-4channel-4transceiver-1transceiver-1transceiver-1oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-1transceiver-2transceiver-2transceiver-2oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-2transceiver-3transceiver-3transceiver-3oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHEREN" -[2024-06-20 13:24:16,980] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:24:16,980] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: ending -[2024-06-20 13:24:17,007] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: starting -[2024-06-20 13:24:17,007] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:17,007] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:17,007] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:17,007] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:24:17,007] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:17,007] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:24:17,008] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:24:17,008] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: ending -[2024-06-20 13:24:17,008] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: starting -[2024-06-20 13:24:17,008] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:17,008] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:17,008] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:17,008] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:24:17,008] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:17,008] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:24:17,009] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:24:17,009] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: ending -[2024-06-20 13:24:17,009] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: starting -[2024-06-20 13:24:17,009] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:17,009] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:17,009] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:17,009] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:24:17,009] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:17,009] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:24:17,009] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:24:17,010] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: ending -[2024-06-20 13:24:17,010] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: starting -[2024-06-20 13:24:17,010] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:17,010] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:17,010] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:17,010] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:24:17,010] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:17,010] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: appending 16376 bytes -[2024-06-20 13:24:17,010] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: fragment = "T_OPTICCisco400zr-QSFP-DD01156732111channel-3transceiver-4transceiver-4transceiver-4oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-4falsefalsetruefalsefalsefalse192.168.1.1192.168.1.188true65432179truefalseNONEfalse30903030falsefalsefalsetruefalsefalse0falsefalsefalsefalseREJECT_ROUTEREJECT_ROUTERFC2328_COMPATIBLE11Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONE1Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-1transceiver-111Optical channel assigned 100OPTICAL_CHANNELchannel-1100.01Optical channel assigned 100OPTICAL_CHANNELchannel-1100.022Logical channel 2DISABLEDoc-opt-types:PROT_OTNNONE2Logical channel 2DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-2transceiver-211Optical channel assigned 100OPTICAL_CHANNELchannel-2100.01Optical channel assigned 100OPTICAL_CHANNELchannel-2100.033Logical channel 3DISABLEDoc-opt-types:PROT_OTNNONE3Logical channel 3DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-3transceiver-311Optical channel assigned 100OPTICAL_CHANNELchannel-3100.01Optical channel assigned 100OPTICAL_CHANNELchannel-3100.044Logical channel 4DISABLEDoc-opt-types:PROT_OTNNONE4Logical channel 4DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-4transceiver-411Optical channel assigned 100OPTICAL_CHANNELchannel-4100.01Optical channel assigned 100OPTICAL_CHANNELchannel-4100.011FEC1Ericsson22FEC2Ericssonadmin9000100$1$lPNyHD3D$t9eLr07hXOEy1983ReE8k0/var/confd/homes/admin/.ssh/var/confd/homes/adminoper9003103$1$gflBsGcV$PdW1/SBjHWGBRlZuBfdva//var/confd/homes/oper/.ssh/var/confd/homes/operoptical9001101$1$HCxex4ow$jHGQxsbMB1dWNK97ydKv20/var/confd/homes/optical/.ssh/var/confd/homes/opticalpacket9002102$1$2CYgcCNT$bV6L4CxgDPQP9EMyZ4Rsc1/var/confd/homes/packet/.ssh/var/confd/homes/packetprivate9005103$1$2MXxtlsM$qZfOcm4WXD2c8duQXzdru0/var/confd/homes/private/.ssh/var/confd/homes/privatepublic9004100$1$1tOWUHZV$iad9vZD8aF68c6x21nhHo//var/confd/homes/public/.ssh/var/confd/homes/public0\h> 15\h# exec0actionautowizardenableexithelpstartup15configure6.4falsestartediana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashianachietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesinetietf-interfaces2014-05-08urn:ietf:params:xml:ns:yang:ietf-interfacesifietf-netconf-acm2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-acmnacmietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringncmietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsncnietf-yang-library2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-libraryyanglibnetconfrestietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesyangnetconf_netmodurn:ietf:params:xml:ns:netmod:notificationnmnetconfopenconfig-alarm-types2018-01-16http://openconfig.net/yang/alarms/typesoc-alarm-typesopenconfig-bfd2022-06-28http://openconfig.net/yang/bfdoc-bfdopenconfig-bgp2022-05-21http://openconfig.net/yang/bgpoc-bgpopenconfig-bgp-types2021-08-06http://openconfig.net/yang/bgp-typesoc-bgp-typesopenconfig-evpn-types2021-06-21http://openconfig.net/yang/evpn-typesoc-evpn-typesopenconfig-if-ethernet2022-04-20http://openconfig.net/yang/interfaces/ethernetoc-ethopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipoc-ipopenconfig-inet-types2021-08-17http://openconfig.net/yang/types/inetoc-inetopenconfig-interfaces2021-04-06http://openconfig.net/yang/interfacesoc-ifopenconfig-lldp2018-11-21http://openconfig.net/yang/lldpoc-lldpopenconfig-lldp-types2018-11-21http://openconfig.net/yang/lldp/typesoc-lldp-typesopenconfig-mpls-types2021-12-01http://openconfig.net/yang/mpls-typesoc-mplstopenconfig-network-instance-types2021-07-14http://openconfig.net/yang/network-instance-typesoc-ni-typesopenconfig-ospf-types2018-11-21http://openconfig.net/yang/ospf-typesoc-ospf-typesNETCONFdefault NETCONF event streamfalsemellanoxNotifications regarding the transpondertrue2024-06-06T22:51:42.135613+00:00truepermitpermitpermittrue000adminadminprivateoperoperpublicoptopticalpckpacketany-group*get*/readpermittailf-aaa-authenticationtailf-aaa/aaa/authentication/users/user[name='$USER']read updatepermittailf-aaa-usertailf-aaa/user[name='$USER']create read update deletepermittailf-webui-usertailf-webui/webui/data-stores/user-profile[username='$USER']create read update deletepermitpacketpckvlanvlan/switched-vlanscreate read update deletepermitterminal-device*/terminal-devicecreate update deletedenycomponents*/componentscreate update deletedenyopticaloptterminal-device*/terminal-devicecreate read update deletepermitcomponents*/componentscreate read update deletepermitvlanvlan/switched-vlanscreate update deletedenyadminadminany-accesspermiturn:ietf:params:netconf:base:1.0urn:ietf:params:netconf:base:1.1urn:ietf:params:netconf:capability:writable-running:1.0urn:ietf:params:netconf:capability:xpath:1.0urn:ietf:params:netconf:capability:validate:1.0urn:ietf:params:netconf:capability:validate:1.1urn:ietf:params:netconf:capability:rollback-on-error:1.0urn:ietf:params:netconf:capability:notification:1.0urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all-taggedurn:ietf:params:netconf:capability:yang-library:1.0?revision=2016-06-21&module-set-id=f1285a0c7bf3c6c159ca5c87b160ec60http://tail-f.com/ns/netconf/extensionshttp://openconfig.net/yang/alarms/types?module=openconfig-alarm-types&revision=2018-01-16http://openconfig.net/yang/bfd?module=openconfig-bfd&revision=2022-06-28http://openconfig.net/yang/bgp?module=openconfig-bgp&revision=2022-05-21http://openconfig.net/yang/bgp-types?module=openconfig-bgp-types&revision=2021-08-06http://openconfig.net/yang/evpn-types?module=openconfig-evpn-types&revision=2021-06-21http://openconfig.net/yang/interfaces?module=openconfig-interfaces&revision=2021-04-06http://openconfig.net/yang/interfaces/ethernet?module=openconfig-if-ethernet&revision=2022-04-20http://openconfig.net/yang/interfaces/ip?module=openconfig-if-ip&revision=2019-01-08http://openconfig.net/yang/lldp?module=openconfig-lldp&revision=2018-11-21http://openconfig.net/yang/lldp/types?module=openconfig-lldp-types&revision=2018-11-21http://openconfig.net/yang/mpls-types?module=openconfig-mpls-types&revision=2021-12-01http://openconfig.net/yang/network-instance-types?module=openconfig-network-instance-types&revision=2021-07-14http://openconfig.net/yang/openconfig-types?module=openconfig-types&revision=2019-04-16http://openconfig.net/yang/ospf-types?module=openconfig-ospf-types&revision=2018-11-21http://openconfig.net/yang/ospfv2?module=openconfig-ospfv2&revision=2022-02-10http://openconfig.net/yang/platform?module=openconfig-platform&revision=2018-01-30http://openconfig.net/yang/platform-types?module=openconfig-platform-types&revision=2021-01-18http://openconfig.net/yang/platform/port?module=openconfig-platform-port&revision=2021-04-22http://openconfig.net/yang/platform/transceiver?module=openconfig-platform-transceiver&revision=2021-02-23http://openconfig.net/yang/policy-types?module=openconfig-policy-types&revision=2022-11-08http://openconfig.net/yang/protocols?module=openconfig-protocolshttp://openconfig.net/yang/rib/bgp?module=openconfig-rib-bgp&revision=2022-06-06http://openconfig.net/yang/rib/bgp-types?module=openconfig-rib-bgp-types&revision=2019-03-14http://openconfig.net/yang/routing-policy?module=openconfig-routing-policy&revision=2022-05-24http://openconfig.net/yang/segment-routing-types?module=openconfig-segment-routing-types&revision=2020-02-04http://openconfig.net/yang/telemetry?module=openconfig-telemetry&revision=2018-11-21http://openconfig.net/yang/telemetry-types?module=openconfig-telemetry-types&revision=2018-11-21http://openconfig.net/yang/terminal-device?module=openconfig-terminal-device&revision=2021-02-23http://openconfig.net/yang/transport-types?module=openconfig-transport-types&revision=2021-03-22http://openconfig.net/yang/types/inet?module=openconfig-inet-types&revision=2021-08-17http://openconfig.net/yang/types/yang?module=openconfig-yang-types&revision=2021-07-14http://sssup.it/yang/vlan?module=vlanhttp://tail-f.com/ns/aaa/1.1?module=tailf-aaa&revision=2015-06-16http://tail-f.com/ns/kicker?module=tailf-kicker&revision=2017-03-16http://tail-f.com/yang/acm?module=tailf-acm&revision=2013-03-07http://tail-f.com/yang/common-monitoring?module=tailf-common-monitoring&revision=2013-06-14http://tail-f.com/yang/confd-monitoring?module=tailf-confd-monitoring&revision=2013-06-14http://tail-f.com/yang/netconf-monitoring?module=tailf-netconf-monitoring&revision=2016-11-24urn:ietf:params:xml:ns:yang:iana-crypt-hash?module=iana-crypt-hash&revision=2014-08-06&features=crypt-hash-sha-512,crypt-hash-sha-256,crypt-hash-md5urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&revision=2013-07-15urn:ietf:params:xml:ns:yang:ietf-interfaces?module=ietf-interfaces&revision=2014-05-08&features=pre-provisioning,if-mib,arbitrary-namesurn:ietf:params:xml:ns:yang:ietf-netconf-acm?module=ietf-netconf-acm&revision=2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&revision=2010-10-04urn:ietf:params:xml:ns:yang:ietf-" -[2024-06-20 13:24:17,053] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:24:17,053] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: ending -[2024-06-20 13:24:17,081] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: starting -[2024-06-20 13:24:17,082] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:17,082] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:17,082] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:17,082] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:24:17,082] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:17,082] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:24:17,082] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:24:17,082] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: ending -[2024-06-20 13:24:17,082] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: starting -[2024-06-20 13:24:17,082] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:17,083] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:17,083] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:17,083] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:24:17,083] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:17,083] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:24:17,083] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:24:17,083] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: ending -[2024-06-20 13:24:17,083] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: starting -[2024-06-20 13:24:17,083] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:17,083] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:17,083] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:17,084] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:24:17,084] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:17,084] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:24:17,084] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:24:17,084] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: ending -[2024-06-20 13:24:17,084] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: starting -[2024-06-20 13:24:17,084] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:17,084] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:17,084] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:17,084] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:24:17,085] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:17,085] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: appending 16376 bytes -[2024-06-20 13:24:17,085] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: fragment = "netconf-notifications?module=ietf-netconf-notifications&revision=2012-02-06urn:ietf:params:xml:ns:yang:ietf-yang-library?module=ietf-yang-library&revision=2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&revision=2013-07-15urn:ietf:params:xml:ns:netconf:base:1.0?module=ietf-netconf&revision=2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?module=ietf-netconf-with-defaults&revision=2011-06-01running1717-750545-631285iana-crypt-hash2014-08-06yangurn:ietf:params:xml:ns:yang:iana-crypt-hashNETCONFietf-inet-types2013-07-15yangurn:ietf:params:xml:ns:yang:ietf-inet-typesNETCONFietf-interfaces2014-05-08yangurn:ietf:params:xml:ns:yang:ietf-interfacesNETCONFietf-netconf2011-06-01yangurn:ietf:params:xml:ns:netconf:base:1.0NETCONFietf-netconf-acm2012-02-22yangurn:ietf:params:xml:ns:yang:ietf-netconf-acmNETCONFietf-netconf-monitoring2010-10-04yangurn:ietf:params:xml:ns:yang:ietf-netconf-monitoringNETCONFietf-netconf-notifications2012-02-06yangurn:ietf:params:xml:ns:yang:ietf-netconf-notificationsNETCONFietf-netconf-with-defaults2011-06-01yangurn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsNETCONFietf-yang-library2016-06-21yangurn:ietf:params:xml:ns:yang:ietf-yang-libraryNETCONFietf-yang-types2013-07-15yangurn:ietf:params:xml:ns:yang:ietf-yang-typesNETCONFopenconfig-alarm-types2018-01-16yanghttp://openconfig.net/yang/alarms/typesNETCONFopenconfig-bfd2022-06-28yanghttp://openconfig.net/yang/bfdNETCONFopenconfig-bgp2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common-multiprotocol2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common-structure2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-errors2021-08-06yanghttp://openconfig.net/yang/bgp-typesNETCONFopenconfig-bgp-global2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-neighbor2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-peer-group2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-types2021-08-06yanghttp://openconfig.net/yang/bgp-typesNETCONFopenconfig-evpn-types2021-06-21yanghttp://openconfig.net/yang/evpn-typesNETCONFopenconfig-if-ethernet2022-04-20yanghttp://openconfig.net/yang/interfaces/ethernetNETCONFopenconfig-if-ip2019-01-08yanghttp://openconfig.net/yang/interfaces/ipNETCONFopenconfig-inet-types2021-08-17yanghttp://openconfig.net/yang/types/inetNETCONFopenconfig-interfaces2021-04-06yanghttp://openconfig.net/yang/interfacesNETCONFopenconfig-lldp2018-11-21yanghttp://openconfig.net/yang/lldpNETCONFopenconfig-lldp-types2018-11-21yanghttp://openconfig.net/yang/lldp/typesNETCONFopenconfig-mpls-types2021-12-01yanghttp://openconfig.net/yang/mpls-typesNETCONFopenconfig-network-instance-types2021-07-14yanghttp://openconfig.net/yang/network-instance-typesNETCONFopenconfig-ospf-types2018-11-21yanghttp://openconfig.net/yang/ospf-typesNETCONFopenconfig-ospfv22022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-area2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-area-interface2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-common2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-global2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-lsdb2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-platform2018-01-30yanghttp://openconfig.net/yang/platformNETCONFopenconfig-platform-port2021-04-22yanghttp://openconfig.net/yang/platform/portNETCONFopenconfig-platform-transceiver2021-02-23yanghttp://openconfig.net/yang/platform/transceiverNETCONFopenconfig-platform-types2021-01-18yanghttp://openconfig.net/yang/platform-typesNETCONFopenconfig-policy-types2022-11-08yanghttp://openconfig.net/yang/policy-typesNETCONFopenconfig-protocolsyanghttp://openconfig.net/yang/protocolsNETCONFopenconfig-rib-bgp2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-shared-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-table-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-tables2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-types2019-03-14yanghttp://openconfig.net/yang/rib/bgp-typesNETCONFopenconfig-routing-policy2022-05-24yanghttp://openconfig.net/yang/routing-policyNETCONFopenconfig-segment-routing-types2020-02-04yanghttp://openconfig.net/yang/segment-routing-typesNETCONFopenconfig-telemetry2018-11-21yanghttp://openconfig.net/yang/telemetryNETCONFopenconfig-telemetry-types2018-11-21yanghttp://openconfig.net/yang/telemetry-typesNETCONFopenconfig-terminal-device2021-02-23yanghttp://openconfig.net/yang/terminal-deviceNETCONFopenconfig-transport-types2021-03-22yanghttp://openconfig.net/yang/transport-typesNETCONFopenconfig-types2019-04-16yanghttp://openconfig.net/yang/openconfig-typesNETCONFopenconfig-yang-types2021-07-14yanghttp://openconfig.net/yang/types/yangNETCONFtailf-aaa2015-06-16yanghttp://tail-f.com/ns/aaa/1.1NETCONFtailf-acm2013-03-07yanghttp://tail-f.com/yang/acmNETCONFtailf-common-monitoring2013-06-14yanghttp://tail-f.com/yang/common-monitoringNETCONFtailf-confd-monitoring2013-06-14yanghttp://tail-f.com/yang/confd-monitoringNETCONFtailf-kicker2017-03-16yanghttp://tail-f.com/ns/kickerNETCONFtailf-netconf-monitoring2016-11-24yanghttp://tail-f.com/yang/netconf-monitoringNETCONFvlanyanghttp://sssup.it/yang/vlanNETCONF29netconf-sshadmin10.30.2.2062024-06-06T23:11:47+00:00200030netconf-sshadmin10.30.2.2062024-06-06T23:11:57+00:00400031netconf-sshadmin10.30.2.2062024-06-06T23:12:08+00:00200032netconf-sshadmin10.30.2.2082024-06-20T13:24:11+00:00200033netconf-sshadmin10.30.2.2082024-06-20T13:24:16+00:0010002024-06-06T22:51:41+00:0005011000NETCONFdefault NETCONF event streamfalsemellanoxNotifications regarding the transpondertrue2024-06-06T22:51:42.135613+00:00f1285a0c7bf3c6c159ca5c87b160ec60iana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashcrypt-hash-sha-512crypt-hash-sha-256crypt-hash-md5importietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesimportietf-interfaces2014-05-08urn:ietf:params:xml:ns:yang:ietf-interfacespre-provisioningif-mibarbitrary-namesimplementietf-netconf2011-06-01urn:ietf:params:xml:ns:netconf:base:1.0implementietf-netconf-acm2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-acmimplementietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringimplementietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsimplementietf-netconf-with-defaults2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsimplementietf-yang-library2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-libraryimplementietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesimportopenconfig-alarm-types2018-01-16http://openconfig.net/yang/alarms/typesimportopenconfig-bfd2022-06-28http://openconfig.net/yang/bfdimplementopenconfig-bgp2022-05-21http://openconfig.net/yang/bgpimplementopenconfig-bgp-common2022-05-21openconfig-bgp-common-structure2022-05-21openconfig-bgp-global2022-05-21openconfig-bgp-neighbor2022-05-21openconfig-bgp-peer-group2022-05-21openconfig-bgp-common-multiprotocol2022-05-21openconfig-bgp-types2021-08-06http://openconfig.net/yang/bgp-typesimportopenconfig-bgp-errors2021-08-06openconfig-evpn-types2021-06-21http://openconfig.net/yang/evpn-typesimportopenconfig-if-ethernet2022-04-20http://openconfig.net/yang/interfaces/ethernetimplementopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipimplementopenconfig-inet-types2021-08-17http://openconfig.net/yang/types/inetimportopenconfig-interfaces2021-04-06http://openconfig.net/yang/interfacesimplementopenconfig-lldp2018-11-21http://openconfig.net/yang/lldpimplementopenconfig-lldp-types2018-11-21http://openconfig.net/yang/lldp/typesimportopenconfig-mpls-types2021-12-01http://openconfig.net/yang/mpls-typesimportopenconfig-ospf-types2018-11-21http://openconfig.net/yang/ospf-typesimportopenconfig-ospfv22022-02-10http://openconfig.net/yang/ospfv2importopenconfig-ospfv2-area2022-02-10openconfig-ospfv2-common2022-02-10openconfig-ospfv2-global2022-02-10openconfig-ospfv2-lsdb2022-02-10openconfig-ospfv2-area-interface2022-02-10openconfig-platform2018-01-30http://openconfig.net/yang/platformimplementopenconfig-platform-port2021-04-22http://openconfig.net/yang/platform/portimplementopenconfig-platform-transceiver2021-02-23http://openconfig.net/yang/platform/transceiverimplementopenconfig-platform-types2021-01-18http://openconfig.net/yang/platform-typesimportopenconfig-policy-types2022-11-08http://openconfig.net/yang/policy-typesimportopenconfig-protocolshttp://openconfig.net/yang/protocolsimplementopenconfig-rib-bgp2022-06-06http://openconfig.net/yang/rib/bgpimportopenconfig-rib-bgp-attributes2022-06-06openconfig-rib-bgp-tables2022-06-06openconfig-rib-bgp-table-attributes2022-06-06openconfig-rib-bgp-shared-attributes2022-06-06openconfig-rib-bgp-types2019-03-14http://openconfig.net/yang/rib/bgp-typesimportopenconfig-routing-policy2022-05-24http://openconfig.net/yang/routing-policyimplementopenconfig-telemetry2018-11-21http://openconfig.net/yang/telemetryimplementopenconfig-telemetry-types2018-11-21http://openconfig.net/yang/telemetry-typesimportopenconfig-terminal-device2021-02-23http://openconfig.net/yang/terminal-deviceimplementopenconfig-transport-types2021-03-22http://openconfig.net/yang/transport-typesimportopenconfig-types2019-04-16http://openconfig.net/yang/openconfig-typesimportopenconfig-yang-types2021-07-14http://openconfig.net/yang/types/yangimporttailf-aaa2015-06-16http://tail-f.com/ns/aaa/1.1implementtailf-acm2013-03-07http://tail-f.com/yang/acmimplementtailf-common-monitoring2013-06-14http://tail-f.com/yang/common-monitoringimporttailf-confd-monitoring2013-06-14http://tail-f.com/yang/confd-monitoringimplementtailf-kicker2017-03-16http://tail-f.com/ns/kickerimplementtailf-netconf-monitoring2016-11-24http://tail-f.com/yang/netconf-monitoringimplementvlanhttp://sssup.it/yang/vlanimplementopenconfig-segment-routing-types2020-02-04http://openconfig.net/yang/segment-routing-typesimportopenconfig-network-instance-types2021-07-14http://openconfig.net/yang/network-instance-typesimport
" -[2024-06-20 13:24:17,097] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: matching from 10539 bytes from start of buffer -[2024-06-20 13:24:17,097] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: regular expression start=0, end=4 -[2024-06-20 13:24:17,097] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: found end of message delimiter -[2024-06-20 13:24:17,099] DEBUG:ncclient.operations.rpc:[host 172.17.254.42 session-id 33] Delivering to -[2024-06-20 13:24:17,099] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: saving back rest of message after 10543 bytes, original size 10543 -[2024-06-20 13:24:17,099] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: ending -[2024-06-20 13:24:17,106] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,107] INFO:root:dic {'frequency': '192056250'} -[2024-06-20 13:24:17,107] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,108] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0'} -[2024-06-20 13:24:17,109] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,110] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8'} -[2024-06-20 13:24:17,110] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,111] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1'} -[2024-06-20 13:24:17,111] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,113] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:24:17,113] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,114] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:24:17,114] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,115] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:24:17,116] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,117] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-06-20 13:24:17,117] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,119] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:24:17,119] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,120] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:24:17,120] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,121] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:24:17,122] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,123] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-06-20 13:24:17,123] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,124] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:24:17,125] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,126] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:24:17,126] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,127] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:24:17,127] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,128] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-06-20 13:24:17,130] INFO:root:parameters {'channels': [{'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1', 'name': {'index': 'channel-1'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2', 'name': {'index': 'channel-2'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3', 'name': {'index': 'channel-3'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4', 'name': {'index': 'channel-4'}}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'ports': [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})]} -[2024-06-20 13:24:17,130] DEBUG:context.client.ContextClient:SetOpticalConfig request: {"config": "{\"channels\": [{\"frequency\": \"192056250\", \"target-output-power\": \"1.0\", \"operational-mode\": \"8\", \"line-port\": \"transceiver-1\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": [\"transceiver-1\", \"transceiver-2\", \"transceiver-3\", \"transceiver-4\"]}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}", "device_id": {"device_uuid": {"uuid": "012c4e67-0024-5f30-b527-55ec6daf2639"}}} -[2024-06-20 13:24:17,165] DEBUG:context.client.ContextClient:SetOpticalConfig result: {"opticalconfig_uuid": ""} -[2024-06-20 13:24:17,165] DEBUG:device.service.Tools:results_getconfig = [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-06-20 13:24:17,165] INFO:device.service.Tools:results_getconfig = [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-06-20 13:24:17,166] INFO:ncclient.operations.rpc:[host 172.17.254.42 session-id 33] Requesting 'Get' -[2024-06-20 13:24:17,166] DEBUG:ncclient.operations.rpc:[host 172.17.254.42 session-id 33] Sync request, will wait for timeout=120 -[2024-06-20 13:24:17,248] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: starting -[2024-06-20 13:24:17,249] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:17,249] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:17,249] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:17,249] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:24:17,249] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:17,249] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:24:17,249] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:24:17,249] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: ending -[2024-06-20 13:24:17,249] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: starting -[2024-06-20 13:24:17,249] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:17,249] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:17,250] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:17,250] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:24:17,250] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:17,250] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:24:17,250] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:24:17,250] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: ending -[2024-06-20 13:24:17,250] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: starting -[2024-06-20 13:24:17,250] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:17,250] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:17,250] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:17,251] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:24:17,251] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:17,251] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:24:17,251] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:24:17,251] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: ending -[2024-06-20 13:24:17,251] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: starting -[2024-06-20 13:24:17,251] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:17,251] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:17,251] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:17,251] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:24:17,251] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:17,251] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: appending 16376 bytes -[2024-06-20 13:24:17,252] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: fragment = " -falsefalsetruefalsefalsefalseeth0eth0truefalsetrue00
192.168.1.1192.168.1.124
DISABLEfalsetruefalse
falsefalsetrue1false
truechannel-1channel-1channel-1oc-opt-types:OPTICAL_CHANNEL1920562501.08transceiver-11920562501.08transceiver-110.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-2channel-2channel-2oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-21916000000.00transceiver-210.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-3channel-3channel-3oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-31916000000.00transceiver-310.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-4channel-4channel-4oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-41916000000.00transceiver-410.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00devicedeviceMellanoxSwitchoc-platform-types:OPERATING_SYSTEMSSSA-CNIT1.0.01.0.01.0.0610610port-1port-1port-1oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index1onos-index1channel-1channel-1channel-1port-2port-2port-2oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index2onos-index2channel-2channel-2channel-2port-3port-3port-3oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index3onos-index3channel-3channel-3channel-3port-4port-4port-4oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index4onos-index4channel-4channel-4channel-4transceiver-1transceiver-1transceiver-1oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-1transceiver-2transceiver-2transceiver-2oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-2transceiver-3transceiver-3transceiver-3oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHEREN" -[2024-06-20 13:24:17,252] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:24:17,252] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: ending -[2024-06-20 13:24:17,279] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: starting -[2024-06-20 13:24:17,280] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:17,280] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:17,280] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:17,280] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:24:17,280] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:17,280] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:24:17,280] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:24:17,280] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: ending -[2024-06-20 13:24:17,280] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: starting -[2024-06-20 13:24:17,281] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:17,281] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:17,281] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:17,281] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:24:17,281] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:17,281] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:24:17,281] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:24:17,281] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: ending -[2024-06-20 13:24:17,281] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: starting -[2024-06-20 13:24:17,281] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:17,282] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:17,282] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:17,282] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:24:17,282] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:17,282] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:24:17,282] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:24:17,282] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: ending -[2024-06-20 13:24:17,282] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: starting -[2024-06-20 13:24:17,283] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:17,283] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:17,283] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:17,283] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:24:17,283] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:17,283] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: appending 16376 bytes -[2024-06-20 13:24:17,283] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: fragment = "T_OPTICCisco400zr-QSFP-DD01156732111channel-3transceiver-4transceiver-4transceiver-4oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-4falsefalsetruefalsefalsefalse192.168.1.1192.168.1.188true65432179truefalseNONEfalse30903030falsefalsefalsetruefalsefalse0falsefalsefalsefalseREJECT_ROUTEREJECT_ROUTERFC2328_COMPATIBLE11Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONE1Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-1transceiver-111Optical channel assigned 100OPTICAL_CHANNELchannel-1100.01Optical channel assigned 100OPTICAL_CHANNELchannel-1100.022Logical channel 2DISABLEDoc-opt-types:PROT_OTNNONE2Logical channel 2DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-2transceiver-211Optical channel assigned 100OPTICAL_CHANNELchannel-2100.01Optical channel assigned 100OPTICAL_CHANNELchannel-2100.033Logical channel 3DISABLEDoc-opt-types:PROT_OTNNONE3Logical channel 3DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-3transceiver-311Optical channel assigned 100OPTICAL_CHANNELchannel-3100.01Optical channel assigned 100OPTICAL_CHANNELchannel-3100.044Logical channel 4DISABLEDoc-opt-types:PROT_OTNNONE4Logical channel 4DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-4transceiver-411Optical channel assigned 100OPTICAL_CHANNELchannel-4100.01Optical channel assigned 100OPTICAL_CHANNELchannel-4100.011FEC1Ericsson22FEC2Ericssonadmin9000100$1$lPNyHD3D$t9eLr07hXOEy1983ReE8k0/var/confd/homes/admin/.ssh/var/confd/homes/adminoper9003103$1$gflBsGcV$PdW1/SBjHWGBRlZuBfdva//var/confd/homes/oper/.ssh/var/confd/homes/operoptical9001101$1$HCxex4ow$jHGQxsbMB1dWNK97ydKv20/var/confd/homes/optical/.ssh/var/confd/homes/opticalpacket9002102$1$2CYgcCNT$bV6L4CxgDPQP9EMyZ4Rsc1/var/confd/homes/packet/.ssh/var/confd/homes/packetprivate9005103$1$2MXxtlsM$qZfOcm4WXD2c8duQXzdru0/var/confd/homes/private/.ssh/var/confd/homes/privatepublic9004100$1$1tOWUHZV$iad9vZD8aF68c6x21nhHo//var/confd/homes/public/.ssh/var/confd/homes/public0\h> 15\h# exec0actionautowizardenableexithelpstartup15configure6.4falsestartediana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashianachietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesinetietf-interfaces2014-05-08urn:ietf:params:xml:ns:yang:ietf-interfacesifietf-netconf-acm2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-acmnacmietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringncmietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsncnietf-yang-library2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-libraryyanglibnetconfrestietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesyangnetconf_netmodurn:ietf:params:xml:ns:netmod:notificationnmnetconfopenconfig-alarm-types2018-01-16http://openconfig.net/yang/alarms/typesoc-alarm-typesopenconfig-bfd2022-06-28http://openconfig.net/yang/bfdoc-bfdopenconfig-bgp2022-05-21http://openconfig.net/yang/bgpoc-bgpopenconfig-bgp-types2021-08-06http://openconfig.net/yang/bgp-typesoc-bgp-typesopenconfig-evpn-types2021-06-21http://openconfig.net/yang/evpn-typesoc-evpn-typesopenconfig-if-ethernet2022-04-20http://openconfig.net/yang/interfaces/ethernetoc-ethopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipoc-ipopenconfig-inet-types2021-08-17http://openconfig.net/yang/types/inetoc-inetopenconfig-interfaces2021-04-06http://openconfig.net/yang/interfacesoc-ifopenconfig-lldp2018-11-21http://openconfig.net/yang/lldpoc-lldpopenconfig-lldp-types2018-11-21http://openconfig.net/yang/lldp/typesoc-lldp-typesopenconfig-mpls-types2021-12-01http://openconfig.net/yang/mpls-typesoc-mplstopenconfig-network-instance-types2021-07-14http://openconfig.net/yang/network-instance-typesoc-ni-typesopenconfig-ospf-types2018-11-21http://openconfig.net/yang/ospf-typesoc-ospf-typesNETCONFdefault NETCONF event streamfalsemellanoxNotifications regarding the transpondertrue2024-06-06T22:51:42.135613+00:00truepermitpermitpermittrue000adminadminprivateoperoperpublicoptopticalpckpacketany-group*get*/readpermittailf-aaa-authenticationtailf-aaa/aaa/authentication/users/user[name='$USER']read updatepermittailf-aaa-usertailf-aaa/user[name='$USER']create read update deletepermittailf-webui-usertailf-webui/webui/data-stores/user-profile[username='$USER']create read update deletepermitpacketpckvlanvlan/switched-vlanscreate read update deletepermitterminal-device*/terminal-devicecreate update deletedenycomponents*/componentscreate update deletedenyopticaloptterminal-device*/terminal-devicecreate read update deletepermitcomponents*/componentscreate read update deletepermitvlanvlan/switched-vlanscreate update deletedenyadminadminany-accesspermiturn:ietf:params:netconf:base:1.0urn:ietf:params:netconf:base:1.1urn:ietf:params:netconf:capability:writable-running:1.0urn:ietf:params:netconf:capability:xpath:1.0urn:ietf:params:netconf:capability:validate:1.0urn:ietf:params:netconf:capability:validate:1.1urn:ietf:params:netconf:capability:rollback-on-error:1.0urn:ietf:params:netconf:capability:notification:1.0urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all-taggedurn:ietf:params:netconf:capability:yang-library:1.0?revision=2016-06-21&module-set-id=f1285a0c7bf3c6c159ca5c87b160ec60http://tail-f.com/ns/netconf/extensionshttp://openconfig.net/yang/alarms/types?module=openconfig-alarm-types&revision=2018-01-16http://openconfig.net/yang/bfd?module=openconfig-bfd&revision=2022-06-28http://openconfig.net/yang/bgp?module=openconfig-bgp&revision=2022-05-21http://openconfig.net/yang/bgp-types?module=openconfig-bgp-types&revision=2021-08-06http://openconfig.net/yang/evpn-types?module=openconfig-evpn-types&revision=2021-06-21http://openconfig.net/yang/interfaces?module=openconfig-interfaces&revision=2021-04-06http://openconfig.net/yang/interfaces/ethernet?module=openconfig-if-ethernet&revision=2022-04-20http://openconfig.net/yang/interfaces/ip?module=openconfig-if-ip&revision=2019-01-08http://openconfig.net/yang/lldp?module=openconfig-lldp&revision=2018-11-21http://openconfig.net/yang/lldp/types?module=openconfig-lldp-types&revision=2018-11-21http://openconfig.net/yang/mpls-types?module=openconfig-mpls-types&revision=2021-12-01http://openconfig.net/yang/network-instance-types?module=openconfig-network-instance-types&revision=2021-07-14http://openconfig.net/yang/openconfig-types?module=openconfig-types&revision=2019-04-16http://openconfig.net/yang/ospf-types?module=openconfig-ospf-types&revision=2018-11-21http://openconfig.net/yang/ospfv2?module=openconfig-ospfv2&revision=2022-02-10http://openconfig.net/yang/platform?module=openconfig-platform&revision=2018-01-30http://openconfig.net/yang/platform-types?module=openconfig-platform-types&revision=2021-01-18http://openconfig.net/yang/platform/port?module=openconfig-platform-port&revision=2021-04-22http://openconfig.net/yang/platform/transceiver?module=openconfig-platform-transceiver&revision=2021-02-23http://openconfig.net/yang/policy-types?module=openconfig-policy-types&revision=2022-11-08http://openconfig.net/yang/protocols?module=openconfig-protocolshttp://openconfig.net/yang/rib/bgp?module=openconfig-rib-bgp&revision=2022-06-06http://openconfig.net/yang/rib/bgp-types?module=openconfig-rib-bgp-types&revision=2019-03-14http://openconfig.net/yang/routing-policy?module=openconfig-routing-policy&revision=2022-05-24http://openconfig.net/yang/segment-routing-types?module=openconfig-segment-routing-types&revision=2020-02-04http://openconfig.net/yang/telemetry?module=openconfig-telemetry&revision=2018-11-21http://openconfig.net/yang/telemetry-types?module=openconfig-telemetry-types&revision=2018-11-21http://openconfig.net/yang/terminal-device?module=openconfig-terminal-device&revision=2021-02-23http://openconfig.net/yang/transport-types?module=openconfig-transport-types&revision=2021-03-22http://openconfig.net/yang/types/inet?module=openconfig-inet-types&revision=2021-08-17http://openconfig.net/yang/types/yang?module=openconfig-yang-types&revision=2021-07-14http://sssup.it/yang/vlan?module=vlanhttp://tail-f.com/ns/aaa/1.1?module=tailf-aaa&revision=2015-06-16http://tail-f.com/ns/kicker?module=tailf-kicker&revision=2017-03-16http://tail-f.com/yang/acm?module=tailf-acm&revision=2013-03-07http://tail-f.com/yang/common-monitoring?module=tailf-common-monitoring&revision=2013-06-14http://tail-f.com/yang/confd-monitoring?module=tailf-confd-monitoring&revision=2013-06-14http://tail-f.com/yang/netconf-monitoring?module=tailf-netconf-monitoring&revision=2016-11-24urn:ietf:params:xml:ns:yang:iana-crypt-hash?module=iana-crypt-hash&revision=2014-08-06&features=crypt-hash-sha-512,crypt-hash-sha-256,crypt-hash-md5urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&revision=2013-07-15urn:ietf:params:xml:ns:yang:ietf-interfaces?module=ietf-interfaces&revision=2014-05-08&features=pre-provisioning,if-mib,arbitrary-namesurn:ietf:params:xml:ns:yang:ietf-netconf-acm?module=ietf-netconf-acm&revision=2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&revision=2010-10-04urn:ietf:params:xml:ns:yang:ietf-" -[2024-06-20 13:24:17,299] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:24:17,299] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: ending -[2024-06-20 13:24:17,326] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: starting -[2024-06-20 13:24:17,326] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:17,326] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:17,326] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:17,326] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:24:17,327] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:17,327] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:24:17,327] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:24:17,327] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: ending -[2024-06-20 13:24:17,327] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: starting -[2024-06-20 13:24:17,327] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:17,327] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:17,327] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:17,327] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:24:17,327] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:17,327] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:24:17,328] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:24:17,328] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: ending -[2024-06-20 13:24:17,328] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: starting -[2024-06-20 13:24:17,328] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:17,328] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:17,328] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:17,328] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:24:17,328] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:17,328] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: not enough data for chunk yet -[2024-06-20 13:24:17,329] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: setting start to 0 -[2024-06-20 13:24:17,329] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: ending -[2024-06-20 13:24:17,329] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: starting -[2024-06-20 13:24:17,329] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:17,329] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:17,329] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:17,329] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: found chunk delimiter -[2024-06-20 13:24:17,329] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:17,329] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: appending 16376 bytes -[2024-06-20 13:24:17,330] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: fragment = "netconf-notifications?module=ietf-netconf-notifications&revision=2012-02-06urn:ietf:params:xml:ns:yang:ietf-yang-library?module=ietf-yang-library&revision=2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&revision=2013-07-15urn:ietf:params:xml:ns:netconf:base:1.0?module=ietf-netconf&revision=2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?module=ietf-netconf-with-defaults&revision=2011-06-01running1717-750545-631285iana-crypt-hash2014-08-06yangurn:ietf:params:xml:ns:yang:iana-crypt-hashNETCONFietf-inet-types2013-07-15yangurn:ietf:params:xml:ns:yang:ietf-inet-typesNETCONFietf-interfaces2014-05-08yangurn:ietf:params:xml:ns:yang:ietf-interfacesNETCONFietf-netconf2011-06-01yangurn:ietf:params:xml:ns:netconf:base:1.0NETCONFietf-netconf-acm2012-02-22yangurn:ietf:params:xml:ns:yang:ietf-netconf-acmNETCONFietf-netconf-monitoring2010-10-04yangurn:ietf:params:xml:ns:yang:ietf-netconf-monitoringNETCONFietf-netconf-notifications2012-02-06yangurn:ietf:params:xml:ns:yang:ietf-netconf-notificationsNETCONFietf-netconf-with-defaults2011-06-01yangurn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsNETCONFietf-yang-library2016-06-21yangurn:ietf:params:xml:ns:yang:ietf-yang-libraryNETCONFietf-yang-types2013-07-15yangurn:ietf:params:xml:ns:yang:ietf-yang-typesNETCONFopenconfig-alarm-types2018-01-16yanghttp://openconfig.net/yang/alarms/typesNETCONFopenconfig-bfd2022-06-28yanghttp://openconfig.net/yang/bfdNETCONFopenconfig-bgp2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common-multiprotocol2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common-structure2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-errors2021-08-06yanghttp://openconfig.net/yang/bgp-typesNETCONFopenconfig-bgp-global2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-neighbor2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-peer-group2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-types2021-08-06yanghttp://openconfig.net/yang/bgp-typesNETCONFopenconfig-evpn-types2021-06-21yanghttp://openconfig.net/yang/evpn-typesNETCONFopenconfig-if-ethernet2022-04-20yanghttp://openconfig.net/yang/interfaces/ethernetNETCONFopenconfig-if-ip2019-01-08yanghttp://openconfig.net/yang/interfaces/ipNETCONFopenconfig-inet-types2021-08-17yanghttp://openconfig.net/yang/types/inetNETCONFopenconfig-interfaces2021-04-06yanghttp://openconfig.net/yang/interfacesNETCONFopenconfig-lldp2018-11-21yanghttp://openconfig.net/yang/lldpNETCONFopenconfig-lldp-types2018-11-21yanghttp://openconfig.net/yang/lldp/typesNETCONFopenconfig-mpls-types2021-12-01yanghttp://openconfig.net/yang/mpls-typesNETCONFopenconfig-network-instance-types2021-07-14yanghttp://openconfig.net/yang/network-instance-typesNETCONFopenconfig-ospf-types2018-11-21yanghttp://openconfig.net/yang/ospf-typesNETCONFopenconfig-ospfv22022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-area2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-area-interface2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-common2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-global2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-lsdb2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-platform2018-01-30yanghttp://openconfig.net/yang/platformNETCONFopenconfig-platform-port2021-04-22yanghttp://openconfig.net/yang/platform/portNETCONFopenconfig-platform-transceiver2021-02-23yanghttp://openconfig.net/yang/platform/transceiverNETCONFopenconfig-platform-types2021-01-18yanghttp://openconfig.net/yang/platform-typesNETCONFopenconfig-policy-types2022-11-08yanghttp://openconfig.net/yang/policy-typesNETCONFopenconfig-protocolsyanghttp://openconfig.net/yang/protocolsNETCONFopenconfig-rib-bgp2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-shared-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-table-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-tables2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-types2019-03-14yanghttp://openconfig.net/yang/rib/bgp-typesNETCONFopenconfig-routing-policy2022-05-24yanghttp://openconfig.net/yang/routing-policyNETCONFopenconfig-segment-routing-types2020-02-04yanghttp://openconfig.net/yang/segment-routing-typesNETCONFopenconfig-telemetry2018-11-21yanghttp://openconfig.net/yang/telemetryNETCONFopenconfig-telemetry-types2018-11-21yanghttp://openconfig.net/yang/telemetry-typesNETCONFopenconfig-terminal-device2021-02-23yanghttp://openconfig.net/yang/terminal-deviceNETCONFopenconfig-transport-types2021-03-22yanghttp://openconfig.net/yang/transport-typesNETCONFopenconfig-types2019-04-16yanghttp://openconfig.net/yang/openconfig-typesNETCONFopenconfig-yang-types2021-07-14yanghttp://openconfig.net/yang/types/yangNETCONFtailf-aaa2015-06-16yanghttp://tail-f.com/ns/aaa/1.1NETCONFtailf-acm2013-03-07yanghttp://tail-f.com/yang/acmNETCONFtailf-common-monitoring2013-06-14yanghttp://tail-f.com/yang/common-monitoringNETCONFtailf-confd-monitoring2013-06-14yanghttp://tail-f.com/yang/confd-monitoringNETCONFtailf-kicker2017-03-16yanghttp://tail-f.com/ns/kickerNETCONFtailf-netconf-monitoring2016-11-24yanghttp://tail-f.com/yang/netconf-monitoringNETCONFvlanyanghttp://sssup.it/yang/vlanNETCONF29netconf-sshadmin10.30.2.2062024-06-06T23:11:47+00:00200030netconf-sshadmin10.30.2.2062024-06-06T23:11:57+00:00400031netconf-sshadmin10.30.2.2062024-06-06T23:12:08+00:00200032netconf-sshadmin10.30.2.2082024-06-20T13:24:11+00:00200033netconf-sshadmin10.30.2.2082024-06-20T13:24:16+00:0020002024-06-06T22:51:41+00:0005012000NETCONFdefault NETCONF event streamfalsemellanoxNotifications regarding the transpondertrue2024-06-06T22:51:42.135613+00:00f1285a0c7bf3c6c159ca5c87b160ec60iana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashcrypt-hash-sha-512crypt-hash-sha-256crypt-hash-md5importietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesimportietf-interfaces2014-05-08urn:ietf:params:xml:ns:yang:ietf-interfacespre-provisioningif-mibarbitrary-namesimplementietf-netconf2011-06-01urn:ietf:params:xml:ns:netconf:base:1.0implementietf-netconf-acm2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-acmimplementietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringimplementietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsimplementietf-netconf-with-defaults2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsimplementietf-yang-library2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-libraryimplementietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesimportopenconfig-alarm-types2018-01-16http://openconfig.net/yang/alarms/typesimportopenconfig-bfd2022-06-28http://openconfig.net/yang/bfdimplementopenconfig-bgp2022-05-21http://openconfig.net/yang/bgpimplementopenconfig-bgp-common2022-05-21openconfig-bgp-common-structure2022-05-21openconfig-bgp-global2022-05-21openconfig-bgp-neighbor2022-05-21openconfig-bgp-peer-group2022-05-21openconfig-bgp-common-multiprotocol2022-05-21openconfig-bgp-types2021-08-06http://openconfig.net/yang/bgp-typesimportopenconfig-bgp-errors2021-08-06openconfig-evpn-types2021-06-21http://openconfig.net/yang/evpn-typesimportopenconfig-if-ethernet2022-04-20http://openconfig.net/yang/interfaces/ethernetimplementopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipimplementopenconfig-inet-types2021-08-17http://openconfig.net/yang/types/inetimportopenconfig-interfaces2021-04-06http://openconfig.net/yang/interfacesimplementopenconfig-lldp2018-11-21http://openconfig.net/yang/lldpimplementopenconfig-lldp-types2018-11-21http://openconfig.net/yang/lldp/typesimportopenconfig-mpls-types2021-12-01http://openconfig.net/yang/mpls-typesimportopenconfig-ospf-types2018-11-21http://openconfig.net/yang/ospf-typesimportopenconfig-ospfv22022-02-10http://openconfig.net/yang/ospfv2importopenconfig-ospfv2-area2022-02-10openconfig-ospfv2-common2022-02-10openconfig-ospfv2-global2022-02-10openconfig-ospfv2-lsdb2022-02-10openconfig-ospfv2-area-interface2022-02-10openconfig-platform2018-01-30http://openconfig.net/yang/platformimplementopenconfig-platform-port2021-04-22http://openconfig.net/yang/platform/portimplementopenconfig-platform-transceiver2021-02-23http://openconfig.net/yang/platform/transceiverimplementopenconfig-platform-types2021-01-18http://openconfig.net/yang/platform-typesimportopenconfig-policy-types2022-11-08http://openconfig.net/yang/policy-typesimportopenconfig-protocolshttp://openconfig.net/yang/protocolsimplementopenconfig-rib-bgp2022-06-06http://openconfig.net/yang/rib/bgpimportopenconfig-rib-bgp-attributes2022-06-06openconfig-rib-bgp-tables2022-06-06openconfig-rib-bgp-table-attributes2022-06-06openconfig-rib-bgp-shared-attributes2022-06-06openconfig-rib-bgp-types2019-03-14http://openconfig.net/yang/rib/bgp-typesimportopenconfig-routing-policy2022-05-24http://openconfig.net/yang/routing-policyimplementopenconfig-telemetry2018-11-21http://openconfig.net/yang/telemetryimplementopenconfig-telemetry-types2018-11-21http://openconfig.net/yang/telemetry-typesimportopenconfig-terminal-device2021-02-23http://openconfig.net/yang/terminal-deviceimplementopenconfig-transport-types2021-03-22http://openconfig.net/yang/transport-typesimportopenconfig-types2019-04-16http://openconfig.net/yang/openconfig-typesimportopenconfig-yang-types2021-07-14http://openconfig.net/yang/types/yangimporttailf-aaa2015-06-16http://tail-f.com/ns/aaa/1.1implementtailf-acm2013-03-07http://tail-f.com/yang/acmimplementtailf-common-monitoring2013-06-14http://tail-f.com/yang/common-monitoringimporttailf-confd-monitoring2013-06-14http://tail-f.com/yang/confd-monitoringimplementtailf-kicker2017-03-16http://tail-f.com/ns/kickerimplementtailf-netconf-monitoring2016-11-24http://tail-f.com/yang/netconf-monitoringimplementvlanhttp://sssup.it/yang/vlanimplementopenconfig-segment-routing-types2020-02-04http://openconfig.net/yang/segment-routing-typesimportopenconfig-network-instance-types2021-07-14http://openconfig.net/yang/network-instance-typesimport
" -[2024-06-20 13:24:17,339] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: matching from 10539 bytes from start of buffer -[2024-06-20 13:24:17,339] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: regular expression start=0, end=4 -[2024-06-20 13:24:17,340] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: found end of message delimiter -[2024-06-20 13:24:17,341] DEBUG:ncclient.operations.rpc:[host 172.17.254.42 session-id 33] Delivering to -[2024-06-20 13:24:17,342] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: saving back rest of message after 10543 bytes, original size 10543 -[2024-06-20 13:24:17,342] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 33] _parse11: ending -[2024-06-20 13:24:17,349] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,350] INFO:root:dic {'frequency': '192056250'} -[2024-06-20 13:24:17,350] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,351] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0'} -[2024-06-20 13:24:17,351] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,353] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8'} -[2024-06-20 13:24:17,353] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,354] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1'} -[2024-06-20 13:24:17,354] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,355] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:24:17,356] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,357] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:24:17,357] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,358] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:24:17,358] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,359] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-06-20 13:24:17,360] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,361] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:24:17,361] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,362] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:24:17,362] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,364] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:24:17,364] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,365] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-06-20 13:24:17,365] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,366] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:24:17,367] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,368] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:24:17,369] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,370] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:24:17,370] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:17,371] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-06-20 13:24:17,373] INFO:root:parameters {'channels': [{'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1', 'name': {'index': 'channel-1'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2', 'name': {'index': 'channel-2'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3', 'name': {'index': 'channel-3'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4', 'name': {'index': 'channel-4'}}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'ports': [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})]} -[2024-06-20 13:24:17,373] DEBUG:context.client.ContextClient:SetOpticalConfig request: {"config": "{\"channels\": [{\"frequency\": \"192056250\", \"target-output-power\": \"1.0\", \"operational-mode\": \"8\", \"line-port\": \"transceiver-1\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": [\"transceiver-1\", \"transceiver-2\", \"transceiver-3\", \"transceiver-4\"]}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}", "device_id": {"device_uuid": {"uuid": "012c4e67-0024-5f30-b527-55ec6daf2639"}}} -[2024-06-20 13:24:17,407] DEBUG:context.client.ContextClient:SetOpticalConfig result: {"opticalconfig_uuid": ""} -[2024-06-20 13:24:17,408] DEBUG:context.client.ContextClient:SetDevice request: {"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.42"}}, {"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}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[1]", "resource_value": "{\"type\": \"port-1\", \"uuid\": \"1\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[2]", "resource_value": "{\"type\": \"port-2\", \"uuid\": \"2\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[3]", "resource_value": "{\"type\": \"port-3\", \"uuid\": \"3\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[4]", "resource_value": "{\"type\": \"port-4\", \"uuid\": \"4\"}"}}]}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "012c4e67-0024-5f30-b527-55ec6daf2639"}}, "endpoint_uuid": {"uuid": "1"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "port-1", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "012c4e67-0024-5f30-b527-55ec6daf2639"}}, "endpoint_uuid": {"uuid": "2"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "port-2", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "012c4e67-0024-5f30-b527-55ec6daf2639"}}, "endpoint_uuid": {"uuid": "3"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "port-3", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "012c4e67-0024-5f30-b527-55ec6daf2639"}}, "endpoint_uuid": {"uuid": "4"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "port-4", "kpi_sample_types": [], "name": ""}], "device_id": {"device_uuid": {"uuid": "012c4e67-0024-5f30-b527-55ec6daf2639"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-transponder", "name": "T2.2"} -[2024-06-20 13:24:17,478] DEBUG:context.client.ContextClient:SetDevice result: {"device_uuid": {"uuid": "012c4e67-0024-5f30-b527-55ec6daf2639"}} -[2024-06-20 13:24:17,479] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "012c4e67-0024-5f30-b527-55ec6daf2639"}}]}, "include_components": false, "include_config_rules": false, "include_endpoints": true} -[2024-06-20 13:24:17,504] DEBUG:context.client.ContextClient:SelectDevice 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"}]} -[2024-06-20 13:24:17,505] DEBUG:device.service.DeviceServiceServicerImpl:AddDevice reply: {"device_uuid": {"uuid": "012c4e67-0024-5f30-b527-55ec6daf2639"}} -[2024-06-20 13:24:22,637] DEBUG:device.service.DeviceServiceServicerImpl:AddDevice request: {"components": [], "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.42"}}, {"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": [], "device_id": {"device_uuid": {"uuid": "T2.3"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_DISABLED", "device_type": "optical-transponder", "name": ""} -[2024-06-20 13:24:22,637] DEBUG:context.client.ContextClient:Creating channel to 10.152.183.195:1010... -[2024-06-20 13:24:22,638] DEBUG:context.client.ContextClient:Channel created -[2024-06-20 13:24:22,638] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "T2.3"}}]}, "include_components": true, "include_config_rules": true, "include_endpoints": true} -[2024-06-20 13:24:22,650] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": []} -[2024-06-20 13:24:22,651] DEBUG:context.client.ContextClient:SetDevice request: {"components": [], "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.42"}}, {"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": [], "device_id": {"device_uuid": {"uuid": "T2.3"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_UNDEFINED", "device_type": "optical-transponder", "name": ""} -[2024-06-20 13:24:22,691] DEBUG:context.client.ContextClient:SetDevice result: {"device_uuid": {"uuid": "ce0cdfdd-2182-5027-8177-676ca3244f9d"}} -[2024-06-20 13:24:22,691] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "ce0cdfdd-2182-5027-8177-676ca3244f9d"}}]}, "include_components": true, "include_config_rules": true, "include_endpoints": true} -[2024-06-20 13:24:22,713] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": [{"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.42"}}, {"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": [], "device_id": {"device_uuid": {"uuid": "ce0cdfdd-2182-5027-8177-676ca3244f9d"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_UNDEFINED", "device_type": "optical-transponder", "name": "T2.3"}]} -[2024-06-20 13:24:22,713] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(ce0cdfdd-2182-5027-8177-676ca3244f9d) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-06-20 13:24:22,713] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(ce0cdfdd-2182-5027-8177-676ca3244f9d) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-06-20 13:24:22,714] DEBUG:ncclient.transport.session:[host None session 0x7fa7486884c0] created: client_capabilities= -[2024-06-20 13:24:22,871] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session 0x7fa7486884c0] parsing netconf v1.0 -[2024-06-20 13:24:22,872] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session 0x7fa7486884c0] parsing netconf v1.0 -[2024-06-20 13:24:22,875] INFO:root:settings {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-06-20 13:24:22,876] INFO:ncclient.operations.rpc:[host 172.17.254.42 session-id 34] Requesting 'Get' -[2024-06-20 13:24:22,876] DEBUG:ncclient.operations.rpc:[host 172.17.254.42 session-id 34] Sync request, will wait for timeout=120 -[2024-06-20 13:24:23,016] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: starting -[2024-06-20 13:24:23,016] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:23,016] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:23,016] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:23,017] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:23,017] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:23,017] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:23,017] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:23,017] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: ending -[2024-06-20 13:24:23,017] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: starting -[2024-06-20 13:24:23,017] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:23,017] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:23,017] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:23,017] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:23,017] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:23,017] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:23,018] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:23,018] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: ending -[2024-06-20 13:24:23,018] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: starting -[2024-06-20 13:24:23,018] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:23,018] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:23,018] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:23,018] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:23,018] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:23,018] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:23,019] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:23,019] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: ending -[2024-06-20 13:24:23,019] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: starting -[2024-06-20 13:24:23,019] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:23,019] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:23,019] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:23,019] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:23,019] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:23,019] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: appending 16376 bytes -[2024-06-20 13:24:23,019] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: fragment = " -falsefalsetruefalsefalsefalseeth0eth0truefalsetrue00
192.168.1.1192.168.1.124
DISABLEfalsetruefalse
falsefalsetrue1false
truechannel-1channel-1channel-1oc-opt-types:OPTICAL_CHANNEL1920562501.08transceiver-11920562501.08transceiver-110.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-2channel-2channel-2oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-21916000000.00transceiver-210.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-3channel-3channel-3oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-31916000000.00transceiver-310.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-4channel-4channel-4oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-41916000000.00transceiver-410.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00devicedeviceMellanoxSwitchoc-platform-types:OPERATING_SYSTEMSSSA-CNIT1.0.01.0.01.0.0610610port-1port-1port-1oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index1onos-index1channel-1channel-1channel-1port-2port-2port-2oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index2onos-index2channel-2channel-2channel-2port-3port-3port-3oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index3onos-index3channel-3channel-3channel-3port-4port-4port-4oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index4onos-index4channel-4channel-4channel-4transceiver-1transceiver-1transceiver-1oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-1transceiver-2transceiver-2transceiver-2oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-2transceiver-3transceiver-3transceiver-3oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHEREN" -[2024-06-20 13:24:23,020] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:24:23,020] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: ending -[2024-06-20 13:24:23,037] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: starting -[2024-06-20 13:24:23,037] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:23,038] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:23,038] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:23,038] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:23,038] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:23,038] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:23,038] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:23,038] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: ending -[2024-06-20 13:24:23,038] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: starting -[2024-06-20 13:24:23,038] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:23,038] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:23,038] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:23,039] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:23,039] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:23,039] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:23,039] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:23,039] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: ending -[2024-06-20 13:24:23,039] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: starting -[2024-06-20 13:24:23,039] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:23,039] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:23,039] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:23,039] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:23,039] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:23,039] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:23,040] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:23,040] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: ending -[2024-06-20 13:24:23,040] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: starting -[2024-06-20 13:24:23,040] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:23,040] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:23,040] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:23,040] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:23,040] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:23,040] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: appending 16376 bytes -[2024-06-20 13:24:23,040] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: fragment = "T_OPTICCisco400zr-QSFP-DD01156732111channel-3transceiver-4transceiver-4transceiver-4oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-4falsefalsetruefalsefalsefalse192.168.1.1192.168.1.188true65432179truefalseNONEfalse30903030falsefalsefalsetruefalsefalse0falsefalsefalsefalseREJECT_ROUTEREJECT_ROUTERFC2328_COMPATIBLE11Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONE1Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-1transceiver-111Optical channel assigned 100OPTICAL_CHANNELchannel-1100.01Optical channel assigned 100OPTICAL_CHANNELchannel-1100.022Logical channel 2DISABLEDoc-opt-types:PROT_OTNNONE2Logical channel 2DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-2transceiver-211Optical channel assigned 100OPTICAL_CHANNELchannel-2100.01Optical channel assigned 100OPTICAL_CHANNELchannel-2100.033Logical channel 3DISABLEDoc-opt-types:PROT_OTNNONE3Logical channel 3DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-3transceiver-311Optical channel assigned 100OPTICAL_CHANNELchannel-3100.01Optical channel assigned 100OPTICAL_CHANNELchannel-3100.044Logical channel 4DISABLEDoc-opt-types:PROT_OTNNONE4Logical channel 4DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-4transceiver-411Optical channel assigned 100OPTICAL_CHANNELchannel-4100.01Optical channel assigned 100OPTICAL_CHANNELchannel-4100.011FEC1Ericsson22FEC2Ericssonadmin9000100$1$lPNyHD3D$t9eLr07hXOEy1983ReE8k0/var/confd/homes/admin/.ssh/var/confd/homes/adminoper9003103$1$gflBsGcV$PdW1/SBjHWGBRlZuBfdva//var/confd/homes/oper/.ssh/var/confd/homes/operoptical9001101$1$HCxex4ow$jHGQxsbMB1dWNK97ydKv20/var/confd/homes/optical/.ssh/var/confd/homes/opticalpacket9002102$1$2CYgcCNT$bV6L4CxgDPQP9EMyZ4Rsc1/var/confd/homes/packet/.ssh/var/confd/homes/packetprivate9005103$1$2MXxtlsM$qZfOcm4WXD2c8duQXzdru0/var/confd/homes/private/.ssh/var/confd/homes/privatepublic9004100$1$1tOWUHZV$iad9vZD8aF68c6x21nhHo//var/confd/homes/public/.ssh/var/confd/homes/public0\h> 15\h# exec0actionautowizardenableexithelpstartup15configure6.4falsestartediana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashianachietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesinetietf-interfaces2014-05-08urn:ietf:params:xml:ns:yang:ietf-interfacesifietf-netconf-acm2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-acmnacmietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringncmietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsncnietf-yang-library2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-libraryyanglibnetconfrestietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesyangnetconf_netmodurn:ietf:params:xml:ns:netmod:notificationnmnetconfopenconfig-alarm-types2018-01-16http://openconfig.net/yang/alarms/typesoc-alarm-typesopenconfig-bfd2022-06-28http://openconfig.net/yang/bfdoc-bfdopenconfig-bgp2022-05-21http://openconfig.net/yang/bgpoc-bgpopenconfig-bgp-types2021-08-06http://openconfig.net/yang/bgp-typesoc-bgp-typesopenconfig-evpn-types2021-06-21http://openconfig.net/yang/evpn-typesoc-evpn-typesopenconfig-if-ethernet2022-04-20http://openconfig.net/yang/interfaces/ethernetoc-ethopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipoc-ipopenconfig-inet-types2021-08-17http://openconfig.net/yang/types/inetoc-inetopenconfig-interfaces2021-04-06http://openconfig.net/yang/interfacesoc-ifopenconfig-lldp2018-11-21http://openconfig.net/yang/lldpoc-lldpopenconfig-lldp-types2018-11-21http://openconfig.net/yang/lldp/typesoc-lldp-typesopenconfig-mpls-types2021-12-01http://openconfig.net/yang/mpls-typesoc-mplstopenconfig-network-instance-types2021-07-14http://openconfig.net/yang/network-instance-typesoc-ni-typesopenconfig-ospf-types2018-11-21http://openconfig.net/yang/ospf-typesoc-ospf-typesNETCONFdefault NETCONF event streamfalsemellanoxNotifications regarding the transpondertrue2024-06-06T22:51:42.135613+00:00truepermitpermitpermittrue000adminadminprivateoperoperpublicoptopticalpckpacketany-group*get*/readpermittailf-aaa-authenticationtailf-aaa/aaa/authentication/users/user[name='$USER']read updatepermittailf-aaa-usertailf-aaa/user[name='$USER']create read update deletepermittailf-webui-usertailf-webui/webui/data-stores/user-profile[username='$USER']create read update deletepermitpacketpckvlanvlan/switched-vlanscreate read update deletepermitterminal-device*/terminal-devicecreate update deletedenycomponents*/componentscreate update deletedenyopticaloptterminal-device*/terminal-devicecreate read update deletepermitcomponents*/componentscreate read update deletepermitvlanvlan/switched-vlanscreate update deletedenyadminadminany-accesspermiturn:ietf:params:netconf:base:1.0urn:ietf:params:netconf:base:1.1urn:ietf:params:netconf:capability:writable-running:1.0urn:ietf:params:netconf:capability:xpath:1.0urn:ietf:params:netconf:capability:validate:1.0urn:ietf:params:netconf:capability:validate:1.1urn:ietf:params:netconf:capability:rollback-on-error:1.0urn:ietf:params:netconf:capability:notification:1.0urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all-taggedurn:ietf:params:netconf:capability:yang-library:1.0?revision=2016-06-21&module-set-id=f1285a0c7bf3c6c159ca5c87b160ec60http://tail-f.com/ns/netconf/extensionshttp://openconfig.net/yang/alarms/types?module=openconfig-alarm-types&revision=2018-01-16http://openconfig.net/yang/bfd?module=openconfig-bfd&revision=2022-06-28http://openconfig.net/yang/bgp?module=openconfig-bgp&revision=2022-05-21http://openconfig.net/yang/bgp-types?module=openconfig-bgp-types&revision=2021-08-06http://openconfig.net/yang/evpn-types?module=openconfig-evpn-types&revision=2021-06-21http://openconfig.net/yang/interfaces?module=openconfig-interfaces&revision=2021-04-06http://openconfig.net/yang/interfaces/ethernet?module=openconfig-if-ethernet&revision=2022-04-20http://openconfig.net/yang/interfaces/ip?module=openconfig-if-ip&revision=2019-01-08http://openconfig.net/yang/lldp?module=openconfig-lldp&revision=2018-11-21http://openconfig.net/yang/lldp/types?module=openconfig-lldp-types&revision=2018-11-21http://openconfig.net/yang/mpls-types?module=openconfig-mpls-types&revision=2021-12-01http://openconfig.net/yang/network-instance-types?module=openconfig-network-instance-types&revision=2021-07-14http://openconfig.net/yang/openconfig-types?module=openconfig-types&revision=2019-04-16http://openconfig.net/yang/ospf-types?module=openconfig-ospf-types&revision=2018-11-21http://openconfig.net/yang/ospfv2?module=openconfig-ospfv2&revision=2022-02-10http://openconfig.net/yang/platform?module=openconfig-platform&revision=2018-01-30http://openconfig.net/yang/platform-types?module=openconfig-platform-types&revision=2021-01-18http://openconfig.net/yang/platform/port?module=openconfig-platform-port&revision=2021-04-22http://openconfig.net/yang/platform/transceiver?module=openconfig-platform-transceiver&revision=2021-02-23http://openconfig.net/yang/policy-types?module=openconfig-policy-types&revision=2022-11-08http://openconfig.net/yang/protocols?module=openconfig-protocolshttp://openconfig.net/yang/rib/bgp?module=openconfig-rib-bgp&revision=2022-06-06http://openconfig.net/yang/rib/bgp-types?module=openconfig-rib-bgp-types&revision=2019-03-14http://openconfig.net/yang/routing-policy?module=openconfig-routing-policy&revision=2022-05-24http://openconfig.net/yang/segment-routing-types?module=openconfig-segment-routing-types&revision=2020-02-04http://openconfig.net/yang/telemetry?module=openconfig-telemetry&revision=2018-11-21http://openconfig.net/yang/telemetry-types?module=openconfig-telemetry-types&revision=2018-11-21http://openconfig.net/yang/terminal-device?module=openconfig-terminal-device&revision=2021-02-23http://openconfig.net/yang/transport-types?module=openconfig-transport-types&revision=2021-03-22http://openconfig.net/yang/types/inet?module=openconfig-inet-types&revision=2021-08-17http://openconfig.net/yang/types/yang?module=openconfig-yang-types&revision=2021-07-14http://sssup.it/yang/vlan?module=vlanhttp://tail-f.com/ns/aaa/1.1?module=tailf-aaa&revision=2015-06-16http://tail-f.com/ns/kicker?module=tailf-kicker&revision=2017-03-16http://tail-f.com/yang/acm?module=tailf-acm&revision=2013-03-07http://tail-f.com/yang/common-monitoring?module=tailf-common-monitoring&revision=2013-06-14http://tail-f.com/yang/confd-monitoring?module=tailf-confd-monitoring&revision=2013-06-14http://tail-f.com/yang/netconf-monitoring?module=tailf-netconf-monitoring&revision=2016-11-24urn:ietf:params:xml:ns:yang:iana-crypt-hash?module=iana-crypt-hash&revision=2014-08-06&features=crypt-hash-sha-512,crypt-hash-sha-256,crypt-hash-md5urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&revision=2013-07-15urn:ietf:params:xml:ns:yang:ietf-interfaces?module=ietf-interfaces&revision=2014-05-08&features=pre-provisioning,if-mib,arbitrary-namesurn:ietf:params:xml:ns:yang:ietf-netconf-acm?module=ietf-netconf-acm&revision=2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&revision=2010-10-04urn:ietf:params:xml:ns:yang:ietf-" -[2024-06-20 13:24:23,072] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:24:23,073] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: ending -[2024-06-20 13:24:23,092] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: starting -[2024-06-20 13:24:23,092] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:23,092] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:23,093] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:23,093] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:23,093] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:23,093] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:23,093] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:23,093] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: ending -[2024-06-20 13:24:23,093] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: starting -[2024-06-20 13:24:23,093] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:23,093] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:23,093] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:23,093] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:23,094] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:23,094] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:23,094] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:23,094] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: ending -[2024-06-20 13:24:23,094] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: starting -[2024-06-20 13:24:23,094] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:23,094] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:23,094] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:23,094] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:23,094] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:23,094] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:23,095] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:23,095] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: ending -[2024-06-20 13:24:23,095] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: starting -[2024-06-20 13:24:23,095] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:23,095] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:23,095] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:23,095] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:23,095] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:23,095] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: appending 16376 bytes -[2024-06-20 13:24:23,095] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: fragment = "netconf-notifications?module=ietf-netconf-notifications&revision=2012-02-06urn:ietf:params:xml:ns:yang:ietf-yang-library?module=ietf-yang-library&revision=2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&revision=2013-07-15urn:ietf:params:xml:ns:netconf:base:1.0?module=ietf-netconf&revision=2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?module=ietf-netconf-with-defaults&revision=2011-06-01running1717-750545-631285iana-crypt-hash2014-08-06yangurn:ietf:params:xml:ns:yang:iana-crypt-hashNETCONFietf-inet-types2013-07-15yangurn:ietf:params:xml:ns:yang:ietf-inet-typesNETCONFietf-interfaces2014-05-08yangurn:ietf:params:xml:ns:yang:ietf-interfacesNETCONFietf-netconf2011-06-01yangurn:ietf:params:xml:ns:netconf:base:1.0NETCONFietf-netconf-acm2012-02-22yangurn:ietf:params:xml:ns:yang:ietf-netconf-acmNETCONFietf-netconf-monitoring2010-10-04yangurn:ietf:params:xml:ns:yang:ietf-netconf-monitoringNETCONFietf-netconf-notifications2012-02-06yangurn:ietf:params:xml:ns:yang:ietf-netconf-notificationsNETCONFietf-netconf-with-defaults2011-06-01yangurn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsNETCONFietf-yang-library2016-06-21yangurn:ietf:params:xml:ns:yang:ietf-yang-libraryNETCONFietf-yang-types2013-07-15yangurn:ietf:params:xml:ns:yang:ietf-yang-typesNETCONFopenconfig-alarm-types2018-01-16yanghttp://openconfig.net/yang/alarms/typesNETCONFopenconfig-bfd2022-06-28yanghttp://openconfig.net/yang/bfdNETCONFopenconfig-bgp2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common-multiprotocol2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common-structure2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-errors2021-08-06yanghttp://openconfig.net/yang/bgp-typesNETCONFopenconfig-bgp-global2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-neighbor2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-peer-group2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-types2021-08-06yanghttp://openconfig.net/yang/bgp-typesNETCONFopenconfig-evpn-types2021-06-21yanghttp://openconfig.net/yang/evpn-typesNETCONFopenconfig-if-ethernet2022-04-20yanghttp://openconfig.net/yang/interfaces/ethernetNETCONFopenconfig-if-ip2019-01-08yanghttp://openconfig.net/yang/interfaces/ipNETCONFopenconfig-inet-types2021-08-17yanghttp://openconfig.net/yang/types/inetNETCONFopenconfig-interfaces2021-04-06yanghttp://openconfig.net/yang/interfacesNETCONFopenconfig-lldp2018-11-21yanghttp://openconfig.net/yang/lldpNETCONFopenconfig-lldp-types2018-11-21yanghttp://openconfig.net/yang/lldp/typesNETCONFopenconfig-mpls-types2021-12-01yanghttp://openconfig.net/yang/mpls-typesNETCONFopenconfig-network-instance-types2021-07-14yanghttp://openconfig.net/yang/network-instance-typesNETCONFopenconfig-ospf-types2018-11-21yanghttp://openconfig.net/yang/ospf-typesNETCONFopenconfig-ospfv22022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-area2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-area-interface2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-common2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-global2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-lsdb2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-platform2018-01-30yanghttp://openconfig.net/yang/platformNETCONFopenconfig-platform-port2021-04-22yanghttp://openconfig.net/yang/platform/portNETCONFopenconfig-platform-transceiver2021-02-23yanghttp://openconfig.net/yang/platform/transceiverNETCONFopenconfig-platform-types2021-01-18yanghttp://openconfig.net/yang/platform-typesNETCONFopenconfig-policy-types2022-11-08yanghttp://openconfig.net/yang/policy-typesNETCONFopenconfig-protocolsyanghttp://openconfig.net/yang/protocolsNETCONFopenconfig-rib-bgp2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-shared-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-table-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-tables2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-types2019-03-14yanghttp://openconfig.net/yang/rib/bgp-typesNETCONFopenconfig-routing-policy2022-05-24yanghttp://openconfig.net/yang/routing-policyNETCONFopenconfig-segment-routing-types2020-02-04yanghttp://openconfig.net/yang/segment-routing-typesNETCONFopenconfig-telemetry2018-11-21yanghttp://openconfig.net/yang/telemetryNETCONFopenconfig-telemetry-types2018-11-21yanghttp://openconfig.net/yang/telemetry-typesNETCONFopenconfig-terminal-device2021-02-23yanghttp://openconfig.net/yang/terminal-deviceNETCONFopenconfig-transport-types2021-03-22yanghttp://openconfig.net/yang/transport-typesNETCONFopenconfig-types2019-04-16yanghttp://openconfig.net/yang/openconfig-typesNETCONFopenconfig-yang-types2021-07-14yanghttp://openconfig.net/yang/types/yangNETCONFtailf-aaa2015-06-16yanghttp://tail-f.com/ns/aaa/1.1NETCONFtailf-acm2013-03-07yanghttp://tail-f.com/yang/acmNETCONFtailf-common-monitoring2013-06-14yanghttp://tail-f.com/yang/common-monitoringNETCONFtailf-confd-monitoring2013-06-14yanghttp://tail-f.com/yang/confd-monitoringNETCONFtailf-kicker2017-03-16yanghttp://tail-f.com/ns/kickerNETCONFtailf-netconf-monitoring2016-11-24yanghttp://tail-f.com/yang/netconf-monitoringNETCONFvlanyanghttp://sssup.it/yang/vlanNETCONF29netconf-sshadmin10.30.2.2062024-06-06T23:11:47+00:00200030netconf-sshadmin10.30.2.2062024-06-06T23:11:57+00:00400031netconf-sshadmin10.30.2.2062024-06-06T23:12:08+00:00200032netconf-sshadmin10.30.2.2082024-06-20T13:24:11+00:00200033netconf-sshadmin10.30.2.2082024-06-20T13:24:16+00:00200034netconf-sshadmin10.30.2.2082024-06-20T13:24:22+00:0010002024-06-06T22:51:41+00:0006013000NETCONFdefault NETCONF event streamfalsemellanoxNotifications regarding the transpondertrue2024-06-06T22:51:42.135613+00:00f1285a0c7bf3c6c159ca5c87b160ec60iana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashcrypt-hash-sha-512crypt-hash-sha-256crypt-hash-md5importietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesimportietf-interfaces2014-05-08urn:ietf:params:xml:ns:yang:ietf-interfacespre-provisioningif-mibarbitrary-namesimplementietf-netconf2011-06-01urn:ietf:params:xml:ns:netconf:base:1.0implementietf-netconf-acm2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-acmimplementietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringimplementietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsimplementietf-netconf-with-defaults2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsimplementietf-yang-library2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-libraryimplementietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesimportopenconfig-alarm-types2018-01-16http://openconfig.net/yang/alarms/typesimportopenconfig-bfd2022-06-28http://openconfig.net/yang/bfdimplementopenconfig-bgp2022-05-21http://openconfig.net/yang/bgpimplementopenconfig-bgp-common2022-05-21openconfig-bgp-common-structure2022-05-21openconfig-bgp-global2022-05-21openconfig-bgp-neighbor2022-05-21openconfig-bgp-peer-group2022-05-21openconfig-bgp-common-multiprotocol2022-05-21openconfig-bgp-types2021-08-06http://openconfig.net/yang/bgp-typesimportopenconfig-bgp-errors2021-08-06openconfig-evpn-types2021-06-21http://openconfig.net/yang/evpn-typesimportopenconfig-if-ethernet2022-04-20http://openconfig.net/yang/interfaces/ethernetimplementopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipimplementopenconfig-inet-types2021-08-17http://openconfig.net/yang/types/inetimportopenconfig-interfaces2021-04-06http://openconfig.net/yang/interfacesimplementopenconfig-lldp2018-11-21http://openconfig.net/yang/lldpimplementopenconfig-lldp-types2018-11-21http://openconfig.net/yang/lldp/typesimportopenconfig-mpls-types2021-12-01http://openconfig.net/yang/mpls-typesimportopenconfig-ospf-types2018-11-21http://openconfig.net/yang/ospf-typesimportopenconfig-ospfv22022-02-10http://openconfig.net/yang/ospfv2importopenconfig-ospfv2-area2022-02-10openconfig-ospfv2-common2022-02-10openconfig-ospfv2-global2022-02-10openconfig-ospfv2-lsdb2022-02-10openconfig-ospfv2-area-interface2022-02-10openconfig-platform2018-01-30http://openconfig.net/yang/platformimplementopenconfig-platform-port2021-04-22http://openconfig.net/yang/platform/portimplementopenconfig-platform-transceiver2021-02-23http://openconfig.net/yang/platform/transceiverimplementopenconfig-platform-types2021-01-18http://openconfig.net/yang/platform-typesimportopenconfig-policy-types2022-11-08http://openconfig.net/yang/policy-typesimportopenconfig-protocolshttp://openconfig.net/yang/protocolsimplementopenconfig-rib-bgp2022-06-06http://openconfig.net/yang/rib/bgpimportopenconfig-rib-bgp-attributes2022-06-06openconfig-rib-bgp-tables2022-06-06openconfig-rib-bgp-table-attributes2022-06-06openconfig-rib-bgp-shared-attributes2022-06-06openconfig-rib-bgp-types2019-03-14http://openconfig.net/yang/rib/bgp-typesimportopenconfig-routing-policy2022-05-24http://openconfig.net/yang/routing-policyimplementopenconfig-telemetry2018-11-21http://openconfig.net/yang/telemetryimplementopenconfig-telemetry-types2018-11-21http://openconfig.net/yang/telemetry-typesimportopenconfig-terminal-device2021-02-23http://openconfig.net/yang/terminal-deviceimplementopenconfig-transport-types2021-03-22http://openconfig.net/yang/transport-typesimportopenconfig-types2019-04-16http://openconfig.net/yang/openconfig-typesimportopenconfig-yang-types2021-07-14http://openconfig.net/yang/types/yangimporttailf-aaa2015-06-16http://tail-f.com/ns/aaa/1.1implementtailf-acm2013-03-07http://tail-f.com/yang/acmimplementtailf-common-monitoring2013-06-14http://tail-f.com/yang/common-monitoringimporttailf-confd-monitoring2013-06-14http://tail-f.com/yang/confd-monitoringimplementtailf-kicker2017-03-16http://tail-f.com/ns/kickerimplementtailf-netconf-monitoring2016-11-24http://tail-f.com/yang/netconf-monitoringimplementvlanhttp://sssup.it/yang/vlanimplementopenconfig-segment-routing-types2020-02-04http://openconfig.net/yang/segment-routing-typesimportopenconfig-network-instance-types2021-07-14http://openconfig.net/yang/network-instance-typesimport
" -[2024-06-20 13:24:23,105] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: matching from 10855 bytes from start of buffer -[2024-06-20 13:24:23,105] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: regular expression start=0, end=4 -[2024-06-20 13:24:23,105] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: found end of message delimiter -[2024-06-20 13:24:23,106] DEBUG:ncclient.operations.rpc:[host 172.17.254.42 session-id 34] Delivering to -[2024-06-20 13:24:23,107] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: saving back rest of message after 10859 bytes, original size 10859 -[2024-06-20 13:24:23,114] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: ending -[2024-06-20 13:24:23,114] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,115] INFO:root:dic {'frequency': '192056250'} -[2024-06-20 13:24:23,115] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,117] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0'} -[2024-06-20 13:24:23,117] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,118] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8'} -[2024-06-20 13:24:23,118] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,119] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1'} -[2024-06-20 13:24:23,120] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,121] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:24:23,121] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,122] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:24:23,123] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,124] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:24:23,124] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,125] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-06-20 13:24:23,126] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,127] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:24:23,127] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,128] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:24:23,129] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,130] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:24:23,130] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,132] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-06-20 13:24:23,132] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,133] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:24:23,133] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,135] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:24:23,135] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,136] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:24:23,136] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,138] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-06-20 13:24:23,139] INFO:root:parameters {'channels': [{'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1', 'name': {'index': 'channel-1'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2', 'name': {'index': 'channel-2'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3', 'name': {'index': 'channel-3'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4', 'name': {'index': 'channel-4'}}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'ports': [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})]} -[2024-06-20 13:24:23,140] DEBUG:context.client.ContextClient:SetOpticalConfig request: {"config": "{\"channels\": [{\"frequency\": \"192056250\", \"target-output-power\": \"1.0\", \"operational-mode\": \"8\", \"line-port\": \"transceiver-1\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": [\"transceiver-1\", \"transceiver-2\", \"transceiver-3\", \"transceiver-4\"]}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}", "device_id": {"device_uuid": {"uuid": "ce0cdfdd-2182-5027-8177-676ca3244f9d"}}} -[2024-06-20 13:24:23,160] DEBUG:context.client.ContextClient:SetOpticalConfig result: {"opticalconfig_uuid": ""} -[2024-06-20 13:24:23,160] DEBUG:device.service.Tools:results_getconfig = [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-06-20 13:24:23,160] INFO:device.service.Tools:results_getconfig = [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-06-20 13:24:23,161] INFO:ncclient.operations.rpc:[host 172.17.254.42 session-id 34] Requesting 'Get' -[2024-06-20 13:24:23,161] DEBUG:ncclient.operations.rpc:[host 172.17.254.42 session-id 34] Sync request, will wait for timeout=120 -[2024-06-20 13:24:23,251] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: starting -[2024-06-20 13:24:23,251] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:23,252] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:23,252] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:23,252] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:23,252] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:23,252] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:23,252] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:23,253] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: ending -[2024-06-20 13:24:23,253] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: starting -[2024-06-20 13:24:23,253] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:23,253] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:23,253] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:23,253] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:23,254] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:23,254] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:23,254] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:23,254] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: ending -[2024-06-20 13:24:23,254] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: starting -[2024-06-20 13:24:23,254] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:23,254] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:23,255] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:23,255] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:23,255] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:23,255] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:23,255] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:23,255] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: ending -[2024-06-20 13:24:23,255] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: starting -[2024-06-20 13:24:23,256] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:23,256] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:23,256] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:23,256] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:23,256] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:23,256] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: appending 16376 bytes -[2024-06-20 13:24:23,257] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: fragment = " -falsefalsetruefalsefalsefalseeth0eth0truefalsetrue00
192.168.1.1192.168.1.124
DISABLEfalsetruefalse
falsefalsetrue1false
truechannel-1channel-1channel-1oc-opt-types:OPTICAL_CHANNEL1920562501.08transceiver-11920562501.08transceiver-110.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-2channel-2channel-2oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-21916000000.00transceiver-210.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-3channel-3channel-3oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-31916000000.00transceiver-310.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-4channel-4channel-4oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-41916000000.00transceiver-410.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00devicedeviceMellanoxSwitchoc-platform-types:OPERATING_SYSTEMSSSA-CNIT1.0.01.0.01.0.0610610port-1port-1port-1oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index1onos-index1channel-1channel-1channel-1port-2port-2port-2oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index2onos-index2channel-2channel-2channel-2port-3port-3port-3oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index3onos-index3channel-3channel-3channel-3port-4port-4port-4oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index4onos-index4channel-4channel-4channel-4transceiver-1transceiver-1transceiver-1oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-1transceiver-2transceiver-2transceiver-2oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-2transceiver-3transceiver-3transceiver-3oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHEREN" -[2024-06-20 13:24:23,257] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:24:23,257] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: ending -[2024-06-20 13:24:23,271] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: starting -[2024-06-20 13:24:23,271] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:23,271] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:23,271] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:23,271] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:23,272] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:23,272] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:23,272] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:23,272] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: ending -[2024-06-20 13:24:23,272] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: starting -[2024-06-20 13:24:23,272] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:23,273] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:23,273] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:23,273] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:23,273] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:23,273] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:23,273] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:23,273] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: ending -[2024-06-20 13:24:23,274] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: starting -[2024-06-20 13:24:23,274] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:23,274] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:23,274] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:23,274] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:23,274] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:23,274] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:23,275] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:23,275] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: ending -[2024-06-20 13:24:23,275] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: starting -[2024-06-20 13:24:23,275] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:23,275] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:23,275] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:23,275] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:23,276] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:23,276] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: appending 16376 bytes -[2024-06-20 13:24:23,276] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: fragment = "T_OPTICCisco400zr-QSFP-DD01156732111channel-3transceiver-4transceiver-4transceiver-4oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-4falsefalsetruefalsefalsefalse192.168.1.1192.168.1.188true65432179truefalseNONEfalse30903030falsefalsefalsetruefalsefalse0falsefalsefalsefalseREJECT_ROUTEREJECT_ROUTERFC2328_COMPATIBLE11Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONE1Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-1transceiver-111Optical channel assigned 100OPTICAL_CHANNELchannel-1100.01Optical channel assigned 100OPTICAL_CHANNELchannel-1100.022Logical channel 2DISABLEDoc-opt-types:PROT_OTNNONE2Logical channel 2DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-2transceiver-211Optical channel assigned 100OPTICAL_CHANNELchannel-2100.01Optical channel assigned 100OPTICAL_CHANNELchannel-2100.033Logical channel 3DISABLEDoc-opt-types:PROT_OTNNONE3Logical channel 3DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-3transceiver-311Optical channel assigned 100OPTICAL_CHANNELchannel-3100.01Optical channel assigned 100OPTICAL_CHANNELchannel-3100.044Logical channel 4DISABLEDoc-opt-types:PROT_OTNNONE4Logical channel 4DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-4transceiver-411Optical channel assigned 100OPTICAL_CHANNELchannel-4100.01Optical channel assigned 100OPTICAL_CHANNELchannel-4100.011FEC1Ericsson22FEC2Ericssonadmin9000100$1$lPNyHD3D$t9eLr07hXOEy1983ReE8k0/var/confd/homes/admin/.ssh/var/confd/homes/adminoper9003103$1$gflBsGcV$PdW1/SBjHWGBRlZuBfdva//var/confd/homes/oper/.ssh/var/confd/homes/operoptical9001101$1$HCxex4ow$jHGQxsbMB1dWNK97ydKv20/var/confd/homes/optical/.ssh/var/confd/homes/opticalpacket9002102$1$2CYgcCNT$bV6L4CxgDPQP9EMyZ4Rsc1/var/confd/homes/packet/.ssh/var/confd/homes/packetprivate9005103$1$2MXxtlsM$qZfOcm4WXD2c8duQXzdru0/var/confd/homes/private/.ssh/var/confd/homes/privatepublic9004100$1$1tOWUHZV$iad9vZD8aF68c6x21nhHo//var/confd/homes/public/.ssh/var/confd/homes/public0\h> 15\h# exec0actionautowizardenableexithelpstartup15configure6.4falsestartediana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashianachietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesinetietf-interfaces2014-05-08urn:ietf:params:xml:ns:yang:ietf-interfacesifietf-netconf-acm2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-acmnacmietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringncmietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsncnietf-yang-library2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-libraryyanglibnetconfrestietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesyangnetconf_netmodurn:ietf:params:xml:ns:netmod:notificationnmnetconfopenconfig-alarm-types2018-01-16http://openconfig.net/yang/alarms/typesoc-alarm-typesopenconfig-bfd2022-06-28http://openconfig.net/yang/bfdoc-bfdopenconfig-bgp2022-05-21http://openconfig.net/yang/bgpoc-bgpopenconfig-bgp-types2021-08-06http://openconfig.net/yang/bgp-typesoc-bgp-typesopenconfig-evpn-types2021-06-21http://openconfig.net/yang/evpn-typesoc-evpn-typesopenconfig-if-ethernet2022-04-20http://openconfig.net/yang/interfaces/ethernetoc-ethopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipoc-ipopenconfig-inet-types2021-08-17http://openconfig.net/yang/types/inetoc-inetopenconfig-interfaces2021-04-06http://openconfig.net/yang/interfacesoc-ifopenconfig-lldp2018-11-21http://openconfig.net/yang/lldpoc-lldpopenconfig-lldp-types2018-11-21http://openconfig.net/yang/lldp/typesoc-lldp-typesopenconfig-mpls-types2021-12-01http://openconfig.net/yang/mpls-typesoc-mplstopenconfig-network-instance-types2021-07-14http://openconfig.net/yang/network-instance-typesoc-ni-typesopenconfig-ospf-types2018-11-21http://openconfig.net/yang/ospf-typesoc-ospf-typesNETCONFdefault NETCONF event streamfalsemellanoxNotifications regarding the transpondertrue2024-06-06T22:51:42.135613+00:00truepermitpermitpermittrue000adminadminprivateoperoperpublicoptopticalpckpacketany-group*get*/readpermittailf-aaa-authenticationtailf-aaa/aaa/authentication/users/user[name='$USER']read updatepermittailf-aaa-usertailf-aaa/user[name='$USER']create read update deletepermittailf-webui-usertailf-webui/webui/data-stores/user-profile[username='$USER']create read update deletepermitpacketpckvlanvlan/switched-vlanscreate read update deletepermitterminal-device*/terminal-devicecreate update deletedenycomponents*/componentscreate update deletedenyopticaloptterminal-device*/terminal-devicecreate read update deletepermitcomponents*/componentscreate read update deletepermitvlanvlan/switched-vlanscreate update deletedenyadminadminany-accesspermiturn:ietf:params:netconf:base:1.0urn:ietf:params:netconf:base:1.1urn:ietf:params:netconf:capability:writable-running:1.0urn:ietf:params:netconf:capability:xpath:1.0urn:ietf:params:netconf:capability:validate:1.0urn:ietf:params:netconf:capability:validate:1.1urn:ietf:params:netconf:capability:rollback-on-error:1.0urn:ietf:params:netconf:capability:notification:1.0urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all-taggedurn:ietf:params:netconf:capability:yang-library:1.0?revision=2016-06-21&module-set-id=f1285a0c7bf3c6c159ca5c87b160ec60http://tail-f.com/ns/netconf/extensionshttp://openconfig.net/yang/alarms/types?module=openconfig-alarm-types&revision=2018-01-16http://openconfig.net/yang/bfd?module=openconfig-bfd&revision=2022-06-28http://openconfig.net/yang/bgp?module=openconfig-bgp&revision=2022-05-21http://openconfig.net/yang/bgp-types?module=openconfig-bgp-types&revision=2021-08-06http://openconfig.net/yang/evpn-types?module=openconfig-evpn-types&revision=2021-06-21http://openconfig.net/yang/interfaces?module=openconfig-interfaces&revision=2021-04-06http://openconfig.net/yang/interfaces/ethernet?module=openconfig-if-ethernet&revision=2022-04-20http://openconfig.net/yang/interfaces/ip?module=openconfig-if-ip&revision=2019-01-08http://openconfig.net/yang/lldp?module=openconfig-lldp&revision=2018-11-21http://openconfig.net/yang/lldp/types?module=openconfig-lldp-types&revision=2018-11-21http://openconfig.net/yang/mpls-types?module=openconfig-mpls-types&revision=2021-12-01http://openconfig.net/yang/network-instance-types?module=openconfig-network-instance-types&revision=2021-07-14http://openconfig.net/yang/openconfig-types?module=openconfig-types&revision=2019-04-16http://openconfig.net/yang/ospf-types?module=openconfig-ospf-types&revision=2018-11-21http://openconfig.net/yang/ospfv2?module=openconfig-ospfv2&revision=2022-02-10http://openconfig.net/yang/platform?module=openconfig-platform&revision=2018-01-30http://openconfig.net/yang/platform-types?module=openconfig-platform-types&revision=2021-01-18http://openconfig.net/yang/platform/port?module=openconfig-platform-port&revision=2021-04-22http://openconfig.net/yang/platform/transceiver?module=openconfig-platform-transceiver&revision=2021-02-23http://openconfig.net/yang/policy-types?module=openconfig-policy-types&revision=2022-11-08http://openconfig.net/yang/protocols?module=openconfig-protocolshttp://openconfig.net/yang/rib/bgp?module=openconfig-rib-bgp&revision=2022-06-06http://openconfig.net/yang/rib/bgp-types?module=openconfig-rib-bgp-types&revision=2019-03-14http://openconfig.net/yang/routing-policy?module=openconfig-routing-policy&revision=2022-05-24http://openconfig.net/yang/segment-routing-types?module=openconfig-segment-routing-types&revision=2020-02-04http://openconfig.net/yang/telemetry?module=openconfig-telemetry&revision=2018-11-21http://openconfig.net/yang/telemetry-types?module=openconfig-telemetry-types&revision=2018-11-21http://openconfig.net/yang/terminal-device?module=openconfig-terminal-device&revision=2021-02-23http://openconfig.net/yang/transport-types?module=openconfig-transport-types&revision=2021-03-22http://openconfig.net/yang/types/inet?module=openconfig-inet-types&revision=2021-08-17http://openconfig.net/yang/types/yang?module=openconfig-yang-types&revision=2021-07-14http://sssup.it/yang/vlan?module=vlanhttp://tail-f.com/ns/aaa/1.1?module=tailf-aaa&revision=2015-06-16http://tail-f.com/ns/kicker?module=tailf-kicker&revision=2017-03-16http://tail-f.com/yang/acm?module=tailf-acm&revision=2013-03-07http://tail-f.com/yang/common-monitoring?module=tailf-common-monitoring&revision=2013-06-14http://tail-f.com/yang/confd-monitoring?module=tailf-confd-monitoring&revision=2013-06-14http://tail-f.com/yang/netconf-monitoring?module=tailf-netconf-monitoring&revision=2016-11-24urn:ietf:params:xml:ns:yang:iana-crypt-hash?module=iana-crypt-hash&revision=2014-08-06&features=crypt-hash-sha-512,crypt-hash-sha-256,crypt-hash-md5urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&revision=2013-07-15urn:ietf:params:xml:ns:yang:ietf-interfaces?module=ietf-interfaces&revision=2014-05-08&features=pre-provisioning,if-mib,arbitrary-namesurn:ietf:params:xml:ns:yang:ietf-netconf-acm?module=ietf-netconf-acm&revision=2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&revision=2010-10-04urn:ietf:params:xml:ns:yang:ietf-" -[2024-06-20 13:24:23,286] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:24:23,286] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: ending -[2024-06-20 13:24:23,308] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: starting -[2024-06-20 13:24:23,308] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:23,308] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:23,309] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:23,309] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:23,309] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:23,309] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:23,309] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:23,309] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: ending -[2024-06-20 13:24:23,310] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: starting -[2024-06-20 13:24:23,310] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:23,310] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:23,310] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:23,310] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:23,310] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:23,310] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:23,310] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:23,311] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: ending -[2024-06-20 13:24:23,311] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: starting -[2024-06-20 13:24:23,311] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:23,311] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:23,311] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:23,311] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:23,312] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:23,312] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: not enough data for chunk yet -[2024-06-20 13:24:23,312] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: setting start to 0 -[2024-06-20 13:24:23,312] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: ending -[2024-06-20 13:24:23,312] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: starting -[2024-06-20 13:24:23,312] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:23,313] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:23,313] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:23,313] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: found chunk delimiter -[2024-06-20 13:24:23,313] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:23,313] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: appending 16376 bytes -[2024-06-20 13:24:23,313] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: fragment = "netconf-notifications?module=ietf-netconf-notifications&revision=2012-02-06urn:ietf:params:xml:ns:yang:ietf-yang-library?module=ietf-yang-library&revision=2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&revision=2013-07-15urn:ietf:params:xml:ns:netconf:base:1.0?module=ietf-netconf&revision=2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?module=ietf-netconf-with-defaults&revision=2011-06-01running1717-750545-631285iana-crypt-hash2014-08-06yangurn:ietf:params:xml:ns:yang:iana-crypt-hashNETCONFietf-inet-types2013-07-15yangurn:ietf:params:xml:ns:yang:ietf-inet-typesNETCONFietf-interfaces2014-05-08yangurn:ietf:params:xml:ns:yang:ietf-interfacesNETCONFietf-netconf2011-06-01yangurn:ietf:params:xml:ns:netconf:base:1.0NETCONFietf-netconf-acm2012-02-22yangurn:ietf:params:xml:ns:yang:ietf-netconf-acmNETCONFietf-netconf-monitoring2010-10-04yangurn:ietf:params:xml:ns:yang:ietf-netconf-monitoringNETCONFietf-netconf-notifications2012-02-06yangurn:ietf:params:xml:ns:yang:ietf-netconf-notificationsNETCONFietf-netconf-with-defaults2011-06-01yangurn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsNETCONFietf-yang-library2016-06-21yangurn:ietf:params:xml:ns:yang:ietf-yang-libraryNETCONFietf-yang-types2013-07-15yangurn:ietf:params:xml:ns:yang:ietf-yang-typesNETCONFopenconfig-alarm-types2018-01-16yanghttp://openconfig.net/yang/alarms/typesNETCONFopenconfig-bfd2022-06-28yanghttp://openconfig.net/yang/bfdNETCONFopenconfig-bgp2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common-multiprotocol2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common-structure2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-errors2021-08-06yanghttp://openconfig.net/yang/bgp-typesNETCONFopenconfig-bgp-global2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-neighbor2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-peer-group2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-types2021-08-06yanghttp://openconfig.net/yang/bgp-typesNETCONFopenconfig-evpn-types2021-06-21yanghttp://openconfig.net/yang/evpn-typesNETCONFopenconfig-if-ethernet2022-04-20yanghttp://openconfig.net/yang/interfaces/ethernetNETCONFopenconfig-if-ip2019-01-08yanghttp://openconfig.net/yang/interfaces/ipNETCONFopenconfig-inet-types2021-08-17yanghttp://openconfig.net/yang/types/inetNETCONFopenconfig-interfaces2021-04-06yanghttp://openconfig.net/yang/interfacesNETCONFopenconfig-lldp2018-11-21yanghttp://openconfig.net/yang/lldpNETCONFopenconfig-lldp-types2018-11-21yanghttp://openconfig.net/yang/lldp/typesNETCONFopenconfig-mpls-types2021-12-01yanghttp://openconfig.net/yang/mpls-typesNETCONFopenconfig-network-instance-types2021-07-14yanghttp://openconfig.net/yang/network-instance-typesNETCONFopenconfig-ospf-types2018-11-21yanghttp://openconfig.net/yang/ospf-typesNETCONFopenconfig-ospfv22022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-area2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-area-interface2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-common2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-global2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-lsdb2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-platform2018-01-30yanghttp://openconfig.net/yang/platformNETCONFopenconfig-platform-port2021-04-22yanghttp://openconfig.net/yang/platform/portNETCONFopenconfig-platform-transceiver2021-02-23yanghttp://openconfig.net/yang/platform/transceiverNETCONFopenconfig-platform-types2021-01-18yanghttp://openconfig.net/yang/platform-typesNETCONFopenconfig-policy-types2022-11-08yanghttp://openconfig.net/yang/policy-typesNETCONFopenconfig-protocolsyanghttp://openconfig.net/yang/protocolsNETCONFopenconfig-rib-bgp2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-shared-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-table-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-tables2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-types2019-03-14yanghttp://openconfig.net/yang/rib/bgp-typesNETCONFopenconfig-routing-policy2022-05-24yanghttp://openconfig.net/yang/routing-policyNETCONFopenconfig-segment-routing-types2020-02-04yanghttp://openconfig.net/yang/segment-routing-typesNETCONFopenconfig-telemetry2018-11-21yanghttp://openconfig.net/yang/telemetryNETCONFopenconfig-telemetry-types2018-11-21yanghttp://openconfig.net/yang/telemetry-typesNETCONFopenconfig-terminal-device2021-02-23yanghttp://openconfig.net/yang/terminal-deviceNETCONFopenconfig-transport-types2021-03-22yanghttp://openconfig.net/yang/transport-typesNETCONFopenconfig-types2019-04-16yanghttp://openconfig.net/yang/openconfig-typesNETCONFopenconfig-yang-types2021-07-14yanghttp://openconfig.net/yang/types/yangNETCONFtailf-aaa2015-06-16yanghttp://tail-f.com/ns/aaa/1.1NETCONFtailf-acm2013-03-07yanghttp://tail-f.com/yang/acmNETCONFtailf-common-monitoring2013-06-14yanghttp://tail-f.com/yang/common-monitoringNETCONFtailf-confd-monitoring2013-06-14yanghttp://tail-f.com/yang/confd-monitoringNETCONFtailf-kicker2017-03-16yanghttp://tail-f.com/ns/kickerNETCONFtailf-netconf-monitoring2016-11-24yanghttp://tail-f.com/yang/netconf-monitoringNETCONFvlanyanghttp://sssup.it/yang/vlanNETCONF29netconf-sshadmin10.30.2.2062024-06-06T23:11:47+00:00200030netconf-sshadmin10.30.2.2062024-06-06T23:11:57+00:00400031netconf-sshadmin10.30.2.2062024-06-06T23:12:08+00:00200032netconf-sshadmin10.30.2.2082024-06-20T13:24:11+00:00200033netconf-sshadmin10.30.2.2082024-06-20T13:24:16+00:00200034netconf-sshadmin10.30.2.2082024-06-20T13:24:22+00:0020002024-06-06T22:51:41+00:0006014000NETCONFdefault NETCONF event streamfalsemellanoxNotifications regarding the transpondertrue2024-06-06T22:51:42.135613+00:00f1285a0c7bf3c6c159ca5c87b160ec60iana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashcrypt-hash-sha-512crypt-hash-sha-256crypt-hash-md5importietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesimportietf-interfaces2014-05-08urn:ietf:params:xml:ns:yang:ietf-interfacespre-provisioningif-mibarbitrary-namesimplementietf-netconf2011-06-01urn:ietf:params:xml:ns:netconf:base:1.0implementietf-netconf-acm2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-acmimplementietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringimplementietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsimplementietf-netconf-with-defaults2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsimplementietf-yang-library2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-libraryimplementietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesimportopenconfig-alarm-types2018-01-16http://openconfig.net/yang/alarms/typesimportopenconfig-bfd2022-06-28http://openconfig.net/yang/bfdimplementopenconfig-bgp2022-05-21http://openconfig.net/yang/bgpimplementopenconfig-bgp-common2022-05-21openconfig-bgp-common-structure2022-05-21openconfig-bgp-global2022-05-21openconfig-bgp-neighbor2022-05-21openconfig-bgp-peer-group2022-05-21openconfig-bgp-common-multiprotocol2022-05-21openconfig-bgp-types2021-08-06http://openconfig.net/yang/bgp-typesimportopenconfig-bgp-errors2021-08-06openconfig-evpn-types2021-06-21http://openconfig.net/yang/evpn-typesimportopenconfig-if-ethernet2022-04-20http://openconfig.net/yang/interfaces/ethernetimplementopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipimplementopenconfig-inet-types2021-08-17http://openconfig.net/yang/types/inetimportopenconfig-interfaces2021-04-06http://openconfig.net/yang/interfacesimplementopenconfig-lldp2018-11-21http://openconfig.net/yang/lldpimplementopenconfig-lldp-types2018-11-21http://openconfig.net/yang/lldp/typesimportopenconfig-mpls-types2021-12-01http://openconfig.net/yang/mpls-typesimportopenconfig-ospf-types2018-11-21http://openconfig.net/yang/ospf-typesimportopenconfig-ospfv22022-02-10http://openconfig.net/yang/ospfv2importopenconfig-ospfv2-area2022-02-10openconfig-ospfv2-common2022-02-10openconfig-ospfv2-global2022-02-10openconfig-ospfv2-lsdb2022-02-10openconfig-ospfv2-area-interface2022-02-10openconfig-platform2018-01-30http://openconfig.net/yang/platformimplementopenconfig-platform-port2021-04-22http://openconfig.net/yang/platform/portimplementopenconfig-platform-transceiver2021-02-23http://openconfig.net/yang/platform/transceiverimplementopenconfig-platform-types2021-01-18http://openconfig.net/yang/platform-typesimportopenconfig-policy-types2022-11-08http://openconfig.net/yang/policy-typesimportopenconfig-protocolshttp://openconfig.net/yang/protocolsimplementopenconfig-rib-bgp2022-06-06http://openconfig.net/yang/rib/bgpimportopenconfig-rib-bgp-attributes2022-06-06openconfig-rib-bgp-tables2022-06-06openconfig-rib-bgp-table-attributes2022-06-06openconfig-rib-bgp-shared-attributes2022-06-06openconfig-rib-bgp-types2019-03-14http://openconfig.net/yang/rib/bgp-typesimportopenconfig-routing-policy2022-05-24http://openconfig.net/yang/routing-policyimplementopenconfig-telemetry2018-11-21http://openconfig.net/yang/telemetryimplementopenconfig-telemetry-types2018-11-21http://openconfig.net/yang/telemetry-typesimportopenconfig-terminal-device2021-02-23http://openconfig.net/yang/terminal-deviceimplementopenconfig-transport-types2021-03-22http://openconfig.net/yang/transport-typesimportopenconfig-types2019-04-16http://openconfig.net/yang/openconfig-typesimportopenconfig-yang-types2021-07-14http://openconfig.net/yang/types/yangimporttailf-aaa2015-06-16http://tail-f.com/ns/aaa/1.1implementtailf-acm2013-03-07http://tail-f.com/yang/acmimplementtailf-common-monitoring2013-06-14http://tail-f.com/yang/common-monitoringimporttailf-confd-monitoring2013-06-14http://tail-f.com/yang/confd-monitoringimplementtailf-kicker2017-03-16http://tail-f.com/ns/kickerimplementtailf-netconf-monitoring2016-11-24http://tail-f.com/yang/netconf-monitoringimplementvlanhttp://sssup.it/yang/vlanimplementopenconfig-segment-routing-types2020-02-04http://openconfig.net/yang/segment-routing-typesimportopenconfig-network-instance-types2021-07-14http://openconfig.net/yang/network-instance-typesimport
" -[2024-06-20 13:24:23,321] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: matching from 10855 bytes from start of buffer -[2024-06-20 13:24:23,321] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: regular expression start=0, end=4 -[2024-06-20 13:24:23,321] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: found end of message delimiter -[2024-06-20 13:24:23,324] DEBUG:ncclient.operations.rpc:[host 172.17.254.42 session-id 34] Delivering to -[2024-06-20 13:24:23,324] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: saving back rest of message after 10859 bytes, original size 10859 -[2024-06-20 13:24:23,324] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 34] _parse11: ending -[2024-06-20 13:24:23,336] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,339] INFO:root:dic {'frequency': '192056250'} -[2024-06-20 13:24:23,339] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,341] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0'} -[2024-06-20 13:24:23,342] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,344] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8'} -[2024-06-20 13:24:23,344] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,346] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1'} -[2024-06-20 13:24:23,347] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,349] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:24:23,349] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,351] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:24:23,352] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,354] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:24:23,354] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,357] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-06-20 13:24:23,358] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,360] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:24:23,361] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,363] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:24:23,364] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,366] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:24:23,367] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,369] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-06-20 13:24:23,370] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,372] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:24:23,372] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,374] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:24:23,374] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,376] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:24:23,377] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:24:23,378] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-06-20 13:24:23,380] INFO:root:parameters {'channels': [{'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1', 'name': {'index': 'channel-1'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2', 'name': {'index': 'channel-2'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3', 'name': {'index': 'channel-3'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4', 'name': {'index': 'channel-4'}}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'ports': [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})]} -[2024-06-20 13:24:23,381] DEBUG:context.client.ContextClient:SetOpticalConfig request: {"config": "{\"channels\": [{\"frequency\": \"192056250\", \"target-output-power\": \"1.0\", \"operational-mode\": \"8\", \"line-port\": \"transceiver-1\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": [\"transceiver-1\", \"transceiver-2\", \"transceiver-3\", \"transceiver-4\"]}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}", "device_id": {"device_uuid": {"uuid": "ce0cdfdd-2182-5027-8177-676ca3244f9d"}}} -[2024-06-20 13:24:23,419] DEBUG:context.client.ContextClient:SetOpticalConfig result: {"opticalconfig_uuid": ""} -[2024-06-20 13:24:23,420] DEBUG:context.client.ContextClient:SetDevice request: {"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.42"}}, {"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}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[1]", "resource_value": "{\"type\": \"port-1\", \"uuid\": \"1\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[2]", "resource_value": "{\"type\": \"port-2\", \"uuid\": \"2\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[3]", "resource_value": "{\"type\": \"port-3\", \"uuid\": \"3\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[4]", "resource_value": "{\"type\": \"port-4\", \"uuid\": \"4\"}"}}]}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "ce0cdfdd-2182-5027-8177-676ca3244f9d"}}, "endpoint_uuid": {"uuid": "1"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "port-1", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "ce0cdfdd-2182-5027-8177-676ca3244f9d"}}, "endpoint_uuid": {"uuid": "2"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "port-2", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "ce0cdfdd-2182-5027-8177-676ca3244f9d"}}, "endpoint_uuid": {"uuid": "3"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "port-3", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "ce0cdfdd-2182-5027-8177-676ca3244f9d"}}, "endpoint_uuid": {"uuid": "4"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "port-4", "kpi_sample_types": [], "name": ""}], "device_id": {"device_uuid": {"uuid": "ce0cdfdd-2182-5027-8177-676ca3244f9d"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-transponder", "name": "T2.3"} -[2024-06-20 13:24:23,484] DEBUG:context.client.ContextClient:SetDevice result: {"device_uuid": {"uuid": "ce0cdfdd-2182-5027-8177-676ca3244f9d"}} -[2024-06-20 13:24:23,485] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "ce0cdfdd-2182-5027-8177-676ca3244f9d"}}]}, "include_components": false, "include_config_rules": false, "include_endpoints": true} -[2024-06-20 13:24:23,518] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": [{"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"}]} -[2024-06-20 13:24:23,520] DEBUG:device.service.DeviceServiceServicerImpl:AddDevice reply: {"device_uuid": {"uuid": "ce0cdfdd-2182-5027-8177-676ca3244f9d"}} -[2024-06-20 13:24:30,345] DEBUG:device.service.DeviceServiceServicerImpl:AddDevice request: {"components": [], "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.21"}}, {"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": [], "device_id": {"device_uuid": {"uuid": "R1"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_DISABLED", "device_type": "optical-roadm", "name": ""} -[2024-06-20 13:24:30,346] DEBUG:context.client.ContextClient:Creating channel to 10.152.183.195:1010... -[2024-06-20 13:24:30,346] DEBUG:context.client.ContextClient:Channel created -[2024-06-20 13:24:30,346] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "R1"}}]}, "include_components": true, "include_config_rules": true, "include_endpoints": true} -[2024-06-20 13:24:30,358] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": []} -[2024-06-20 13:24:30,359] DEBUG:context.client.ContextClient:SetDevice request: {"components": [], "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.21"}}, {"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": [], "device_id": {"device_uuid": {"uuid": "R1"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_UNDEFINED", "device_type": "optical-roadm", "name": ""} -[2024-06-20 13:24:30,393] DEBUG:context.client.ContextClient:SetDevice result: {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}} -[2024-06-20 13:24:30,394] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}]}, "include_components": true, "include_config_rules": true, "include_endpoints": true} -[2024-06-20 13:24:30,418] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": [{"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.21"}}, {"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": [], "device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_UNDEFINED", "device_type": "optical-roadm", "name": "R1"}]} -[2024-06-20 13:24:30,418] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(68741528-2e94-5274-ab3c-fddcd8dc05ef) with filter_fields({'device_type': 'optical-roadm', 'driver': [11]})... -[2024-06-20 13:24:30,418] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(68741528-2e94-5274-ab3c-fddcd8dc05ef) with filter_fields({'device_type': 'optical-roadm', 'driver': [11]})... -[2024-06-20 13:24:30,419] DEBUG:ncclient.transport.session:[host None session 0x7fa7485c50a0] created: client_capabilities= -[2024-06-20 13:24:30,514] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session 0x7fa7485c50a0] parsing netconf v1.0 -[2024-06-20 13:24:30,515] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session 0x7fa7485c50a0] parsing netconf v1.0 -[2024-06-20 13:24:30,517] INFO:root:settings {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-roadm', 'username': 'admin'} -[2024-06-20 13:24:30,518] INFO:ncclient.operations.rpc:[host 172.17.254.21 session-id 21] Requesting 'Get' -[2024-06-20 13:24:30,518] DEBUG:ncclient.operations.rpc:[host 172.17.254.21 session-id 21] Sync request, will wait for timeout=120 -[2024-06-20 13:24:30,651] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:24:30,651] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:30,652] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:30,652] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:30,652] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:30,652] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:30,652] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:30,652] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:30,652] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:24:30,652] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:24:30,652] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:30,652] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:30,653] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:30,653] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:30,653] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:30,653] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:30,653] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:30,653] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:24:30,653] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:24:30,653] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:30,653] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:30,653] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:30,653] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:30,653] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:30,654] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:30,654] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:30,654] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:24:30,654] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:24:30,654] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:30,654] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:30,654] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:30,654] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:30,654] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:30,654] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: appending 16376 bytes -[2024-06-20 13:24:30,655] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: fragment = " -commonflex-scale-mg-on2024-04-25http://flex-scale-project.eu/yang/flex-scale-mg-oniana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashcrypt-hash-md5crypt-hash-sha-256crypt-hash-sha-512ietf-interfaces2018-02-20urn:ietf:params:xml:ns:yang:ietf-interfacesarbitrary-namesif-mibpre-provisioningietf-netconf2011-06-01urn:ietf:params:xml:ns:netconf:base:1.0rollback-on-errorvalidatewritable-runningxpathietf-netconf-acm2018-02-14urn:ietf:params:xml:ns:yang:ietf-netconf-acmietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringietf-netconf-nmda2019-01-07urn:ietf:params:xml:ns:yang:ietf-netconf-nmdawith-defaultsietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsietf-netconf-partial-lock2009-10-19urn:ietf:params:xml:ns:netconf:partial-lock:1.0ietf-netconf-with-defaults2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsietf-restconf2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconfietf-restconf-monitoring2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconf-monitoringietf-subscribed-notifications2019-09-09urn:ietf:params:xml:ns:yang:ietf-subscribed-notificationsencode-xmlreplaysubtreexpathietf-subscribed-notifications-deviationietf-yang-library2019-01-04urn:ietf:params:xml:ns:yang:ietf-yang-libraryietf-yang-patch2017-02-22urn:ietf:params:xml:ns:yang:ietf-yang-patchietf-yang-push2019-09-09urn:ietf:params:xml:ns:yang:ietf-yang-pushon-changeietf-yang-push-deviationietf-yang-schema-mount2019-01-14urn:ietf:params:xml:ns:yang:ietf-yang-schema-mountopenconfig-if-ethernet2023-03-10http://openconfig.net/yang/interfaces/ethernetopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipopenconfig-interfaces2019-07-10http://openconfig.net/yang/interfacesopenconfig-platform2022-12-20http://openconfig.net/yang/platformopenconfig-platform-common2022-12-20openconfig-platform-port2023-01-19http://openconfig.net/yang/platform/portopenconfig-wavelength-router2021-07-26http://openconfig.net/yang/wavelength-routeroptical-switch2020-01-10http://www.polatis.com/yang/optical-switchpolatis-switch2020-11-14http://www.polatis.com/yang/polatis-switchtailf-aaa2022-04-12http://tail-f.com/ns/aaa/1.1tailf-acm2013-03-07http://tail-f.com/yang/acmtailf-confd-monitoring2021-09-09http://tail-f.com/yang/confd-monitoringtailf-confd-progress2020-06-29http://tail-f.com/ns/confd-progresstailf-kicker2020-11-26http://tail-f.com/ns/kickertailf-last-login2019-11-21http://tail-f.com/yang/last-logintailf-netconf-extensions2021-06-18http://tail-f.com/ns/netconf/extensionstailf-netconf-monitoring2022-04-12http://tail-f.com/yang/netconf-monitoringtailf-netconf-query2017-01-06http://tail-f.com/ns/netconf/querytailf-netconf-rollback2018-01-12http://tail-f.com/ns/netconf/rollbacktailf-netconf-transactionshttp://tail-f.com/ns/netconf/transactions/1.0tailf-netconf-with-rollback-id2020-06-25http://tail-f.com/ns/netconf/with-rollback-idtailf-netconf-with-transaction-id2018-11-23http://tail-f.com/ns/netconf/with-transaction-idtailf-progress2021-12-17http://tail-f.com/ns/progresstailf-rollback2020-09-02http://tail-f.com/ns/rollbackiana-if-type2023-01-26urn:ietf:params:xml:ns:yang:iana-if-typeietf-datastores2018-02-14urn:ietf:params:xml:ns:yang:ietf-datastoresietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesietf-ip2018-02-22urn:ietf:params:xml:ns:yang:ietf-ipietf-network-instance2019-01-21urn:ietf:params:xml:ns:yang:ietf-network-instanceietf-origin2018-02-14urn:ietf:params:xml:ns:yang:ietf-originietf-x509-cert-to-name2014-12-10urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-nameietf-yang-metadata2016-08-05urn:ietf:params:xml:ns:yang:ietf-yang-metadataietf-yang-smiv22012-06-22urn:ietf:params:xml:ns:yang:ietf-yang-smiv2ietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesopenconfig-alarm-types2018-11-21http://openconfig.net/yang/alarms/typesopenconfig-extensions2018-10-17http://openconfig.net/yang/openconfig-extopenconfig-if-types2018-11-21http://openconfig.net/yang/openconfig-if-typesopenconfig-inet-types2019-04-25http://openconfig.net/yang/types/inetopenconfig-platform-types2022-07-28http://openconfig.net/yang/platform-typesopenconfig-transport-types2023-02-08http://openconfig.net/yang/transport-typesopenconfig-types2019-04-16http://openconfig.net/yang/openconfig-typesopenconfig-yang-types2018-11-21http://openconfig.net/yang/types/yangtailf-common2022-04-12http://tail-f.com/yang/commontailf-cli-extensions2021-12-17tailf-meta-extensions2017-03-08tailf-common-monitoring2021-09-02http://tail-f.com/yang/common-monitoringtailf-common-query2017-12-15http://tail-f.com/ns/common/querytailf-netconf-forwardhttp://tail-f.com/ns/netconf/forward/1.0tailf-netconf-inactivehttp://tail-f.com/ns/netconf/inactive/1.0tailf-xsd-types2017-11-20http://tail-f.com/yang/xsd-typescommoncommonds:runningcommonds:intendedcommonds:operationalcommonc12b960e969b26974084d2b999572983c12b960e969b26974084d2b999572983flex-scale-mg-on2024-04-25http://flex-scale-project.eu/yang/flex-scale-mg-onimplementiana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashcrypt-hash-md5crypt-hash-sha-256crypt-hash-sha-512implementiana-if-type2023-01-26urn:ietf:params:xml:ns:yang:iana-if-typeimportietf-datastores2018-02-14urn:ietf:params:xml:ns:yang:ietf-datastoresimportietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesimportietf-interfaces2018-02-20urn:ietf:params:xml:ns:yang:ietf-interfacesarbitrary-namesif-mibpre-provisioningimplementietf-ip2018-02-22urn:ietf:params:xml:ns:yang:ietf-ipipv4-non-contiguous-netmasksipv6-privacy-autoconfimportietf-netconf2011-06-01urn:ietf:params:xml:ns:netconf:base:1.0rollback-on-errorvalidatewritable-runningxpathimplementietf-netconf-acm2018-02-14urn:ietf:params:xml:ns:yang:ietf-netconf-acmimplementietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringimplementietf-netconf-nmda2019-01-07urn:ietf:params:xml:ns:yang:ietf-netconf-nmdawith-defaultsimplementietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsimplementietf-netconf-partial-lock2009-10-19urn:ietf:params:xml:ns:netconf:partial-lock:1.0implementietf-netconf-with-defaults2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsimplementietf-network-instance2019-01-21urn:ietf:params:xml:ns:yang:ietf-network-instanceimportietf-origin2018-02-14urn:ietf:params:xml:ns:yang:ietf-originimportietf-restconf2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconfimplementietf-restconf-monitoring2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconf-monitoringimplementietf-subscribed-notifications2019-09-09urn:ietf:params:xml:ns:yang:ietf-subscribed-notificationsencode-xmlreplaysubtreexpathietf-subscribed-notifications-deviation2020-06-25implementietf-x509-cert-to-name2014-12-10urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-nameimportietf-yang-library2019-01-04urn:ietf:params:xml:ns:yang:ietf-yang-libraryimplementietf-yang-metadata2016-08-05urn:ietf:pa" -[2024-06-20 13:24:30,655] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:24:30,655] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:24:30,698] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:24:30,698] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:30,698] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:30,699] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:30,699] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:30,699] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:30,699] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:30,699] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:30,699] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:24:30,699] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:24:30,700] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:30,700] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:30,700] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:30,700] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:30,700] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:30,700] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:30,700] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:30,700] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:24:30,700] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:24:30,701] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:30,701] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:30,701] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:30,701] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:30,701] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:30,701] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:30,701] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:30,701] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:24:30,701] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:24:30,702] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:30,702] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:30,702] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:30,702] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:30,702] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:30,702] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: appending 16376 bytes -[2024-06-20 13:24:30,702] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: fragment = "rams:xml:ns:yang:ietf-yang-metadataimportietf-yang-patch2017-02-22urn:ietf:params:xml:ns:yang:ietf-yang-patchimplementietf-yang-push2019-09-09urn:ietf:params:xml:ns:yang:ietf-yang-pushon-changeietf-yang-push-deviationimplementietf-yang-schema-mount2019-01-14urn:ietf:params:xml:ns:yang:ietf-yang-schema-mountimplementietf-yang-smiv22012-06-22urn:ietf:params:xml:ns:yang:ietf-yang-smiv2importietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesimportopenconfig-alarm-types2018-11-21http://openconfig.net/yang/alarms/typesimportopenconfig-extensions2018-10-17http://openconfig.net/yang/openconfig-extimportopenconfig-if-ethernet2023-03-10http://openconfig.net/yang/interfaces/ethernetimplementopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipimplementopenconfig-if-types2018-11-21http://openconfig.net/yang/openconfig-if-typesimportopenconfig-inet-types2019-04-25http://openconfig.net/yang/types/inetimportopenconfig-interfaces2019-07-10http://openconfig.net/yang/interfacesimplementopenconfig-platform2022-12-20http://openconfig.net/yang/platformimplementopenconfig-platform-common2022-12-20openconfig-platform-port2023-01-19http://openconfig.net/yang/platform/portimplementopenconfig-platform-types2022-07-28http://openconfig.net/yang/platform-typesimportopenconfig-transport-types2023-02-08http://openconfig.net/yang/transport-typesimportopenconfig-types2019-04-16http://openconfig.net/yang/openconfig-typesimportopenconfig-wavelength-router2021-07-26http://openconfig.net/yang/wavelength-routerimplementopenconfig-yang-types2018-11-21http://openconfig.net/yang/types/yangimportoptical-switch2020-01-10http://www.polatis.com/yang/optical-switchimplementpolatis-switch2020-11-14http://www.polatis.com/yang/polatis-switchimplementtailf-aaa2022-04-12http://tail-f.com/ns/aaa/1.1implementtailf-acm2013-03-07http://tail-f.com/yang/acmimplementtailf-common2022-04-12http://tail-f.com/yang/commonimporttailf-cli-extensions2021-12-17tailf-meta-extensions2017-03-08tailf-common-monitoring2021-09-02http://tail-f.com/yang/common-monitoringimporttailf-common-query2017-12-15http://tail-f.com/ns/common/queryimporttailf-confd-monitoring2021-09-09http://tail-f.com/yang/confd-monitoringimplementtailf-confd-progress2020-06-29http://tail-f.com/ns/confd-progressimplementtailf-kicker2020-11-26http://tail-f.com/ns/kickerimplementtailf-last-login2019-11-21http://tail-f.com/yang/last-loginimplementtailf-netconf-extensions2021-06-18http://tail-f.com/ns/netconf/extensionsimplementtailf-netconf-forwardhttp://tail-f.com/ns/netconf/forward/1.0importtailf-netconf-inactivehttp://tail-f.com/ns/netconf/inactive/1.0importtailf-netconf-monitoring2022-04-12http://tail-f.com/yang/netconf-monitoringimplementtailf-netconf-query2017-01-06http://tail-f.com/ns/netconf/queryimplementtailf-netconf-rollback2018-01-12http://tail-f.com/ns/netconf/rollbackimplementtailf-netconf-transactionshttp://tail-f.com/ns/netconf/transactions/1.0implementtailf-netconf-with-rollback-id2020-06-25http://tail-f.com/ns/netconf/with-rollback-idimplementtailf-netconf-with-transaction-id2018-11-23http://tail-f.com/ns/netconf/with-transaction-idimplementtailf-progress2021-12-17http://tail-f.com/ns/progressimplementtailf-rollback2020-09-02http://tail-f.com/ns/rollbackimplementtailf-xsd-types2017-11-20http://tail-f.com/yang/xsd-typesimportpermit000adminadminprivateoperoperpublicadminadminany-accesspermitany-group*tailf-aaa-authenticationtailf-aaa/aaa/authentication/users/user[name='$USER']read updatepermittailf-aaa-usertailf-aaa/user[name='$USER']create read update deletepermittailf-webui-usertailf-webui/webui/data-stores/user-profile[username='$USER']create read update deletepermiturn:ietf:params:netconf:base:1.0urn:ietf:params:netconf:base:1.1urn:ietf:params:netconf:capability:writable-running:1.0urn:ietf:params:netconf:capability:rollback-on-error:1.0urn:ietf:params:netconf:capability:validate:1.0urn:ietf:params:netconf:capability:validate:1.1urn:ietf:params:netconf:capability:xpath:1.0urn:ietf:params:netconf:capability:partial-lock:1.0urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all-tagged,report-allurn:ietf:params:netconf:capability:with-operational-defaults:1.0?basic-mode=explicit&also-supported=report-all-tagged,report-allurn:ietf:params:netconf:capability:yang-library:1.0?revision=2019-01-04&module-set-id=c12b960e969b26974084d2b999572983urn:ietf:params:netconf:capability:yang-library:1.1?revision=2019-01-04&content-id=c12b960e969b26974084d2b999572983http://tail-f.com/ns/netconf/actions/1.0http://flex-scale-project.eu/yang/flex-scale-mg-on?module=flex-scale-mg-on&revision=2024-04-25http://openconfig.net/yang/alarms/types?module=openconfig-alarm-types&revision=2018-11-21http://openconfig.net/yang/interfaces?module=openconfig-interfaces&revision=2019-07-10http://openconfig.net/yang/interfaces/ethernet?module=openconfig-if-ethernet&revision=2023-03-10http://openconfig.net/yang/interfaces/ip?module=openconfig-if-ip&revision=2019-01-08http://openconfig.net/yang/openconfig-ext?module=openconfig-extensions&revision=2018-10-17http://openconfig.net/yang/openconfig-if-types?module=openconfig-if-types&revision=2018-11-21http://openconfig.net/yang/openconfig-types?module=openconfig-types&revision=2019-04-16http://openconfig.net/yang/platform?module=openconfig-platform&revision=2022-12-20http://openconfig.net/yang/platform-types?module=openconfig-platform-types&revision=2022-07-28http://openconfig.net/yang/platform/port?module=openconfig-platform-port&revision=2023-01-19http://openconfig.net/yang/transport-types?module=openconfig-transport-types&revision=2023-02-08http://openconfig.net/yang/types/inet?module=openconfig-inet-types&revision=2019-04-25http://openconfig.net/yang/types/yang?module=openconfig-yang-types&revision=2018-11-21http://openconfig.net/yang/wavelength-router?module=openconfig-wavelength-router&revision=2021-07-26http://tail-f.com/ns/aaa/1.1?module=tailf-aaa&revision=2022-04-12http://tail-f.com/ns/common/query?module=tailf-common-query&revision=2017-12-15http://tail-f.com/ns/confd-progress?module=tailf-confd-progress&revision=2020-06-29http://tail-f.com/ns/kicker?module=tailf-kicker&revision=2020-11-26http://tail-f.com/ns/netconf/query?module=tailf-netconf-query&revision=2017-01-06http://tail-f.com/yang/acm?module=tailf-acm&revision=2013-03-07http://tail-f.com/yang/common?module=tailf-common&revision=2022-04-12http://tail-f.com/yang/common-monitoring?module=tailf-common-monitoring&revision=2021-09-02http://tail-f.com/yang/confd-monitoring?module=tailf-confd-monitoring&revision=2021-09-09http://tail-f.com/yang/last-login?module=tailf-last-login&revision=2019-11-21http://tail-f.com/yang/netconf-monitoring?module=tailf-netconf-monitoring&revision=2022-04-12http://tail-f.com/yang/xsd-types?module=tailf-xsd-types&revision=2017-11-20http://www.polatis.com/yang/optical-switch?module=optical-switch&revision=2020-01-10http://www.polatis.com/yang/polatis-switch?module=polatis-switch&revision=2020-11-14urn:ietf:params:xml:ns:netconf:base:1.0?module=ietf-netconf&revision=2011-06-01&features=writable-running,rollback-on-error,validate,xpathurn:ietf:params:xml:ns:netconf:partial-lock:1.0?module=ietf-netconf-partial-lock&revision=2009-10-19urn:ietf:params:xml:ns:yang:iana-crypt-hash?module=iana-crypt-hash&revision=2014-08-06&features=crypt-hash-sha-512,crypt-hash-sha-256,crypt-hash-md5urn:ietf:params:xml:ns:yang:iana-if-type?module=iana-if-type&revision=2023-01-26urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&revision=2013-07-15urn:ietf:params:xml:ns:yang:ietf-netconf-acm?module=ietf-netconf-acm&revision=2018-02-14urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&revision=2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-notifications?module=ietf-netconf-notifications&revision=2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?module=ietf-netconf-with-defaults&revision=2011-06-01urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?module=ietf-restconf-monitoring&revision=2017-01-26urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name?module=ietf-x509-cert-to-name&revision=2014-12-10urn:ietf:params:xml:ns:yang:ietf-yang-metadata?module=ietf-yang-metadata&revision=2016-08-05urn:ietf:params:xml:ns:yang:ietf-yang-smiv2?module=ietf-yang-smiv2&revision=2012-06-22urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&revision=2013-07-15running1717-711273-156835validflex-scale-mg-on2024-04-25yang23runningread2024-06-06T22:01:09+00:000327000WBSS-1WBSS-1falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-1-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX1MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-10WBSS-10falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-5-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX10MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-11WBSS-11falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON" -[2024-06-20 13:24:30,747] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:24:30,747] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:24:30,818] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:24:30,818] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:30,818] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:30,818] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:30,818] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:30,819] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:30,819] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:30,819] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:30,819] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:24:30,819] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:24:30,819] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:30,819] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:30,819] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:30,819] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:30,819] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:30,819] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:30,819] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:30,820] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:24:30,820] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:24:30,820] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:30,820] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:30,820] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:30,820] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:30,820] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:30,820] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:30,820] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:30,820] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:24:30,821] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:24:30,821] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:30,821] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:30,821] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:30,821] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:30,821] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:30,821] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: appending 16376 bytes -[2024-06-20 13:24:30,821] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: fragment = "_PORTport-6-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX11MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-12WBSS-12falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-6-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX12MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-13WBSS-13falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-7-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX13MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-14WBSS-14falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-7-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX14MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-15WBSS-15falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-8-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX15MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-16WBSS-16falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-8-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX16MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-17WBSS-17falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-9-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX17MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-18WBSS-18falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-9-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX18MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-19WBSS-19falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-10-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX19MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-2WBSS-2falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-1-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX2MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-20WBSS-20falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-10-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX20MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-21WBSS-21falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-11-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX21MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-22WBSS-22falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-11-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX22MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-23WBSS-23falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-12-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX23MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-24WBSS-24falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-12-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX24MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-25WBSS-25falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-13-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX25MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-26WBSS-26falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-13-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX26MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-27WBSS-27falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-14-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX27MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-28WBSS-28falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-14-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX28MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-29WBSS-2911C_BAND192006250192206250ENABLED1C_BAND192006250192206250ENABLEDUPADDADDport-1-outport-1-outadmin9000100$1$LWKnq6Bt$b.uVhMiISHVTC6CXfnfrC0/var/confd/homes/admin/.ssh/var/confd/homes/adminoper9000100$1$im2jm9f9$kg2pTFGHnnHw2QpT8wU1x./var/confd/homes/oper/.ssh/var/confd/homes/operprivate9000100$1$FV0aZKYX$WCQ/jCpTiyjJIbnnTtnwG./var/confd/homes/private/.ssh/var/confd/homes/privatepublic9000100$1$drWaFr7x$uQSEVNpu/fw2VpBxR2hrP0/var/confd/homes/public/.ssh/var/confd/homes/public0\h> 15\h# exec0actionautowizardenableexithelpstartup15configure7.8.31truestartedflex-scale-mg-on2024-04-25http://flex-scale-project.eu/yang/flex-scale-mg-onfsmgoniana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashianachiana-if-type2023-01-26urn:ietf:params:xml:ns:yang:iana-if-typeianaiftietf-datastores2018-02-14urn:ietf:params:xml:ns:yang:ietf-datastoresdsietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesinetietf-interfaces2018-02-20urn:ietf:params:xml:ns:yang:ietf-interfacesifietf-ip2018-02-22urn:ietf:params:xml:ns:yang:ietf-iptfipietf-netconf2011-06-01urn:ietf:params:xml:ns:netconf:base:1.0ncnetconfietf-netconf-acm2018-02-14urn:ietf:params:xml:ns:yang:ietf-netconf-acmnacmietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringncmietf-netconf-nmda2019-01-07urn:ietf:params:xml:ns:yang:ietf-netconf-nmdancdsnetconfietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsncnietf-netconf-partial-lock2009-10-19urn:ietf:params:xml:ns:netconf:partial-lock:1.0plietf-netconf-with-defaults2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsncwdnetconfietf-network-instance2019-01-21urn:ietf:params:xml:ns:yang:ietf-network-instancetfniietf-origin2018-02-14urn:ietf:params:xml:ns:yang:ietf-originorietf-restconf2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconfrcrestnetconfietf-restconf-monitoring2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconf-monitoringrcmonietf-subscribed-notifications2019-09-09urn:ietf:params:xml:ns:yang:ietf-subscribed-notificationssnnetconfietf-x509-cert-to-name2014-12-10urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-namex509c2nietf-yang-library2019-01-04urn:ietf:params:xml:ns:yang:ietf-yang-libraryyanglibnetconfrestietf-yang-metadata2016-08-05urn:ietf:params:xml:ns:yang:ietf-yang-metadatamdietf-yang-patch2017-02-22urn:ietf:params:xml:ns:yang:ietf-yang-patchypatchrestnetconfietf-yang-push2019-09-09urn:ietf:params:xml:ns:yang:ietf-yang-pushypnetconfietf-yang-schema-mount2019-01-14urn:ietf:params:xml:ns:yang:ietf-yang-schema-mountyangmntietf-yang-smiv22012-06-22urn:ietf:params:xml:ns:yang:ietf-yang-smiv2smiv2ietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesyangnetconf_netmodurn:ietf:params:xml:ns:netmod:notificationnmnetconfopenconfig-alarm-types2018-11-21http://openconfig.net/yang/alarms/typesoc-alarm-typesopenconfig-extensions2018-10-17http://openconfig.net/yang/openconfig-extoc-extopenconfig-if-ethernet2023-03-10http://openconfig.net/yang/interfaces/ethernetoc-ethopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipoc-ipopenconfig-if-types2018-11-21http://openconfig.net/yang/openconfig-if-typesoc-iftopenconfig-inet-types2019-04-25http://openconfig.net/yang/types/inetoc-inetopenconfig-interfaces2019-07-10http://openconfig.net/yang/interfacesoc-ifopenconfig-platform2022-12-20http://openconfig.net/yang/platformoc-platformopenconfig-platform-port2023-01-19http://openconfig.net/yang/platform/portoc-portopenconfig-platform-types2022-07-28http://openconfig.net/yang/platform-typesoc-platform-typesopenconfig-transport-types2023-02-08http://openconfig.net/yang/transport-typesoc-opt-typesopenconfig-types2019-04-16http://openconfig.net/yang/openconfig-typesoc-typesopenconfig-wavelength-router2021-07-26http://openconfig.net/yang/wavelength-routeroc-wave-routeropenconfig-yang-types2018-11-21http://openconfig.net/yang/types/yangoc-yangoptical-switch2020-01-10http://www.polatis.com/yang/optical-switchopswpolatis-switch2020-11-14http://www.polatis.com/yang/polatis-switchpltstailf-aaa2022-04-12http://tail-f.com/ns/aaa/1.1aaatailf-acm2013-03-07http://tail-f.com/yang/acmtacmtailf-common2022-04-12http://tail-f.com/yang/commontailftailf-common-monitoring2021-09-02http://tail-f.com/yang/common-monitoringtfcgtailf-common-query2017-12-15http://tail-f.com/ns/common/querytfcqtailf-confd-monitoring2021-09-09http://tail-f.com/yang/confd-monitoringtfcmtailf-confd-progress2020-06-29http://tail-f" -[2024-06-20 13:24:33,087] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:24:33,087] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:24:33,149] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:24:33,149] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:33,149] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:33,150] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=7 -[2024-06-20 13:24:33,150] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:33,150] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 6330 bytes -[2024-06-20 13:24:33,150] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:33,150] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:33,150] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:24:33,150] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:24:33,150] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 6341 bytes -[2024-06-20 13:24:33,150] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:33,150] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=7 -[2024-06-20 13:24:33,150] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:33,151] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 6330 bytes -[2024-06-20 13:24:33,151] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: appending 6330 bytes -[2024-06-20 13:24:33,151] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: fragment = ".com/ns/confd-progressconfd-progresstailf-kicker2020-11-26http://tail-f.com/ns/kickerkickertailf-last-login2019-11-21http://tail-f.com/yang/last-loginlasttailf-netconf-extensions2021-06-18http://tail-f.com/ns/netconf/extensionstfncenetconftailf-netconf-forwardhttp://tail-f.com/ns/netconf/forward/1.0fwdnetconftailf-netconf-inactivehttp://tail-f.com/ns/netconf/inactive/1.0innetconftailf-netconf-monitoring2022-04-12http://tail-f.com/yang/netconf-monitoringtncmtailf-netconf-query2017-01-06http://tail-f.com/ns/netconf/querytfncqnetconftailf-netconf-rollback2018-01-12http://tail-f.com/ns/netconf/rollbacknetconf-rollbacknetconftailf-netconf-transactionshttp://tail-f.com/ns/netconf/transactions/1.0trnetconftailf-netconf-with-rollback-id2020-06-25http://tail-f.com/ns/netconf/with-rollback-idwrbidnetconftailf-netconf-with-transaction-id2018-11-23http://tail-f.com/ns/netconf/with-transaction-idwtxidnetconftailf-progress2021-12-17http://tail-f.com/ns/progressprogresstailf-rollback2020-09-02http://tail-f.com/ns/rollbackrollbackrestnetconfmaapitailf-xsd-types2017-11-20http://tail-f.com/yang/xsd-typesxs0.0.0.020220.0.0.02024fiberscp0fsmgon_daemonnum_instancesremovecreateset_elemget_nextget_elemmediachannelscp0fsmgon_daemonnum_instancesremovecreateset_elemget_nextget_elemopticalbandscp0fsmgon_daemonnum_instancesremovecreateset_elemget_nextget_elemvp10fsmgon_daemonvp20fsmgon_daemonrunning1717-711273-156835./confd-cdb/A.cdb35577915512390false0falseoperational22./confd-cdb/O.cdb42108falseadmin2024-06-20T13:24:30.493779+00:00066778e1455b10.30.2.208ncm:netconf-ssh02024-06-06T23:12:41.957668+00:00066778e1455b10.30.2.206ncm:netconf-ssh02024-06-06T22:01:13.861449+00:00066778e1455b127.0.0.1ncm:netconf-ssh00rollback010002admin2024-06-07 08:55:35netconf1rollback110001system2024-06-06 22:01:13system2rollback210000system2024-06-06 22:01:11system" -[2024-06-20 13:24:33,151] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 6337 bytes from start of buffer -[2024-06-20 13:24:33,151] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=4 -[2024-06-20 13:24:33,152] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found end of message delimiter -[2024-06-20 13:24:33,153] DEBUG:ncclient.operations.rpc:[host 172.17.254.21 session-id 21] Delivering to -[2024-06-20 13:24:33,153] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: saving back rest of message after 6341 bytes, original size 6341 -[2024-06-20 13:24:33,153] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -component [, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -WBSS-1 -WBSS-10 -WBSS-11 -WBSS-12 -WBSS-13 -WBSS-14 -WBSS-15 -WBSS-16 -WBSS-17 -WBSS-18 -WBSS-19 -WBSS-2 -WBSS-20 -WBSS-21 -WBSS-22 -WBSS-23 -WBSS-24 -WBSS-25 -WBSS-26 -WBSS-27 -WBSS-28 -WBSS-29 -WBSS-3 -WBSS-30 -WBSS-31 -WBSS-32 -WBSS-4 -WBSS-5 -WBSS-6 -WBSS-7 -WBSS-8 -WBSS-9 -WSS-1 -WSS-10 -WSS-11 -WSS-12 -WSS-2 -WSS-3 -WSS-4 -WSS-5 -WSS-6 -WSS-7 -WSS-8 -WSS-9 -int-connection-1 -int-connection-10 -int-connection-100 -int-connection-101 -int-connection-102 -int-connection-103 -int-connection-104 -int-connection-105 -int-connection-106 -int-connection-107 -int-connection-108 -int-connection-109 -int-connection-11 -int-connection-110 -int-connection-111 -int-connection-112 -int-connection-113 -int-connection-114 -int-connection-115 -int-connection-116 -int-connection-117 -int-connection-118 -int-connection-119 -int-connection-12 -int-connection-120 -int-connection-121 -int-connection-122 -int-connection-123 -int-connection-124 -int-connection-125 -int-connection-126 -int-connection-127 -int-connection-128 -int-connection-129 -int-connection-13 -int-connection-130 -int-connection-131 -int-connection-132 -int-connection-133 -int-connection-134 -int-connection-135 -int-connection-136 -int-connection-137 -int-connection-138 -int-connection-139 -int-connection-14 -int-connection-140 -int-connection-141 -int-connection-142 -int-connection-143 -int-connection-144 -int-connection-145 -int-connection-146 -int-connection-147 -int-connection-148 -int-connection-149 -int-connection-15 -int-connection-150 -int-connection-151 -int-connection-152 -int-connection-153 -int-connection-154 -int-connection-155 -int-connection-156 -int-connection-157 -int-connection-158 -int-connection-159 -int-connection-16 -int-connection-160 -int-connection-161 -int-connection-162 -int-connection-163 -int-connection-164 -int-connection-165 -int-connection-166 -int-connection-167 -int-connection-168 -int-connection-169 -int-connection-17 -int-connection-170 -int-connection-171 -int-connection-172 -int-connection-173 -int-connection-174 -int-connection-175 -int-connection-176 -int-connection-177 -int-connection-178 -int-connection-179 -int-connection-18 -int-connection-180 -int-connection-181 -int-connection-182 -int-connection-183 -int-connection-184 -int-connection-185 -int-connection-186 -int-connection-187 -int-connection-188 -int-connection-189 -int-connection-19 -int-connection-190 -int-connection-191 -int-connection-192 -int-connection-193 -int-connection-194 -int-connection-195 -int-connection-196 -int-connection-197 -int-connection-198 -int-connection-199 -int-connection-2 -int-connection-20 -int-connection-200 -int-connection-201 -int-connection-202 -int-connection-203 -int-connection-204 -int-connection-205 -int-connection-206 -int-connection-207 -int-connection-208 -int-connection-209 -int-connection-21 -int-connection-210 -int-connection-211 -int-connection-212 -int-connection-213 -int-connection-214 -int-connection-215 -int-connection-216 -int-connection-217 -int-connection-218 -int-connection-219 -int-connection-22 -int-connection-220 -int-connection-221 -int-connection-222 -int-connection-223 -int-connection-224 -int-connection-225 -int-connection-226 -int-connection-227 -int-connection-228 -int-connection-229 -int-connection-23 -int-connection-230 -int-connection-231 -int-connection-232 -int-connection-233 -int-connection-234 -int-connection-235 -int-connection-236 -int-connection-237 -int-connection-238 -int-connection-239 -int-connection-24 -int-connection-240 -int-connection-241 -int-connection-242 -int-connection-243 -int-connection-244 -int-connection-245 -int-connection-246 -int-connection-247 -int-connection-248 -int-connection-249 -int-connection-25 -int-connection-250 -int-connection-251 -int-connection-252 -int-connection-253 -int-connection-254 -int-connection-255 -int-connection-256 -int-connection-257 -int-connection-258 -int-connection-259 -int-connection-26 -int-connection-260 -int-connection-261 -int-connection-262 -int-connection-263 -int-connection-264 -int-connection-265 -int-connection-266 -int-connection-267 -int-connection-268 -int-connection-269 -int-connection-27 -int-connection-270 -int-connection-271 -int-connection-272 -int-connection-273 -int-connection-274 -int-connection-275 -int-connection-276 -int-connection-277 -int-connection-278 -int-connection-279 -int-connection-28 -int-connection-280 -int-connection-281 -int-connection-282 -int-connection-283 -int-connection-284 -int-connection-285 -int-connection-286 -int-connection-287 -int-connection-288 -int-connection-289 -int-connection-29 -int-connection-290 -int-connection-291 -int-connection-292 -int-connection-293 -int-connection-294 -int-connection-295 -int-connection-296 -int-connection-297 -int-connection-298 -int-connection-299 -int-connection-3 -int-connection-30 -int-connection-300 -int-connection-301 -int-connection-302 -int-connection-303 -int-connection-304 -int-connection-305 -int-connection-306 -int-connection-307 -int-connection-308 -int-connection-309 -int-connection-31 -int-connection-310 -int-connection-311 -int-connection-312 -int-connection-313 -int-connection-314 -int-connection-315 -int-connection-316 -int-connection-317 -int-connection-318 -int-connection-319 -int-connection-32 -int-connection-320 -int-connection-321 -int-connection-322 -int-connection-323 -int-connection-324 -int-connection-325 -int-connection-326 -int-connection-327 -int-connection-328 -int-connection-329 -int-connection-33 -int-connection-330 -int-connection-331 -int-connection-332 -int-connection-333 -int-connection-334 -int-connection-335 -int-connection-336 -int-connection-337 -int-connection-338 -int-connection-339 -int-connection-34 -int-connection-340 -int-connection-341 -int-connection-342 -int-connection-343 -int-connection-344 -int-connection-345 -int-connection-346 -int-connection-347 -int-connection-348 -int-connection-349 -int-connection-35 -int-connection-350 -int-connection-351 -int-connection-352 -int-connection-353 -int-connection-354 -int-connection-355 -int-connection-356 -int-connection-357 -int-connection-358 -int-connection-359 -int-connection-36 -int-connection-360 -int-connection-361 -int-connection-362 -int-connection-363 -int-connection-364 -int-connection-365 -int-connection-366 -int-connection-367 -int-connection-368 -int-connection-369 -int-connection-37 -int-connection-370 -int-connection-371 -int-connection-372 -int-connection-373 -int-connection-374 -int-connection-375 -int-connection-376 -int-connection-377 -int-connection-378 -int-connection-379 -int-connection-38 -int-connection-380 -int-connection-381 -int-connection-382 -int-connection-383 -int-connection-384 -int-connection-385 -int-connection-386 -int-connection-387 -int-connection-388 -int-connection-389 -int-connection-39 -int-connection-390 -int-connection-391 -int-connection-392 -int-connection-393 -int-connection-394 -int-connection-395 -int-connection-396 -int-connection-397 -int-connection-398 -int-connection-399 -int-connection-4 -int-connection-40 -int-connection-400 -int-connection-401 -int-connection-402 -int-connection-403 -int-connection-404 -int-connection-405 -int-connection-406 -int-connection-407 -int-connection-408 -int-connection-409 -int-connection-41 -int-connection-410 -int-connection-411 -int-connection-412 -int-connection-413 -int-connection-414 -int-connection-415 -int-connection-416 -int-connection-417 -int-connection-418 -int-connection-419 -int-connection-42 -int-connection-420 -int-connection-421 -int-connection-422 -int-connection-423 -int-connection-424 -int-connection-425 -int-connection-426 -int-connection-427 -int-connection-428 -int-connection-43 -int-connection-44 -int-connection-45 -int-connection-46 -int-connection-47 -int-connection-48 -int-connection-49 -int-connection-5 -int-connection-50 -int-connection-51 -int-connection-52 -int-connection-53 -int-connection-54 -int-connection-55 -int-connection-56 -int-connection-57 -int-connection-58 -int-connection-59 -int-connection-6 -int-connection-60 -int-connection-61 -int-connection-62 -int-connection-63 -int-connection-64 -int-connection-65 -int-connection-66 -int-connection-67 -int-connection-68 -int-connection-69 -int-connection-7 -int-connection-70 -int-connection-71 -int-connection-72 -int-connection-73 -int-connection-74 -int-connection-75 -int-connection-76 -int-connection-77 -int-connection-78 -int-connection-79 -int-connection-8 -int-connection-80 -int-connection-81 -int-connection-82 -int-connection-83 -int-connection-84 -int-connection-85 -int-connection-86 -int-connection-87 -int-connection-88 -int-connection-89 -int-connection-9 -int-connection-90 -[2024-06-20 13:24:33,331] INFO:root:parameters {} -[2024-06-20 13:24:33,333] DEBUG:context.client.ContextClient:SetOpticalConfig request: {"config": "{}", "device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}} -[2024-06-20 13:24:33,365] DEBUG:context.client.ContextClient:SetOpticalConfig result: {"opticalconfig_uuid": ""} -[2024-06-20 13:24:33,365] DEBUG:device.service.Tools:results_getconfig = [('/endpoints/endpoint[port-1-in]', {'uuid': 'port-1-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-10-in]', {'uuid': 'port-10-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-11-in]', {'uuid': 'port-11-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-12-in]', {'uuid': 'port-12-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-13-in]', {'uuid': 'port-13-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-14-in]', {'uuid': 'port-14-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-15-in]', {'uuid': 'port-15-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-16-in]', {'uuid': 'port-16-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-2-in]', {'uuid': 'port-2-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-3-in]', {'uuid': 'port-3-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-4-in]', {'uuid': 'port-4-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-5-in]', {'uuid': 'port-5-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-6-in]', {'uuid': 'port-6-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-7-in]', {'uuid': 'port-7-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-8-in]', {'uuid': 'port-8-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-9-in]', {'uuid': 'port-9-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-1-out]', {'uuid': 'port-1-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-10-out]', {'uuid': 'port-10-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-11-out]', {'uuid': 'port-11-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-12-out]', {'uuid': 'port-12-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-13-out]', {'uuid': 'port-13-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-14-out]', {'uuid': 'port-14-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-15-out]', {'uuid': 'port-15-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-16-out]', {'uuid': 'port-16-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-2-out]', {'uuid': 'port-2-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-3-out]', {'uuid': 'port-3-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-4-out]', {'uuid': 'port-4-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-5-out]', {'uuid': 'port-5-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-6-out]', {'uuid': 'port-6-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-7-out]', {'uuid': 'port-7-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-8-out]', {'uuid': 'port-8-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-9-out]', {'uuid': 'port-9-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-33-in]', {'uuid': 'port-33-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-34-in]', {'uuid': 'port-34-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-35-in]', {'uuid': 'port-35-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-36-in]', {'uuid': 'port-36-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-37-in]', {'uuid': 'port-37-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-38-in]', {'uuid': 'port-38-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-39-in]', {'uuid': 'port-39-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-40-in]', {'uuid': 'port-40-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-41-in]', {'uuid': 'port-41-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-42-in]', {'uuid': 'port-42-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-43-in]', {'uuid': 'port-43-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-44-in]', {'uuid': 'port-44-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-45-in]', {'uuid': 'port-45-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-46-in]', {'uuid': 'port-46-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-47-in]', {'uuid': 'port-47-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-48-in]', {'uuid': 'port-48-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-33-out]', {'uuid': 'port-33-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-34-out]', {'uuid': 'port-34-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-35-out]', {'uuid': 'port-35-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-36-out]', {'uuid': 'port-36-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-37-out]', {'uuid': 'port-37-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-38-out]', {'uuid': 'port-38-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-39-out]', {'uuid': 'port-39-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-40-out]', {'uuid': 'port-40-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-41-out]', {'uuid': 'port-41-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-42-out]', {'uuid': 'port-42-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-43-out]', {'uuid': 'port-43-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-44-out]', {'uuid': 'port-44-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-45-out]', {'uuid': 'port-45-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-46-out]', {'uuid': 'port-46-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-47-out]', {'uuid': 'port-47-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-48-out]', {'uuid': 'port-48-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'})] -[2024-06-20 13:24:33,366] INFO:device.service.Tools:results_getconfig = [('/endpoints/endpoint[port-1-in]', {'uuid': 'port-1-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-10-in]', {'uuid': 'port-10-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-11-in]', {'uuid': 'port-11-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-12-in]', {'uuid': 'port-12-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-13-in]', {'uuid': 'port-13-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-14-in]', {'uuid': 'port-14-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-15-in]', {'uuid': 'port-15-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-16-in]', {'uuid': 'port-16-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-2-in]', {'uuid': 'port-2-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-3-in]', {'uuid': 'port-3-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-4-in]', {'uuid': 'port-4-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-5-in]', {'uuid': 'port-5-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-6-in]', {'uuid': 'port-6-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-7-in]', {'uuid': 'port-7-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-8-in]', {'uuid': 'port-8-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-9-in]', {'uuid': 'port-9-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-1-out]', {'uuid': 'port-1-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-10-out]', {'uuid': 'port-10-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-11-out]', {'uuid': 'port-11-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-12-out]', {'uuid': 'port-12-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-13-out]', {'uuid': 'port-13-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-14-out]', {'uuid': 'port-14-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-15-out]', {'uuid': 'port-15-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-16-out]', {'uuid': 'port-16-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-2-out]', {'uuid': 'port-2-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-3-out]', {'uuid': 'port-3-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-4-out]', {'uuid': 'port-4-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-5-out]', {'uuid': 'port-5-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-6-out]', {'uuid': 'port-6-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-7-out]', {'uuid': 'port-7-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-8-out]', {'uuid': 'port-8-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-9-out]', {'uuid': 'port-9-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-33-in]', {'uuid': 'port-33-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-34-in]', {'uuid': 'port-34-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-35-in]', {'uuid': 'port-35-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-36-in]', {'uuid': 'port-36-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-37-in]', {'uuid': 'port-37-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-38-in]', {'uuid': 'port-38-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-39-in]', {'uuid': 'port-39-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-40-in]', {'uuid': 'port-40-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-41-in]', {'uuid': 'port-41-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-42-in]', {'uuid': 'port-42-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-43-in]', {'uuid': 'port-43-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-44-in]', {'uuid': 'port-44-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-45-in]', {'uuid': 'port-45-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-46-in]', {'uuid': 'port-46-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-47-in]', {'uuid': 'port-47-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-48-in]', {'uuid': 'port-48-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-33-out]', {'uuid': 'port-33-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-34-out]', {'uuid': 'port-34-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-35-out]', {'uuid': 'port-35-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-36-out]', {'uuid': 'port-36-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-37-out]', {'uuid': 'port-37-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-38-out]', {'uuid': 'port-38-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-39-out]', {'uuid': 'port-39-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-40-out]', {'uuid': 'port-40-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-41-out]', {'uuid': 'port-41-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-42-out]', {'uuid': 'port-42-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-43-out]', {'uuid': 'port-43-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-44-out]', {'uuid': 'port-44-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-45-out]', {'uuid': 'port-45-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-46-out]', {'uuid': 'port-46-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-47-out]', {'uuid': 'port-47-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-48-out]', {'uuid': 'port-48-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'})] -[2024-06-20 13:24:33,367] INFO:ncclient.operations.rpc:[host 172.17.254.21 session-id 21] Requesting 'Get' -[2024-06-20 13:24:33,367] DEBUG:ncclient.operations.rpc:[host 172.17.254.21 session-id 21] Sync request, will wait for timeout=120 -[2024-06-20 13:24:33,486] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:24:33,487] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:33,487] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:33,487] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:33,487] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:33,488] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:33,488] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:33,488] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:33,488] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:24:33,489] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:24:33,489] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:33,489] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:33,489] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:33,490] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:33,490] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:33,490] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:33,490] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:33,491] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:24:33,491] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:24:33,491] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:33,491] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:33,492] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:33,492] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:33,492] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:33,492] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:33,493] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:33,493] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:24:33,493] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:24:33,493] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:33,494] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:33,494] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:33,494] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:33,494] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:33,495] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: appending 16376 bytes -[2024-06-20 13:24:33,495] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: fragment = " -commonflex-scale-mg-on2024-04-25http://flex-scale-project.eu/yang/flex-scale-mg-oniana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashcrypt-hash-md5crypt-hash-sha-256crypt-hash-sha-512ietf-interfaces2018-02-20urn:ietf:params:xml:ns:yang:ietf-interfacesarbitrary-namesif-mibpre-provisioningietf-netconf2011-06-01urn:ietf:params:xml:ns:netconf:base:1.0rollback-on-errorvalidatewritable-runningxpathietf-netconf-acm2018-02-14urn:ietf:params:xml:ns:yang:ietf-netconf-acmietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringietf-netconf-nmda2019-01-07urn:ietf:params:xml:ns:yang:ietf-netconf-nmdawith-defaultsietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsietf-netconf-partial-lock2009-10-19urn:ietf:params:xml:ns:netconf:partial-lock:1.0ietf-netconf-with-defaults2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsietf-restconf2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconfietf-restconf-monitoring2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconf-monitoringietf-subscribed-notifications2019-09-09urn:ietf:params:xml:ns:yang:ietf-subscribed-notificationsencode-xmlreplaysubtreexpathietf-subscribed-notifications-deviationietf-yang-library2019-01-04urn:ietf:params:xml:ns:yang:ietf-yang-libraryietf-yang-patch2017-02-22urn:ietf:params:xml:ns:yang:ietf-yang-patchietf-yang-push2019-09-09urn:ietf:params:xml:ns:yang:ietf-yang-pushon-changeietf-yang-push-deviationietf-yang-schema-mount2019-01-14urn:ietf:params:xml:ns:yang:ietf-yang-schema-mountopenconfig-if-ethernet2023-03-10http://openconfig.net/yang/interfaces/ethernetopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipopenconfig-interfaces2019-07-10http://openconfig.net/yang/interfacesopenconfig-platform2022-12-20http://openconfig.net/yang/platformopenconfig-platform-common2022-12-20openconfig-platform-port2023-01-19http://openconfig.net/yang/platform/portopenconfig-wavelength-router2021-07-26http://openconfig.net/yang/wavelength-routeroptical-switch2020-01-10http://www.polatis.com/yang/optical-switchpolatis-switch2020-11-14http://www.polatis.com/yang/polatis-switchtailf-aaa2022-04-12http://tail-f.com/ns/aaa/1.1tailf-acm2013-03-07http://tail-f.com/yang/acmtailf-confd-monitoring2021-09-09http://tail-f.com/yang/confd-monitoringtailf-confd-progress2020-06-29http://tail-f.com/ns/confd-progresstailf-kicker2020-11-26http://tail-f.com/ns/kickertailf-last-login2019-11-21http://tail-f.com/yang/last-logintailf-netconf-extensions2021-06-18http://tail-f.com/ns/netconf/extensionstailf-netconf-monitoring2022-04-12http://tail-f.com/yang/netconf-monitoringtailf-netconf-query2017-01-06http://tail-f.com/ns/netconf/querytailf-netconf-rollback2018-01-12http://tail-f.com/ns/netconf/rollbacktailf-netconf-transactionshttp://tail-f.com/ns/netconf/transactions/1.0tailf-netconf-with-rollback-id2020-06-25http://tail-f.com/ns/netconf/with-rollback-idtailf-netconf-with-transaction-id2018-11-23http://tail-f.com/ns/netconf/with-transaction-idtailf-progress2021-12-17http://tail-f.com/ns/progresstailf-rollback2020-09-02http://tail-f.com/ns/rollbackiana-if-type2023-01-26urn:ietf:params:xml:ns:yang:iana-if-typeietf-datastores2018-02-14urn:ietf:params:xml:ns:yang:ietf-datastoresietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesietf-ip2018-02-22urn:ietf:params:xml:ns:yang:ietf-ipietf-network-instance2019-01-21urn:ietf:params:xml:ns:yang:ietf-network-instanceietf-origin2018-02-14urn:ietf:params:xml:ns:yang:ietf-originietf-x509-cert-to-name2014-12-10urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-nameietf-yang-metadata2016-08-05urn:ietf:params:xml:ns:yang:ietf-yang-metadataietf-yang-smiv22012-06-22urn:ietf:params:xml:ns:yang:ietf-yang-smiv2ietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesopenconfig-alarm-types2018-11-21http://openconfig.net/yang/alarms/typesopenconfig-extensions2018-10-17http://openconfig.net/yang/openconfig-extopenconfig-if-types2018-11-21http://openconfig.net/yang/openconfig-if-typesopenconfig-inet-types2019-04-25http://openconfig.net/yang/types/inetopenconfig-platform-types2022-07-28http://openconfig.net/yang/platform-typesopenconfig-transport-types2023-02-08http://openconfig.net/yang/transport-typesopenconfig-types2019-04-16http://openconfig.net/yang/openconfig-typesopenconfig-yang-types2018-11-21http://openconfig.net/yang/types/yangtailf-common2022-04-12http://tail-f.com/yang/commontailf-cli-extensions2021-12-17tailf-meta-extensions2017-03-08tailf-common-monitoring2021-09-02http://tail-f.com/yang/common-monitoringtailf-common-query2017-12-15http://tail-f.com/ns/common/querytailf-netconf-forwardhttp://tail-f.com/ns/netconf/forward/1.0tailf-netconf-inactivehttp://tail-f.com/ns/netconf/inactive/1.0tailf-xsd-types2017-11-20http://tail-f.com/yang/xsd-typescommoncommonds:runningcommonds:intendedcommonds:operationalcommonc12b960e969b26974084d2b999572983c12b960e969b26974084d2b999572983flex-scale-mg-on2024-04-25http://flex-scale-project.eu/yang/flex-scale-mg-onimplementiana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashcrypt-hash-md5crypt-hash-sha-256crypt-hash-sha-512implementiana-if-type2023-01-26urn:ietf:params:xml:ns:yang:iana-if-typeimportietf-datastores2018-02-14urn:ietf:params:xml:ns:yang:ietf-datastoresimportietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesimportietf-interfaces2018-02-20urn:ietf:params:xml:ns:yang:ietf-interfacesarbitrary-namesif-mibpre-provisioningimplementietf-ip2018-02-22urn:ietf:params:xml:ns:yang:ietf-ipipv4-non-contiguous-netmasksipv6-privacy-autoconfimportietf-netconf2011-06-01urn:ietf:params:xml:ns:netconf:base:1.0rollback-on-errorvalidatewritable-runningxpathimplementietf-netconf-acm2018-02-14urn:ietf:params:xml:ns:yang:ietf-netconf-acmimplementietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringimplementietf-netconf-nmda2019-01-07urn:ietf:params:xml:ns:yang:ietf-netconf-nmdawith-defaultsimplementietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsimplementietf-netconf-partial-lock2009-10-19urn:ietf:params:xml:ns:netconf:partial-lock:1.0implementietf-netconf-with-defaults2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsimplementietf-network-instance2019-01-21urn:ietf:params:xml:ns:yang:ietf-network-instanceimportietf-origin2018-02-14urn:ietf:params:xml:ns:yang:ietf-originimportietf-restconf2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconfimplementietf-restconf-monitoring2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconf-monitoringimplementietf-subscribed-notifications2019-09-09urn:ietf:params:xml:ns:yang:ietf-subscribed-notificationsencode-xmlreplaysubtreexpathietf-subscribed-notifications-deviation2020-06-25implementietf-x509-cert-to-name2014-12-10urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-nameimportietf-yang-library2019-01-04urn:ietf:params:xml:ns:yang:ietf-yang-libraryimplementietf-yang-metadata2016-08-05urn:ietf:pa" -[2024-06-20 13:24:33,495] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:24:33,496] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:24:33,533] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:24:33,534] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:33,534] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:33,534] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:33,534] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:33,534] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:33,534] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:33,534] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:33,535] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:24:33,535] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:24:33,535] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:33,535] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:33,535] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:33,536] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:33,536] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:33,536] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:33,536] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:33,536] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:24:33,537] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:24:33,537] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:33,537] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:33,537] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:33,537] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:33,537] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:33,538] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:33,538] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:33,538] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:24:33,538] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:24:33,538] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:33,538] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:33,539] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:33,539] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:33,539] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:33,539] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: appending 16376 bytes -[2024-06-20 13:24:33,539] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: fragment = "rams:xml:ns:yang:ietf-yang-metadataimportietf-yang-patch2017-02-22urn:ietf:params:xml:ns:yang:ietf-yang-patchimplementietf-yang-push2019-09-09urn:ietf:params:xml:ns:yang:ietf-yang-pushon-changeietf-yang-push-deviationimplementietf-yang-schema-mount2019-01-14urn:ietf:params:xml:ns:yang:ietf-yang-schema-mountimplementietf-yang-smiv22012-06-22urn:ietf:params:xml:ns:yang:ietf-yang-smiv2importietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesimportopenconfig-alarm-types2018-11-21http://openconfig.net/yang/alarms/typesimportopenconfig-extensions2018-10-17http://openconfig.net/yang/openconfig-extimportopenconfig-if-ethernet2023-03-10http://openconfig.net/yang/interfaces/ethernetimplementopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipimplementopenconfig-if-types2018-11-21http://openconfig.net/yang/openconfig-if-typesimportopenconfig-inet-types2019-04-25http://openconfig.net/yang/types/inetimportopenconfig-interfaces2019-07-10http://openconfig.net/yang/interfacesimplementopenconfig-platform2022-12-20http://openconfig.net/yang/platformimplementopenconfig-platform-common2022-12-20openconfig-platform-port2023-01-19http://openconfig.net/yang/platform/portimplementopenconfig-platform-types2022-07-28http://openconfig.net/yang/platform-typesimportopenconfig-transport-types2023-02-08http://openconfig.net/yang/transport-typesimportopenconfig-types2019-04-16http://openconfig.net/yang/openconfig-typesimportopenconfig-wavelength-router2021-07-26http://openconfig.net/yang/wavelength-routerimplementopenconfig-yang-types2018-11-21http://openconfig.net/yang/types/yangimportoptical-switch2020-01-10http://www.polatis.com/yang/optical-switchimplementpolatis-switch2020-11-14http://www.polatis.com/yang/polatis-switchimplementtailf-aaa2022-04-12http://tail-f.com/ns/aaa/1.1implementtailf-acm2013-03-07http://tail-f.com/yang/acmimplementtailf-common2022-04-12http://tail-f.com/yang/commonimporttailf-cli-extensions2021-12-17tailf-meta-extensions2017-03-08tailf-common-monitoring2021-09-02http://tail-f.com/yang/common-monitoringimporttailf-common-query2017-12-15http://tail-f.com/ns/common/queryimporttailf-confd-monitoring2021-09-09http://tail-f.com/yang/confd-monitoringimplementtailf-confd-progress2020-06-29http://tail-f.com/ns/confd-progressimplementtailf-kicker2020-11-26http://tail-f.com/ns/kickerimplementtailf-last-login2019-11-21http://tail-f.com/yang/last-loginimplementtailf-netconf-extensions2021-06-18http://tail-f.com/ns/netconf/extensionsimplementtailf-netconf-forwardhttp://tail-f.com/ns/netconf/forward/1.0importtailf-netconf-inactivehttp://tail-f.com/ns/netconf/inactive/1.0importtailf-netconf-monitoring2022-04-12http://tail-f.com/yang/netconf-monitoringimplementtailf-netconf-query2017-01-06http://tail-f.com/ns/netconf/queryimplementtailf-netconf-rollback2018-01-12http://tail-f.com/ns/netconf/rollbackimplementtailf-netconf-transactionshttp://tail-f.com/ns/netconf/transactions/1.0implementtailf-netconf-with-rollback-id2020-06-25http://tail-f.com/ns/netconf/with-rollback-idimplementtailf-netconf-with-transaction-id2018-11-23http://tail-f.com/ns/netconf/with-transaction-idimplementtailf-progress2021-12-17http://tail-f.com/ns/progressimplementtailf-rollback2020-09-02http://tail-f.com/ns/rollbackimplementtailf-xsd-types2017-11-20http://tail-f.com/yang/xsd-typesimportpermit000adminadminprivateoperoperpublicadminadminany-accesspermitany-group*tailf-aaa-authenticationtailf-aaa/aaa/authentication/users/user[name='$USER']read updatepermittailf-aaa-usertailf-aaa/user[name='$USER']create read update deletepermittailf-webui-usertailf-webui/webui/data-stores/user-profile[username='$USER']create read update deletepermiturn:ietf:params:netconf:base:1.0urn:ietf:params:netconf:base:1.1urn:ietf:params:netconf:capability:writable-running:1.0urn:ietf:params:netconf:capability:rollback-on-error:1.0urn:ietf:params:netconf:capability:validate:1.0urn:ietf:params:netconf:capability:validate:1.1urn:ietf:params:netconf:capability:xpath:1.0urn:ietf:params:netconf:capability:partial-lock:1.0urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all-tagged,report-allurn:ietf:params:netconf:capability:with-operational-defaults:1.0?basic-mode=explicit&also-supported=report-all-tagged,report-allurn:ietf:params:netconf:capability:yang-library:1.0?revision=2019-01-04&module-set-id=c12b960e969b26974084d2b999572983urn:ietf:params:netconf:capability:yang-library:1.1?revision=2019-01-04&content-id=c12b960e969b26974084d2b999572983http://tail-f.com/ns/netconf/actions/1.0http://flex-scale-project.eu/yang/flex-scale-mg-on?module=flex-scale-mg-on&revision=2024-04-25http://openconfig.net/yang/alarms/types?module=openconfig-alarm-types&revision=2018-11-21http://openconfig.net/yang/interfaces?module=openconfig-interfaces&revision=2019-07-10http://openconfig.net/yang/interfaces/ethernet?module=openconfig-if-ethernet&revision=2023-03-10http://openconfig.net/yang/interfaces/ip?module=openconfig-if-ip&revision=2019-01-08http://openconfig.net/yang/openconfig-ext?module=openconfig-extensions&revision=2018-10-17http://openconfig.net/yang/openconfig-if-types?module=openconfig-if-types&revision=2018-11-21http://openconfig.net/yang/openconfig-types?module=openconfig-types&revision=2019-04-16http://openconfig.net/yang/platform?module=openconfig-platform&revision=2022-12-20http://openconfig.net/yang/platform-types?module=openconfig-platform-types&revision=2022-07-28http://openconfig.net/yang/platform/port?module=openconfig-platform-port&revision=2023-01-19http://openconfig.net/yang/transport-types?module=openconfig-transport-types&revision=2023-02-08http://openconfig.net/yang/types/inet?module=openconfig-inet-types&revision=2019-04-25http://openconfig.net/yang/types/yang?module=openconfig-yang-types&revision=2018-11-21http://openconfig.net/yang/wavelength-router?module=openconfig-wavelength-router&revision=2021-07-26http://tail-f.com/ns/aaa/1.1?module=tailf-aaa&revision=2022-04-12http://tail-f.com/ns/common/query?module=tailf-common-query&revision=2017-12-15http://tail-f.com/ns/confd-progress?module=tailf-confd-progress&revision=2020-06-29http://tail-f.com/ns/kicker?module=tailf-kicker&revision=2020-11-26http://tail-f.com/ns/netconf/query?module=tailf-netconf-query&revision=2017-01-06http://tail-f.com/yang/acm?module=tailf-acm&revision=2013-03-07http://tail-f.com/yang/common?module=tailf-common&revision=2022-04-12http://tail-f.com/yang/common-monitoring?module=tailf-common-monitoring&revision=2021-09-02http://tail-f.com/yang/confd-monitoring?module=tailf-confd-monitoring&revision=2021-09-09http://tail-f.com/yang/last-login?module=tailf-last-login&revision=2019-11-21http://tail-f.com/yang/netconf-monitoring?module=tailf-netconf-monitoring&revision=2022-04-12http://tail-f.com/yang/xsd-types?module=tailf-xsd-types&revision=2017-11-20http://www.polatis.com/yang/optical-switch?module=optical-switch&revision=2020-01-10http://www.polatis.com/yang/polatis-switch?module=polatis-switch&revision=2020-11-14urn:ietf:params:xml:ns:netconf:base:1.0?module=ietf-netconf&revision=2011-06-01&features=writable-running,rollback-on-error,validate,xpathurn:ietf:params:xml:ns:netconf:partial-lock:1.0?module=ietf-netconf-partial-lock&revision=2009-10-19urn:ietf:params:xml:ns:yang:iana-crypt-hash?module=iana-crypt-hash&revision=2014-08-06&features=crypt-hash-sha-512,crypt-hash-sha-256,crypt-hash-md5urn:ietf:params:xml:ns:yang:iana-if-type?module=iana-if-type&revision=2023-01-26urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&revision=2013-07-15urn:ietf:params:xml:ns:yang:ietf-netconf-acm?module=ietf-netconf-acm&revision=2018-02-14urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&revision=2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-notifications?module=ietf-netconf-notifications&revision=2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?module=ietf-netconf-with-defaults&revision=2011-06-01urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?module=ietf-restconf-monitoring&revision=2017-01-26urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name?module=ietf-x509-cert-to-name&revision=2014-12-10urn:ietf:params:xml:ns:yang:ietf-yang-metadata?module=ietf-yang-metadata&revision=2016-08-05urn:ietf:params:xml:ns:yang:ietf-yang-smiv2?module=ietf-yang-smiv2&revision=2012-06-22urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&revision=2013-07-15running1717-711273-156835validflex-scale-mg-on2024-04-25yang23runningread2024-06-06T22:01:09+00:000328000WBSS-1WBSS-1falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-1-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX1MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-10WBSS-10falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-5-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX10MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-11WBSS-11falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON" -[2024-06-20 13:24:33,602] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:24:33,602] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:24:33,714] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:24:33,714] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:33,715] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:33,715] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:33,715] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:33,715] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:33,715] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:33,715] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:33,716] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:24:33,716] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:24:33,716] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:33,716] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:33,716] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:33,716] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:33,716] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:33,716] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:33,716] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:33,716] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:24:33,717] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:24:33,717] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:33,717] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:33,717] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:33,717] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:33,717] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:33,717] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:33,718] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:33,718] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:24:33,718] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:24:33,718] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:33,718] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:33,718] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:33,719] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:33,719] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:33,719] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: appending 16376 bytes -[2024-06-20 13:24:33,719] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: fragment = "_PORTport-6-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX11MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-12WBSS-12falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-6-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX12MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-13WBSS-13falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-7-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX13MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-14WBSS-14falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-7-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX14MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-15WBSS-15falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-8-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX15MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-16WBSS-16falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-8-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX16MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-17WBSS-17falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-9-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX17MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-18WBSS-18falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-9-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX18MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-19WBSS-19falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-10-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX19MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-2WBSS-2falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-1-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX2MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-20WBSS-20falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-10-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX20MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-21WBSS-21falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-11-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX21MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-22WBSS-22falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-11-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX22MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-23WBSS-23falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-12-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX23MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-24WBSS-24falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-12-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX24MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-25WBSS-25falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-13-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX25MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-26WBSS-26falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-13-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX26MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-27WBSS-27falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-14-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX27MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-28WBSS-28falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-14-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX28MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-29WBSS-2911C_BAND192006250192206250ENABLED1C_BAND192006250192206250ENABLEDUPADDADDport-1-outport-1-outadmin9000100$1$LWKnq6Bt$b.uVhMiISHVTC6CXfnfrC0/var/confd/homes/admin/.ssh/var/confd/homes/adminoper9000100$1$im2jm9f9$kg2pTFGHnnHw2QpT8wU1x./var/confd/homes/oper/.ssh/var/confd/homes/operprivate9000100$1$FV0aZKYX$WCQ/jCpTiyjJIbnnTtnwG./var/confd/homes/private/.ssh/var/confd/homes/privatepublic9000100$1$drWaFr7x$uQSEVNpu/fw2VpBxR2hrP0/var/confd/homes/public/.ssh/var/confd/homes/public0\h> 15\h# exec0actionautowizardenableexithelpstartup15configure7.8.31truestartedflex-scale-mg-on2024-04-25http://flex-scale-project.eu/yang/flex-scale-mg-onfsmgoniana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashianachiana-if-type2023-01-26urn:ietf:params:xml:ns:yang:iana-if-typeianaiftietf-datastores2018-02-14urn:ietf:params:xml:ns:yang:ietf-datastoresdsietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesinetietf-interfaces2018-02-20urn:ietf:params:xml:ns:yang:ietf-interfacesifietf-ip2018-02-22urn:ietf:params:xml:ns:yang:ietf-iptfipietf-netconf2011-06-01urn:ietf:params:xml:ns:netconf:base:1.0ncnetconfietf-netconf-acm2018-02-14urn:ietf:params:xml:ns:yang:ietf-netconf-acmnacmietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringncmietf-netconf-nmda2019-01-07urn:ietf:params:xml:ns:yang:ietf-netconf-nmdancdsnetconfietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsncnietf-netconf-partial-lock2009-10-19urn:ietf:params:xml:ns:netconf:partial-lock:1.0plietf-netconf-with-defaults2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsncwdnetconfietf-network-instance2019-01-21urn:ietf:params:xml:ns:yang:ietf-network-instancetfniietf-origin2018-02-14urn:ietf:params:xml:ns:yang:ietf-originorietf-restconf2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconfrcrestnetconfietf-restconf-monitoring2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconf-monitoringrcmonietf-subscribed-notifications2019-09-09urn:ietf:params:xml:ns:yang:ietf-subscribed-notificationssnnetconfietf-x509-cert-to-name2014-12-10urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-namex509c2nietf-yang-library2019-01-04urn:ietf:params:xml:ns:yang:ietf-yang-libraryyanglibnetconfrestietf-yang-metadata2016-08-05urn:ietf:params:xml:ns:yang:ietf-yang-metadatamdietf-yang-patch2017-02-22urn:ietf:params:xml:ns:yang:ietf-yang-patchypatchrestnetconfietf-yang-push2019-09-09urn:ietf:params:xml:ns:yang:ietf-yang-pushypnetconfietf-yang-schema-mount2019-01-14urn:ietf:params:xml:ns:yang:ietf-yang-schema-mountyangmntietf-yang-smiv22012-06-22urn:ietf:params:xml:ns:yang:ietf-yang-smiv2smiv2ietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesyangnetconf_netmodurn:ietf:params:xml:ns:netmod:notificationnmnetconfopenconfig-alarm-types2018-11-21http://openconfig.net/yang/alarms/typesoc-alarm-typesopenconfig-extensions2018-10-17http://openconfig.net/yang/openconfig-extoc-extopenconfig-if-ethernet2023-03-10http://openconfig.net/yang/interfaces/ethernetoc-ethopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipoc-ipopenconfig-if-types2018-11-21http://openconfig.net/yang/openconfig-if-typesoc-iftopenconfig-inet-types2019-04-25http://openconfig.net/yang/types/inetoc-inetopenconfig-interfaces2019-07-10http://openconfig.net/yang/interfacesoc-ifopenconfig-platform2022-12-20http://openconfig.net/yang/platformoc-platformopenconfig-platform-port2023-01-19http://openconfig.net/yang/platform/portoc-portopenconfig-platform-types2022-07-28http://openconfig.net/yang/platform-typesoc-platform-typesopenconfig-transport-types2023-02-08http://openconfig.net/yang/transport-typesoc-opt-typesopenconfig-types2019-04-16http://openconfig.net/yang/openconfig-typesoc-typesopenconfig-wavelength-router2021-07-26http://openconfig.net/yang/wavelength-routeroc-wave-routeropenconfig-yang-types2018-11-21http://openconfig.net/yang/types/yangoc-yangoptical-switch2020-01-10http://www.polatis.com/yang/optical-switchopswpolatis-switch2020-11-14http://www.polatis.com/yang/polatis-switchpltstailf-aaa2022-04-12http://tail-f.com/ns/aaa/1.1aaatailf-acm2013-03-07http://tail-f.com/yang/acmtacmtailf-common2022-04-12http://tail-f.com/yang/commontailftailf-common-monitoring2021-09-02http://tail-f.com/yang/common-monitoringtfcgtailf-common-query2017-12-15http://tail-f.com/ns/common/querytfcqtailf-confd-monitoring2021-09-09http://tail-f.com/yang/confd-monitoringtfcmtailf-confd-progress2020-06-29http://tail-f" -[2024-06-20 13:24:36,188] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:24:36,188] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:24:36,268] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:24:36,269] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:36,269] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:36,269] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=7 -[2024-06-20 13:24:36,269] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:36,269] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 6330 bytes -[2024-06-20 13:24:36,269] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:36,269] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:36,269] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:24:36,269] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:24:36,270] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 6341 bytes -[2024-06-20 13:24:36,270] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:36,270] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=7 -[2024-06-20 13:24:36,270] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:36,270] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 6330 bytes -[2024-06-20 13:24:36,270] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: appending 6330 bytes -[2024-06-20 13:24:36,270] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: fragment = ".com/ns/confd-progressconfd-progresstailf-kicker2020-11-26http://tail-f.com/ns/kickerkickertailf-last-login2019-11-21http://tail-f.com/yang/last-loginlasttailf-netconf-extensions2021-06-18http://tail-f.com/ns/netconf/extensionstfncenetconftailf-netconf-forwardhttp://tail-f.com/ns/netconf/forward/1.0fwdnetconftailf-netconf-inactivehttp://tail-f.com/ns/netconf/inactive/1.0innetconftailf-netconf-monitoring2022-04-12http://tail-f.com/yang/netconf-monitoringtncmtailf-netconf-query2017-01-06http://tail-f.com/ns/netconf/querytfncqnetconftailf-netconf-rollback2018-01-12http://tail-f.com/ns/netconf/rollbacknetconf-rollbacknetconftailf-netconf-transactionshttp://tail-f.com/ns/netconf/transactions/1.0trnetconftailf-netconf-with-rollback-id2020-06-25http://tail-f.com/ns/netconf/with-rollback-idwrbidnetconftailf-netconf-with-transaction-id2018-11-23http://tail-f.com/ns/netconf/with-transaction-idwtxidnetconftailf-progress2021-12-17http://tail-f.com/ns/progressprogresstailf-rollback2020-09-02http://tail-f.com/ns/rollbackrollbackrestnetconfmaapitailf-xsd-types2017-11-20http://tail-f.com/yang/xsd-typesxs0.0.0.020220.0.0.02024fiberscp0fsmgon_daemonnum_instancesremovecreateset_elemget_nextget_elemmediachannelscp0fsmgon_daemonnum_instancesremovecreateset_elemget_nextget_elemopticalbandscp0fsmgon_daemonnum_instancesremovecreateset_elemget_nextget_elemvp10fsmgon_daemonvp20fsmgon_daemonrunning1717-711273-156835./confd-cdb/A.cdb35577915512390false0falseoperational22./confd-cdb/O.cdb42108falseadmin2024-06-20T13:24:30.493779+00:00066778e1455b10.30.2.208ncm:netconf-ssh02024-06-06T23:12:41.957668+00:00066778e1455b10.30.2.206ncm:netconf-ssh02024-06-06T22:01:13.861449+00:00066778e1455b127.0.0.1ncm:netconf-ssh00rollback010002admin2024-06-07 08:55:35netconf1rollback110001system2024-06-06 22:01:13system2rollback210000system2024-06-06 22:01:11system" -[2024-06-20 13:24:36,270] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 6337 bytes from start of buffer -[2024-06-20 13:24:36,270] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=4 -[2024-06-20 13:24:36,271] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found end of message delimiter -[2024-06-20 13:24:36,273] DEBUG:ncclient.operations.rpc:[host 172.17.254.21 session-id 21] Delivering to -[2024-06-20 13:24:36,273] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: saving back rest of message after 6341 bytes, original size 6341 -[2024-06-20 13:24:36,273] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -int-connection-91 -int-connection-92 -int-connection-93 -int-connection-94 -int-connection-95 -int-connection-96 -int-connection-97 -int-connection-98 -int-connection-99 -port-1-in -port-1-out -port-10-in -port-10-out -port-11-in -port-11-out -port-12-in -port-12-out -port-13-in -port-13-out -port-14-in -port-14-out -port-15-in -port-15-out -port-16-in -port-16-out -port-17-in -port-17-out -port-18-in -port-18-out -port-19-in -port-19-out -port-2-in -port-2-out -port-20-in -port-20-out -port-21-in -port-21-out -port-22-in -port-22-out -port-23-in -port-23-out -port-24-in -port-24-out -port-25-in -port-25-out -port-26-in -port-26-out -port-27-in -port-27-out -port-28-in -port-28-out -port-29-in -port-29-out -port-3-in -port-3-out -port-30-in -port-30-out -port-31-in -port-31-out -port-32-in -port-32-out -port-33-in -port-33-out -port-34-in -port-34-out -port-35-in -port-35-out -port-36-in -port-36-out -port-37-in -port-37-out -port-38-in -port-38-out -port-39-in -port-39-out -port-4-in -port-4-out -port-40-in -port-40-out -port-41-in -port-41-out -port-42-in -port-42-out -port-43-in -port-43-out -port-44-in -port-44-out -port-45-in -port-45-out -port-46-in -port-46-out -port-47-in -port-47-out -port-48-in -port-48-out -port-5-in -port-5-out -port-6-in -port-6-out -port-7-in -port-7-out -port-8-in -port-8-out -port-9-in -port-9-out -component [, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -WBSS-1 -WBSS-10 -WBSS-11 -WBSS-12 -WBSS-13 -WBSS-14 -WBSS-15 -WBSS-16 -WBSS-17 -WBSS-18 -WBSS-19 -WBSS-2 -WBSS-20 -WBSS-21 -WBSS-22 -WBSS-23 -WBSS-24 -WBSS-25 -WBSS-26 -WBSS-27 -WBSS-28 -WBSS-29 -WBSS-3 -WBSS-30 -WBSS-31 -WBSS-32 -WBSS-4 -WBSS-5 -WBSS-6 -WBSS-7 -WBSS-8 -WBSS-9 -WSS-1 -WSS-10 -WSS-11 -WSS-12 -WSS-2 -WSS-3 -WSS-4 -WSS-5 -WSS-6 -WSS-7 -WSS-8 -WSS-9 -int-connection-1 -int-connection-10 -int-connection-100 -int-connection-101 -int-connection-102 -int-connection-103 -int-connection-104 -int-connection-105 -int-connection-106 -int-connection-107 -int-connection-108 -int-connection-109 -int-connection-11 -int-connection-110 -int-connection-111 -int-connection-112 -int-connection-113 -int-connection-114 -int-connection-115 -int-connection-116 -int-connection-117 -int-connection-118 -int-connection-119 -int-connection-12 -int-connection-120 -int-connection-121 -int-connection-122 -int-connection-123 -int-connection-124 -int-connection-125 -int-connection-126 -int-connection-127 -int-connection-128 -int-connection-129 -int-connection-13 -int-connection-130 -int-connection-131 -int-connection-132 -int-connection-133 -int-connection-134 -int-connection-135 -int-connection-136 -int-connection-137 -int-connection-138 -int-connection-139 -int-connection-14 -int-connection-140 -int-connection-141 -int-connection-142 -int-connection-143 -int-connection-144 -int-connection-145 -int-connection-146 -int-connection-147 -int-connection-148 -int-connection-149 -int-connection-15 -int-connection-150 -int-connection-151 -int-connection-152 -int-connection-153 -int-connection-154 -int-connection-155 -int-connection-156 -int-connection-157 -int-connection-158 -int-connection-159 -int-connection-16 -int-connection-160 -int-connection-161 -int-connection-162 -int-connection-163 -int-connection-164 -int-connection-165 -int-connection-166 -int-connection-167 -int-connection-168 -int-connection-169 -int-connection-17 -int-connection-170 -int-connection-171 -int-connection-172 -int-connection-173 -int-connection-174 -int-connection-175 -int-connection-176 -int-connection-177 -int-connection-178 -int-connection-179 -int-connection-18 -int-connection-180 -int-connection-181 -int-connection-182 -int-connection-183 -int-connection-184 -int-connection-185 -int-connection-186 -int-connection-187 -int-connection-188 -int-connection-189 -int-connection-19 -int-connection-190 -int-connection-191 -int-connection-192 -int-connection-193 -int-connection-194 -int-connection-195 -int-connection-196 -int-connection-197 -int-connection-198 -int-connection-199 -int-connection-2 -int-connection-20 -int-connection-200 -int-connection-201 -int-connection-202 -int-connection-203 -int-connection-204 -int-connection-205 -int-connection-206 -int-connection-207 -int-connection-208 -int-connection-209 -int-connection-21 -int-connection-210 -int-connection-211 -int-connection-212 -int-connection-213 -int-connection-214 -int-connection-215 -int-connection-216 -int-connection-217 -int-connection-218 -int-connection-219 -int-connection-22 -int-connection-220 -int-connection-221 -int-connection-222 -int-connection-223 -int-connection-224 -int-connection-225 -int-connection-226 -int-connection-227 -int-connection-228 -int-connection-229 -int-connection-23 -int-connection-230 -int-connection-231 -int-connection-232 -int-connection-233 -int-connection-234 -int-connection-235 -int-connection-236 -int-connection-237 -int-connection-238 -int-connection-239 -int-connection-24 -int-connection-240 -int-connection-241 -int-connection-242 -int-connection-243 -int-connection-244 -int-connection-245 -int-connection-246 -int-connection-247 -int-connection-248 -int-connection-249 -int-connection-25 -int-connection-250 -int-connection-251 -int-connection-252 -int-connection-253 -int-connection-254 -int-connection-255 -int-connection-256 -int-connection-257 -int-connection-258 -int-connection-259 -int-connection-26 -int-connection-260 -int-connection-261 -int-connection-262 -int-connection-263 -int-connection-264 -int-connection-265 -int-connection-266 -int-connection-267 -int-connection-268 -int-connection-269 -int-connection-27 -int-connection-270 -int-connection-271 -int-connection-272 -int-connection-273 -int-connection-274 -int-connection-275 -int-connection-276 -int-connection-277 -int-connection-278 -int-connection-279 -int-connection-28 -int-connection-280 -int-connection-281 -int-connection-282 -int-connection-283 -int-connection-284 -int-connection-285 -int-connection-286 -int-connection-287 -int-connection-288 -int-connection-289 -int-connection-29 -int-connection-290 -int-connection-291 -int-connection-292 -int-connection-293 -int-connection-294 -int-connection-295 -int-connection-296 -int-connection-297 -int-connection-298 -int-connection-299 -int-connection-3 -int-connection-30 -int-connection-300 -int-connection-301 -int-connection-302 -int-connection-303 -int-connection-304 -int-connection-305 -int-connection-306 -int-connection-307 -int-connection-308 -int-connection-309 -int-connection-31 -int-connection-310 -int-connection-311 -int-connection-312 -int-connection-313 -int-connection-314 -int-connection-315 -int-connection-316 -int-connection-317 -int-connection-318 -int-connection-319 -int-connection-32 -int-connection-320 -int-connection-321 -int-connection-322 -int-connection-323 -int-connection-324 -int-connection-325 -int-connection-326 -int-connection-327 -int-connection-328 -int-connection-329 -int-connection-33 -int-connection-330 -int-connection-331 -int-connection-332 -int-connection-333 -int-connection-334 -int-connection-335 -int-connection-336 -int-connection-337 -int-connection-338 -int-connection-339 -int-connection-34 -int-connection-340 -int-connection-341 -int-connection-342 -int-connection-343 -int-connection-344 -int-connection-345 -int-connection-346 -int-connection-347 -int-connection-348 -int-connection-349 -int-connection-35 -int-connection-350 -int-connection-351 -int-connection-352 -int-connection-353 -int-connection-354 -int-connection-355 -int-connection-356 -int-connection-357 -int-connection-358 -int-connection-359 -int-connection-36 -int-connection-360 -int-connection-361 -int-connection-362 -int-connection-363 -int-connection-364 -int-connection-365 -int-connection-366 -int-connection-367 -int-connection-368 -int-connection-369 -int-connection-37 -int-connection-370 -int-connection-371 -int-connection-372 -int-connection-373 -int-connection-374 -int-connection-375 -int-connection-376 -int-connection-377 -int-connection-378 -int-connection-379 -int-connection-38 -int-connection-380 -int-connection-381 -int-connection-382 -int-connection-383 -int-connection-384 -int-connection-385 -int-connection-386 -int-connection-387 -int-connection-388 -int-connection-389 -int-connection-39 -int-connection-390 -int-connection-391 -int-connection-392 -int-connection-393 -int-connection-394 -int-connection-395 -int-connection-396 -int-connection-397 -int-connection-398 -int-connection-399 -int-connection-4 -int-connection-40 -int-connection-400 -int-connection-401 -int-connection-402 -int-connection-403 -int-connection-404 -int-connection-405 -int-connection-406 -int-connection-407 -int-connection-408 -int-connection-409 -int-connection-41 -int-connection-410 -int-connection-411 -int-connection-412 -int-connection-413 -int-connection-414 -int-connection-415 -int-connection-416 -int-connection-417 -int-connection-418 -int-connection-419 -int-connection-42 -int-connection-420 -int-connection-421 -int-connection-422 -int-connection-423 -int-connection-424 -int-connection-425 -int-connection-426 -int-connection-427 -int-connection-428 -int-connection-43 -int-connection-44 -int-connection-45 -int-connection-46 -int-connection-47 -int-connection-48 -int-connection-49 -int-connection-5 -int-connection-50 -int-connection-51 -int-connection-52 -int-connection-53 -int-connection-54 -int-connection-55 -int-connection-56 -int-connection-57 -int-connection-58 -int-connection-59 -int-connection-6 -int-connection-60 -int-connection-61 -int-connection-62 -int-connection-63 -int-connection-64 -int-connection-65 -int-connection-66 -int-connection-67 -int-connection-68 -int-connection-69 -int-connection-7 -int-connection-70 -int-connection-71 -int-connection-72 -int-connection-73 -int-connection-74 -int-connection-75 -int-connection-76 -int-connection-77 -int-connection-78 -int-connection-79 -int-connection-8 -int-connection-80 -int-connection-81 -int-connection-82 -int-connection-83 -int-connection-84 -int-connection-85 -int-connection-86 -int-connection-87 -int-connection-88 -int-connection-89 -int-connection-9 -int-connection-90 -[2024-06-20 13:24:36,357] INFO:root:parameters {} -[2024-06-20 13:24:36,359] DEBUG:context.client.ContextClient:SetOpticalConfig request: {"config": "{}", "device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}} -[2024-06-20 13:24:36,383] DEBUG:context.client.ContextClient:SetOpticalConfig result: {"opticalconfig_uuid": ""} -[2024-06-20 13:24:36,393] DEBUG:context.client.ContextClient:SetDevice request: {"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.21"}}, {"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}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-1-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-1-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-10-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-10-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-11-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-11-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-12-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-12-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-13-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-13-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-14-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-14-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-15-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-15-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-16-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-16-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-2-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-2-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-3-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-3-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-4-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-4-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-5-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-5-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-6-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-6-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-7-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-7-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-8-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-8-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-9-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-9-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-1-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-1-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-10-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-10-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-11-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-11-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-12-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-12-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-13-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-13-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-14-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-14-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-15-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-15-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-16-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-16-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-2-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-2-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-3-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-3-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-4-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-4-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-5-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-5-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-6-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-6-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-7-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-7-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-8-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-8-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-9-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-9-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-33-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-33-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-34-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-34-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-35-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-35-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-36-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-36-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-37-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-37-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-38-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-38-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-39-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-39-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-40-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-40-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-41-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-41-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-42-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-42-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-43-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-43-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-44-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-44-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-45-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-45-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-46-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-46-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-47-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-47-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-48-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-48-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-33-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-33-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-34-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-34-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-35-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-35-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-36-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-36-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-37-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-37-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-38-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-38-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-39-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-39-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-40-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-40-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-41-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-41-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-42-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-42-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-43-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-43-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-44-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-44-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-45-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-45-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-46-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-46-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-47-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-47-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-48-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-48-out\"}"}}]}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-1-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-10-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-11-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-12-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-13-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-14-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-15-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-16-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-2-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-3-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-4-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-5-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-6-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-7-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-8-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-9-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-1-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-10-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-11-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-12-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-13-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-14-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-15-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-16-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-2-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-3-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-4-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-5-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-6-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-7-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-8-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-9-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-33-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-34-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-35-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-36-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-37-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-38-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-39-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-40-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-41-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-42-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-43-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-44-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-45-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-46-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-47-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-48-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-33-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-34-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-35-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-36-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-37-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-38-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-39-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-40-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-41-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-42-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-43-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-44-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-45-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-46-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-47-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "port-48-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}], "device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-roadm", "name": "R1"} -[2024-06-20 13:24:36,594] DEBUG:context.client.ContextClient:SetDevice result: {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}} -[2024-06-20 13:24:36,594] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}]}, "include_components": false, "include_config_rules": false, "include_endpoints": true} -[2024-06-20 13:24:36,624] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": [{"components": [], "controller_id": {}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "02c19f3c-73ac-55b9-b4c2-7def7e7df9fe"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-48-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "0332be2a-9b4e-52d7-ac7b-3ea58bf00375"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-12-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "08da1aa7-9253-5e92-bf2c-6e66ffe7a4ff"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-38-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "0b1c4d0e-5140-5085-ab66-2def390b650f"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-33-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "12b4419f-9ae9-5839-ad52-9684b1f30878"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-34-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "188af412-9ac2-588f-8f00-a956aa6b2ae5"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-43-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "18a51dcf-905d-5104-9ef1-f24740fd6d78"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-12-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "1e02e33d-4b14-502d-9806-988f64cccb5d"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-43-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "21b8ccaa-9f7b-5bc5-9fc0-6f32025eb8a6"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-41-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "22d287ab-7935-55cb-b681-944a064726a9"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-11-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "28666b3c-4b96-5cb6-8006-eba13ca8ab6e"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-9-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "29e8b36f-6989-5651-99fe-b3cb2ee5b4b8"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-40-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "2b646bf7-3120-5254-a4fb-748294c61a71"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-2-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "35aaee89-81a3-56b1-b1ba-33f972d0af49"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-36-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "385bc8da-171b-574c-9d4f-d9b08f29c469"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-40-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "38f57fc2-4b25-5b8e-8ab0-e2676594b652"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-39-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "3972ab17-4386-5a0c-92db-fc8096433068"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-38-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "3a49ceb2-fd5b-59e2-975a-b065c4e127a4"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-7-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "3b1551b2-3c17-54f6-8990-308ee42b421d"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-15-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "3f8b1948-619c-5130-a158-b7beb838434c"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-14-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "435a198b-cd6f-5d29-a72d-ea4f04cb658a"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-35-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "436bb32a-c8a0-5718-bbdb-382c79d96587"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-1-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "4b197fb8-d26e-59fb-a96c-d347ba017b28"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-46-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "53e3c997-d487-5d96-a6c4-998a562dcb96"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-5-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "55684f06-7aab-5061-aa0d-2e37b45e5ec7"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-2-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "56c81904-047c-5d7c-a765-79b9e4b7abf2"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-3-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "59871dc1-872d-5df1-9392-2537a591c86c"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-45-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "59fcacb0-1840-5dd3-9dfa-a07cf4f91bd2"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-3-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "5ac999c3-3df8-53c4-8f4a-52e5943f5c4c"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-14-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "62099377-4f4f-5ffb-aa37-6dec3319a21e"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-13-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "6a6dc5d4-567c-5104-b50d-6820768d2699"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-46-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "77df46fd-6d6e-5726-9960-ca439c925dea"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-1-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "7be48ef0-2357-55fa-aca6-a1aeeeb3267a"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-42-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "7ce13dc8-d5f1-5233-beec-1d99416c9164"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-44-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "883609be-6125-5bbf-91ac-2a30e75a7d1e"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-16-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "8d0c4ac4-c522-5992-a206-45e8bf8389c6"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-7-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "904c4b18-10a6-512b-9bb2-8ec81e74fda4"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-34-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "91492a21-2f88-5acc-a427-2a57230eb2ea"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-15-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "927b0db8-602b-54d5-acd9-c1cd6395425f"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-39-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "a18a7eb1-811d-5d27-be08-db212d83f25e"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-45-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "a7058178-97da-5b95-b969-abe5ab7a8e6f"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-42-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "a7d33ece-9565-59ec-999f-4c995d142f83"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-4-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "a9061634-e9a7-5d13-bc96-09fbf31cd610"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-41-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "b5354091-162e-5073-aeb2-ec5debcfcf9f"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-16-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "b9fbeed8-e304-5bd5-90e1-3e43c6af5a16"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-35-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "c31537c8-13df-503d-bf91-64e860e6b573"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-48-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "ca4f5f60-37ba-567b-a474-ff8951033342"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-47-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "cc197d41-625f-50d1-94d8-c6c63a31ccfb"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-8-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "ccb07637-f7d6-5b4a-9fc6-8510ef694cd9"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-4-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "cd539095-12a6-5460-8b07-481ec1901c9a"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-33-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "cfe60fca-3fe5-5747-ace8-ca7913e26d81"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-13-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "dda83a5d-29b7-5f96-9b0a-bd1f39e1db2f"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-37-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "e2500678-0f36-555a-9133-7cd04d3ad63a"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-6-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "e5265cb0-2e80-5ea1-80d8-333749bb7f14"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-5-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "e9d0dac3-11f2-5b84-9125-d0300ccd8eeb"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-37-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "e9d4bff3-76ac-5490-b897-a30b9a42a8b1"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-44-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "ea73d8c4-1077-55c9-87f1-9c377cee196f"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-9-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "eb38e3cd-e42a-54b2-846c-82207a95e8e3"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-10-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "ebfe571c-77b2-5f66-9efe-25583cc1f587"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-36-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "ee4df110-8657-571c-aa20-a70ec79db01f"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-47-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "f206246e-cb90-56b4-b908-1dc3daa7ac3f"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-11-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "f7052fb4-fab8-5821-95e0-d407043742d8"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-8-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "f8bd2b7e-6d37-5bbc-92f4-9b9b2e0ce22c"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-10-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "ff51524f-7b51-5efd-af6b-6bc8541d3716"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-6-out"}], "device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-roadm", "name": "R1"}]} -[2024-06-20 13:24:36,625] DEBUG:device.service.DeviceServiceServicerImpl:AddDevice reply: {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}} -[2024-06-20 13:24:43,302] DEBUG:device.service.DeviceServiceServicerImpl:AddDevice request: {"components": [], "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.22"}}, {"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": [], "device_id": {"device_uuid": {"uuid": "R2"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_DISABLED", "device_type": "optical-roadm", "name": ""} -[2024-06-20 13:24:43,302] DEBUG:context.client.ContextClient:Creating channel to 10.152.183.195:1010... -[2024-06-20 13:24:43,303] DEBUG:context.client.ContextClient:Channel created -[2024-06-20 13:24:43,303] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "R2"}}]}, "include_components": true, "include_config_rules": true, "include_endpoints": true} -[2024-06-20 13:24:43,330] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": []} -[2024-06-20 13:24:43,331] DEBUG:context.client.ContextClient:SetDevice request: {"components": [], "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.22"}}, {"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": [], "device_id": {"device_uuid": {"uuid": "R2"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_UNDEFINED", "device_type": "optical-roadm", "name": ""} -[2024-06-20 13:24:43,376] DEBUG:context.client.ContextClient:SetDevice result: {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}} -[2024-06-20 13:24:43,376] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}]}, "include_components": true, "include_config_rules": true, "include_endpoints": true} -[2024-06-20 13:24:43,407] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": [{"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.22"}}, {"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": [], "device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_UNDEFINED", "device_type": "optical-roadm", "name": "R2"}]} -[2024-06-20 13:24:43,408] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(c944aaeb-bbdf-5f2d-b31c-8cc8903045b6) with filter_fields({'device_type': 'optical-roadm', 'driver': [11]})... -[2024-06-20 13:24:43,408] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(c944aaeb-bbdf-5f2d-b31c-8cc8903045b6) with filter_fields({'device_type': 'optical-roadm', 'driver': [11]})... -[2024-06-20 13:24:43,408] DEBUG:ncclient.transport.session:[host None session 0x7fa7485e6970] created: client_capabilities= -[2024-06-20 13:24:43,526] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session 0x7fa7485e6970] parsing netconf v1.0 -[2024-06-20 13:24:43,527] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session 0x7fa7485e6970] parsing netconf v1.0 -[2024-06-20 13:24:43,528] INFO:root:settings {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-roadm', 'username': 'admin'} -[2024-06-20 13:24:43,530] INFO:ncclient.operations.rpc:[host 172.17.254.22 session-id 21] Requesting 'Get' -[2024-06-20 13:24:43,530] DEBUG:ncclient.operations.rpc:[host 172.17.254.22 session-id 21] Sync request, will wait for timeout=120 -[2024-06-20 13:24:43,678] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:24:43,679] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:43,679] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:43,679] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:43,679] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:43,679] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:43,679] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:43,679] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:43,679] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:24:43,679] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:24:43,679] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:43,679] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:43,680] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:43,680] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:43,680] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:43,680] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:43,680] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:43,680] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:24:43,680] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:24:43,680] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:43,680] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:43,680] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:43,680] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:43,681] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:43,681] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:43,681] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:43,681] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:24:43,681] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:24:43,681] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:43,681] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:43,681] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:43,681] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:43,681] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:43,682] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: appending 16376 bytes -[2024-06-20 13:24:43,682] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: fragment = " -commonflex-scale-mg-on2024-04-25http://flex-scale-project.eu/yang/flex-scale-mg-oniana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashcrypt-hash-md5crypt-hash-sha-256crypt-hash-sha-512ietf-interfaces2018-02-20urn:ietf:params:xml:ns:yang:ietf-interfacesarbitrary-namesif-mibpre-provisioningietf-netconf2011-06-01urn:ietf:params:xml:ns:netconf:base:1.0rollback-on-errorvalidatewritable-runningxpathietf-netconf-acm2018-02-14urn:ietf:params:xml:ns:yang:ietf-netconf-acmietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringietf-netconf-nmda2019-01-07urn:ietf:params:xml:ns:yang:ietf-netconf-nmdawith-defaultsietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsietf-netconf-partial-lock2009-10-19urn:ietf:params:xml:ns:netconf:partial-lock:1.0ietf-netconf-with-defaults2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsietf-restconf2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconfietf-restconf-monitoring2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconf-monitoringietf-subscribed-notifications2019-09-09urn:ietf:params:xml:ns:yang:ietf-subscribed-notificationsencode-xmlreplaysubtreexpathietf-subscribed-notifications-deviationietf-yang-library2019-01-04urn:ietf:params:xml:ns:yang:ietf-yang-libraryietf-yang-patch2017-02-22urn:ietf:params:xml:ns:yang:ietf-yang-patchietf-yang-push2019-09-09urn:ietf:params:xml:ns:yang:ietf-yang-pushon-changeietf-yang-push-deviationietf-yang-schema-mount2019-01-14urn:ietf:params:xml:ns:yang:ietf-yang-schema-mountopenconfig-if-ethernet2023-03-10http://openconfig.net/yang/interfaces/ethernetopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipopenconfig-interfaces2019-07-10http://openconfig.net/yang/interfacesopenconfig-platform2022-12-20http://openconfig.net/yang/platformopenconfig-platform-common2022-12-20openconfig-platform-port2023-01-19http://openconfig.net/yang/platform/portopenconfig-wavelength-router2021-07-26http://openconfig.net/yang/wavelength-routeroptical-switch2020-01-10http://www.polatis.com/yang/optical-switchpolatis-switch2020-11-14http://www.polatis.com/yang/polatis-switchtailf-aaa2022-04-12http://tail-f.com/ns/aaa/1.1tailf-acm2013-03-07http://tail-f.com/yang/acmtailf-confd-monitoring2021-09-09http://tail-f.com/yang/confd-monitoringtailf-confd-progress2020-06-29http://tail-f.com/ns/confd-progresstailf-kicker2020-11-26http://tail-f.com/ns/kickertailf-last-login2019-11-21http://tail-f.com/yang/last-logintailf-netconf-extensions2021-06-18http://tail-f.com/ns/netconf/extensionstailf-netconf-monitoring2022-04-12http://tail-f.com/yang/netconf-monitoringtailf-netconf-query2017-01-06http://tail-f.com/ns/netconf/querytailf-netconf-rollback2018-01-12http://tail-f.com/ns/netconf/rollbacktailf-netconf-transactionshttp://tail-f.com/ns/netconf/transactions/1.0tailf-netconf-with-rollback-id2020-06-25http://tail-f.com/ns/netconf/with-rollback-idtailf-netconf-with-transaction-id2018-11-23http://tail-f.com/ns/netconf/with-transaction-idtailf-progress2021-12-17http://tail-f.com/ns/progresstailf-rollback2020-09-02http://tail-f.com/ns/rollbackiana-if-type2023-01-26urn:ietf:params:xml:ns:yang:iana-if-typeietf-datastores2018-02-14urn:ietf:params:xml:ns:yang:ietf-datastoresietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesietf-ip2018-02-22urn:ietf:params:xml:ns:yang:ietf-ipietf-network-instance2019-01-21urn:ietf:params:xml:ns:yang:ietf-network-instanceietf-origin2018-02-14urn:ietf:params:xml:ns:yang:ietf-originietf-x509-cert-to-name2014-12-10urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-nameietf-yang-metadata2016-08-05urn:ietf:params:xml:ns:yang:ietf-yang-metadataietf-yang-smiv22012-06-22urn:ietf:params:xml:ns:yang:ietf-yang-smiv2ietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesopenconfig-alarm-types2018-11-21http://openconfig.net/yang/alarms/typesopenconfig-extensions2018-10-17http://openconfig.net/yang/openconfig-extopenconfig-if-types2018-11-21http://openconfig.net/yang/openconfig-if-typesopenconfig-inet-types2019-04-25http://openconfig.net/yang/types/inetopenconfig-platform-types2022-07-28http://openconfig.net/yang/platform-typesopenconfig-transport-types2023-02-08http://openconfig.net/yang/transport-typesopenconfig-types2019-04-16http://openconfig.net/yang/openconfig-typesopenconfig-yang-types2018-11-21http://openconfig.net/yang/types/yangtailf-common2022-04-12http://tail-f.com/yang/commontailf-cli-extensions2021-12-17tailf-meta-extensions2017-03-08tailf-common-monitoring2021-09-02http://tail-f.com/yang/common-monitoringtailf-common-query2017-12-15http://tail-f.com/ns/common/querytailf-netconf-forwardhttp://tail-f.com/ns/netconf/forward/1.0tailf-netconf-inactivehttp://tail-f.com/ns/netconf/inactive/1.0tailf-xsd-types2017-11-20http://tail-f.com/yang/xsd-typescommoncommonds:runningcommonds:intendedcommonds:operationalcommonc12b960e969b26974084d2b999572983c12b960e969b26974084d2b999572983flex-scale-mg-on2024-04-25http://flex-scale-project.eu/yang/flex-scale-mg-onimplementiana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashcrypt-hash-md5crypt-hash-sha-256crypt-hash-sha-512implementiana-if-type2023-01-26urn:ietf:params:xml:ns:yang:iana-if-typeimportietf-datastores2018-02-14urn:ietf:params:xml:ns:yang:ietf-datastoresimportietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesimportietf-interfaces2018-02-20urn:ietf:params:xml:ns:yang:ietf-interfacesarbitrary-namesif-mibpre-provisioningimplementietf-ip2018-02-22urn:ietf:params:xml:ns:yang:ietf-ipipv4-non-contiguous-netmasksipv6-privacy-autoconfimportietf-netconf2011-06-01urn:ietf:params:xml:ns:netconf:base:1.0rollback-on-errorvalidatewritable-runningxpathimplementietf-netconf-acm2018-02-14urn:ietf:params:xml:ns:yang:ietf-netconf-acmimplementietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringimplementietf-netconf-nmda2019-01-07urn:ietf:params:xml:ns:yang:ietf-netconf-nmdawith-defaultsimplementietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsimplementietf-netconf-partial-lock2009-10-19urn:ietf:params:xml:ns:netconf:partial-lock:1.0implementietf-netconf-with-defaults2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsimplementietf-network-instance2019-01-21urn:ietf:params:xml:ns:yang:ietf-network-instanceimportietf-origin2018-02-14urn:ietf:params:xml:ns:yang:ietf-originimportietf-restconf2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconfimplementietf-restconf-monitoring2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconf-monitoringimplementietf-subscribed-notifications2019-09-09urn:ietf:params:xml:ns:yang:ietf-subscribed-notificationsencode-xmlreplaysubtreexpathietf-subscribed-notifications-deviation2020-06-25implementietf-x509-cert-to-name2014-12-10urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-nameimportietf-yang-library2019-01-04urn:ietf:params:xml:ns:yang:ietf-yang-libraryimplementietf-yang-metadata2016-08-05urn:ietf:pa" -[2024-06-20 13:24:43,682] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:24:43,682] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:24:43,748] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:24:43,748] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:43,748] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:43,748] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:43,749] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:43,749] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:43,749] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:43,749] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:43,749] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:24:43,749] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:24:43,749] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:43,749] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:43,749] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:43,749] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:43,750] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:43,750] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:43,750] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:43,750] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:24:43,750] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:24:43,750] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:43,750] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:43,751] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:43,751] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:43,751] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:43,751] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:43,751] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:43,751] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:24:43,751] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:24:43,751] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:43,752] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:43,752] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:43,752] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:43,752] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:43,752] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: appending 16376 bytes -[2024-06-20 13:24:43,752] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: fragment = "rams:xml:ns:yang:ietf-yang-metadataimportietf-yang-patch2017-02-22urn:ietf:params:xml:ns:yang:ietf-yang-patchimplementietf-yang-push2019-09-09urn:ietf:params:xml:ns:yang:ietf-yang-pushon-changeietf-yang-push-deviationimplementietf-yang-schema-mount2019-01-14urn:ietf:params:xml:ns:yang:ietf-yang-schema-mountimplementietf-yang-smiv22012-06-22urn:ietf:params:xml:ns:yang:ietf-yang-smiv2importietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesimportopenconfig-alarm-types2018-11-21http://openconfig.net/yang/alarms/typesimportopenconfig-extensions2018-10-17http://openconfig.net/yang/openconfig-extimportopenconfig-if-ethernet2023-03-10http://openconfig.net/yang/interfaces/ethernetimplementopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipimplementopenconfig-if-types2018-11-21http://openconfig.net/yang/openconfig-if-typesimportopenconfig-inet-types2019-04-25http://openconfig.net/yang/types/inetimportopenconfig-interfaces2019-07-10http://openconfig.net/yang/interfacesimplementopenconfig-platform2022-12-20http://openconfig.net/yang/platformimplementopenconfig-platform-common2022-12-20openconfig-platform-port2023-01-19http://openconfig.net/yang/platform/portimplementopenconfig-platform-types2022-07-28http://openconfig.net/yang/platform-typesimportopenconfig-transport-types2023-02-08http://openconfig.net/yang/transport-typesimportopenconfig-types2019-04-16http://openconfig.net/yang/openconfig-typesimportopenconfig-wavelength-router2021-07-26http://openconfig.net/yang/wavelength-routerimplementopenconfig-yang-types2018-11-21http://openconfig.net/yang/types/yangimportoptical-switch2020-01-10http://www.polatis.com/yang/optical-switchimplementpolatis-switch2020-11-14http://www.polatis.com/yang/polatis-switchimplementtailf-aaa2022-04-12http://tail-f.com/ns/aaa/1.1implementtailf-acm2013-03-07http://tail-f.com/yang/acmimplementtailf-common2022-04-12http://tail-f.com/yang/commonimporttailf-cli-extensions2021-12-17tailf-meta-extensions2017-03-08tailf-common-monitoring2021-09-02http://tail-f.com/yang/common-monitoringimporttailf-common-query2017-12-15http://tail-f.com/ns/common/queryimporttailf-confd-monitoring2021-09-09http://tail-f.com/yang/confd-monitoringimplementtailf-confd-progress2020-06-29http://tail-f.com/ns/confd-progressimplementtailf-kicker2020-11-26http://tail-f.com/ns/kickerimplementtailf-last-login2019-11-21http://tail-f.com/yang/last-loginimplementtailf-netconf-extensions2021-06-18http://tail-f.com/ns/netconf/extensionsimplementtailf-netconf-forwardhttp://tail-f.com/ns/netconf/forward/1.0importtailf-netconf-inactivehttp://tail-f.com/ns/netconf/inactive/1.0importtailf-netconf-monitoring2022-04-12http://tail-f.com/yang/netconf-monitoringimplementtailf-netconf-query2017-01-06http://tail-f.com/ns/netconf/queryimplementtailf-netconf-rollback2018-01-12http://tail-f.com/ns/netconf/rollbackimplementtailf-netconf-transactionshttp://tail-f.com/ns/netconf/transactions/1.0implementtailf-netconf-with-rollback-id2020-06-25http://tail-f.com/ns/netconf/with-rollback-idimplementtailf-netconf-with-transaction-id2018-11-23http://tail-f.com/ns/netconf/with-transaction-idimplementtailf-progress2021-12-17http://tail-f.com/ns/progressimplementtailf-rollback2020-09-02http://tail-f.com/ns/rollbackimplementtailf-xsd-types2017-11-20http://tail-f.com/yang/xsd-typesimportpermit000adminadminprivateoperoperpublicadminadminany-accesspermitany-group*tailf-aaa-authenticationtailf-aaa/aaa/authentication/users/user[name='$USER']read updatepermittailf-aaa-usertailf-aaa/user[name='$USER']create read update deletepermittailf-webui-usertailf-webui/webui/data-stores/user-profile[username='$USER']create read update deletepermiturn:ietf:params:netconf:base:1.0urn:ietf:params:netconf:base:1.1urn:ietf:params:netconf:capability:writable-running:1.0urn:ietf:params:netconf:capability:rollback-on-error:1.0urn:ietf:params:netconf:capability:validate:1.0urn:ietf:params:netconf:capability:validate:1.1urn:ietf:params:netconf:capability:xpath:1.0urn:ietf:params:netconf:capability:partial-lock:1.0urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all-tagged,report-allurn:ietf:params:netconf:capability:with-operational-defaults:1.0?basic-mode=explicit&also-supported=report-all-tagged,report-allurn:ietf:params:netconf:capability:yang-library:1.0?revision=2019-01-04&module-set-id=c12b960e969b26974084d2b999572983urn:ietf:params:netconf:capability:yang-library:1.1?revision=2019-01-04&content-id=c12b960e969b26974084d2b999572983http://tail-f.com/ns/netconf/actions/1.0http://flex-scale-project.eu/yang/flex-scale-mg-on?module=flex-scale-mg-on&revision=2024-04-25http://openconfig.net/yang/alarms/types?module=openconfig-alarm-types&revision=2018-11-21http://openconfig.net/yang/interfaces?module=openconfig-interfaces&revision=2019-07-10http://openconfig.net/yang/interfaces/ethernet?module=openconfig-if-ethernet&revision=2023-03-10http://openconfig.net/yang/interfaces/ip?module=openconfig-if-ip&revision=2019-01-08http://openconfig.net/yang/openconfig-ext?module=openconfig-extensions&revision=2018-10-17http://openconfig.net/yang/openconfig-if-types?module=openconfig-if-types&revision=2018-11-21http://openconfig.net/yang/openconfig-types?module=openconfig-types&revision=2019-04-16http://openconfig.net/yang/platform?module=openconfig-platform&revision=2022-12-20http://openconfig.net/yang/platform-types?module=openconfig-platform-types&revision=2022-07-28http://openconfig.net/yang/platform/port?module=openconfig-platform-port&revision=2023-01-19http://openconfig.net/yang/transport-types?module=openconfig-transport-types&revision=2023-02-08http://openconfig.net/yang/types/inet?module=openconfig-inet-types&revision=2019-04-25http://openconfig.net/yang/types/yang?module=openconfig-yang-types&revision=2018-11-21http://openconfig.net/yang/wavelength-router?module=openconfig-wavelength-router&revision=2021-07-26http://tail-f.com/ns/aaa/1.1?module=tailf-aaa&revision=2022-04-12http://tail-f.com/ns/common/query?module=tailf-common-query&revision=2017-12-15http://tail-f.com/ns/confd-progress?module=tailf-confd-progress&revision=2020-06-29http://tail-f.com/ns/kicker?module=tailf-kicker&revision=2020-11-26http://tail-f.com/ns/netconf/query?module=tailf-netconf-query&revision=2017-01-06http://tail-f.com/yang/acm?module=tailf-acm&revision=2013-03-07http://tail-f.com/yang/common?module=tailf-common&revision=2022-04-12http://tail-f.com/yang/common-monitoring?module=tailf-common-monitoring&revision=2021-09-02http://tail-f.com/yang/confd-monitoring?module=tailf-confd-monitoring&revision=2021-09-09http://tail-f.com/yang/last-login?module=tailf-last-login&revision=2019-11-21http://tail-f.com/yang/netconf-monitoring?module=tailf-netconf-monitoring&revision=2022-04-12http://tail-f.com/yang/xsd-types?module=tailf-xsd-types&revision=2017-11-20http://www.polatis.com/yang/optical-switch?module=optical-switch&revision=2020-01-10http://www.polatis.com/yang/polatis-switch?module=polatis-switch&revision=2020-11-14urn:ietf:params:xml:ns:netconf:base:1.0?module=ietf-netconf&revision=2011-06-01&features=writable-running,rollback-on-error,validate,xpathurn:ietf:params:xml:ns:netconf:partial-lock:1.0?module=ietf-netconf-partial-lock&revision=2009-10-19urn:ietf:params:xml:ns:yang:iana-crypt-hash?module=iana-crypt-hash&revision=2014-08-06&features=crypt-hash-sha-512,crypt-hash-sha-256,crypt-hash-md5urn:ietf:params:xml:ns:yang:iana-if-type?module=iana-if-type&revision=2023-01-26urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&revision=2013-07-15urn:ietf:params:xml:ns:yang:ietf-netconf-acm?module=ietf-netconf-acm&revision=2018-02-14urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&revision=2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-notifications?module=ietf-netconf-notifications&revision=2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?module=ietf-netconf-with-defaults&revision=2011-06-01urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?module=ietf-restconf-monitoring&revision=2017-01-26urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name?module=ietf-x509-cert-to-name&revision=2014-12-10urn:ietf:params:xml:ns:yang:ietf-yang-metadata?module=ietf-yang-metadata&revision=2016-08-05urn:ietf:params:xml:ns:yang:ietf-yang-smiv2?module=ietf-yang-smiv2&revision=2012-06-22urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&revision=2013-07-15running1717-711274-208943validflex-scale-mg-on2024-04-25yang23runningread2024-06-06T22:01:10+00:000327000WBSS-1WBSS-1falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-1-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX1MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-10WBSS-10falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-5-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX10MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-11WBSS-11falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON" -[2024-06-20 13:24:43,825] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:24:43,825] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:24:43,896] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:24:43,896] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:43,896] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:43,896] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:43,896] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:43,896] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:43,896] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:43,896] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:43,896] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:24:43,897] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:24:43,897] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:43,897] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:43,897] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:43,897] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:43,897] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:43,897] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:43,897] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:43,897] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:24:43,898] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:24:43,898] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:43,898] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:43,898] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:43,898] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:43,898] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:43,898] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:43,898] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:43,898] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:24:43,898] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:24:43,898] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:43,899] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:43,899] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:43,899] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:43,899] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:43,899] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: appending 16376 bytes -[2024-06-20 13:24:43,899] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: fragment = "_PORTport-6-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX11MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-12WBSS-12falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-6-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX12MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-13WBSS-13falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-7-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX13MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-14WBSS-14falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-7-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX14MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-15WBSS-15falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-8-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX15MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-16WBSS-16falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-8-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX16MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-17WBSS-17falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-9-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX17MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-18WBSS-18falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-9-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX18MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-19WBSS-19falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-10-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX19MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-2WBSS-2falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-1-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX2MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-20WBSS-20falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-10-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX20MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-21WBSS-21falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-11-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX21MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-22WBSS-22falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-11-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX22MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-23WBSS-23falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-12-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX23MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-24WBSS-24falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-12-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX24MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-25WBSS-25falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-13-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX25MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-26WBSS-26falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-13-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX26MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-27WBSS-27falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-14-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX27MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-28WBSS-28falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-14-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX28MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-29WBSS-2911C_BAND192006250192206250ENABLED1C_BAND192006250192206250ENABLEDUPport-1-inport-1-inDROPDROPadmin9000100$1$uHrg99PA$.Lms1sWc8ZGuUX8T6PNQh0/var/confd/homes/admin/.ssh/var/confd/homes/adminoper9000100$1$9OJiF0bG$Myi9nICnK8rp2p9qSmBmH./var/confd/homes/oper/.ssh/var/confd/homes/operprivate9000100$1$PuXqqWlS$aShVgQv24iqb/MNYtMeAn//var/confd/homes/private/.ssh/var/confd/homes/privatepublic9000100$1$inij.yJ9$QUH0TnRHgwszY3T9THj6w1/var/confd/homes/public/.ssh/var/confd/homes/public0\h> 15\h# exec0actionautowizardenableexithelpstartup15configure7.8.31truestartedflex-scale-mg-on2024-04-25http://flex-scale-project.eu/yang/flex-scale-mg-onfsmgoniana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashianachiana-if-type2023-01-26urn:ietf:params:xml:ns:yang:iana-if-typeianaiftietf-datastores2018-02-14urn:ietf:params:xml:ns:yang:ietf-datastoresdsietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesinetietf-interfaces2018-02-20urn:ietf:params:xml:ns:yang:ietf-interfacesifietf-ip2018-02-22urn:ietf:params:xml:ns:yang:ietf-iptfipietf-netconf2011-06-01urn:ietf:params:xml:ns:netconf:base:1.0ncnetconfietf-netconf-acm2018-02-14urn:ietf:params:xml:ns:yang:ietf-netconf-acmnacmietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringncmietf-netconf-nmda2019-01-07urn:ietf:params:xml:ns:yang:ietf-netconf-nmdancdsnetconfietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsncnietf-netconf-partial-lock2009-10-19urn:ietf:params:xml:ns:netconf:partial-lock:1.0plietf-netconf-with-defaults2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsncwdnetconfietf-network-instance2019-01-21urn:ietf:params:xml:ns:yang:ietf-network-instancetfniietf-origin2018-02-14urn:ietf:params:xml:ns:yang:ietf-originorietf-restconf2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconfrcrestnetconfietf-restconf-monitoring2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconf-monitoringrcmonietf-subscribed-notifications2019-09-09urn:ietf:params:xml:ns:yang:ietf-subscribed-notificationssnnetconfietf-x509-cert-to-name2014-12-10urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-namex509c2nietf-yang-library2019-01-04urn:ietf:params:xml:ns:yang:ietf-yang-libraryyanglibnetconfrestietf-yang-metadata2016-08-05urn:ietf:params:xml:ns:yang:ietf-yang-metadatamdietf-yang-patch2017-02-22urn:ietf:params:xml:ns:yang:ietf-yang-patchypatchrestnetconfietf-yang-push2019-09-09urn:ietf:params:xml:ns:yang:ietf-yang-pushypnetconfietf-yang-schema-mount2019-01-14urn:ietf:params:xml:ns:yang:ietf-yang-schema-mountyangmntietf-yang-smiv22012-06-22urn:ietf:params:xml:ns:yang:ietf-yang-smiv2smiv2ietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesyangnetconf_netmodurn:ietf:params:xml:ns:netmod:notificationnmnetconfopenconfig-alarm-types2018-11-21http://openconfig.net/yang/alarms/typesoc-alarm-typesopenconfig-extensions2018-10-17http://openconfig.net/yang/openconfig-extoc-extopenconfig-if-ethernet2023-03-10http://openconfig.net/yang/interfaces/ethernetoc-ethopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipoc-ipopenconfig-if-types2018-11-21http://openconfig.net/yang/openconfig-if-typesoc-iftopenconfig-inet-types2019-04-25http://openconfig.net/yang/types/inetoc-inetopenconfig-interfaces2019-07-10http://openconfig.net/yang/interfacesoc-ifopenconfig-platform2022-12-20http://openconfig.net/yang/platformoc-platformopenconfig-platform-port2023-01-19http://openconfig.net/yang/platform/portoc-portopenconfig-platform-types2022-07-28http://openconfig.net/yang/platform-typesoc-platform-typesopenconfig-transport-types2023-02-08http://openconfig.net/yang/transport-typesoc-opt-typesopenconfig-types2019-04-16http://openconfig.net/yang/openconfig-typesoc-typesopenconfig-wavelength-router2021-07-26http://openconfig.net/yang/wavelength-routeroc-wave-routeropenconfig-yang-types2018-11-21http://openconfig.net/yang/types/yangoc-yangoptical-switch2020-01-10http://www.polatis.com/yang/optical-switchopswpolatis-switch2020-11-14http://www.polatis.com/yang/polatis-switchpltstailf-aaa2022-04-12http://tail-f.com/ns/aaa/1.1aaatailf-acm2013-03-07http://tail-f.com/yang/acmtacmtailf-common2022-04-12http://tail-f.com/yang/commontailftailf-common-monitoring2021-09-02http://tail-f.com/yang/common-monitoringtfcgtailf-common-query2017-12-15http://tail-f.com/ns/common/querytfcqtailf-confd-monitoring2021-09-09http://tail-f.com/yang/confd-monitoringtfcmtailf-confd-progress2020-06-29http://tail-f" -[2024-06-20 13:24:46,120] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:24:46,120] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:24:46,181] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:24:46,181] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:46,181] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:46,181] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=7 -[2024-06-20 13:24:46,181] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:46,181] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 6330 bytes -[2024-06-20 13:24:46,181] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:46,181] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:46,181] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:24:46,181] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:24:46,182] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 6341 bytes -[2024-06-20 13:24:46,182] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:46,182] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=7 -[2024-06-20 13:24:46,182] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:46,182] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 6330 bytes -[2024-06-20 13:24:46,182] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: appending 6330 bytes -[2024-06-20 13:24:46,182] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: fragment = ".com/ns/confd-progressconfd-progresstailf-kicker2020-11-26http://tail-f.com/ns/kickerkickertailf-last-login2019-11-21http://tail-f.com/yang/last-loginlasttailf-netconf-extensions2021-06-18http://tail-f.com/ns/netconf/extensionstfncenetconftailf-netconf-forwardhttp://tail-f.com/ns/netconf/forward/1.0fwdnetconftailf-netconf-inactivehttp://tail-f.com/ns/netconf/inactive/1.0innetconftailf-netconf-monitoring2022-04-12http://tail-f.com/yang/netconf-monitoringtncmtailf-netconf-query2017-01-06http://tail-f.com/ns/netconf/querytfncqnetconftailf-netconf-rollback2018-01-12http://tail-f.com/ns/netconf/rollbacknetconf-rollbacknetconftailf-netconf-transactionshttp://tail-f.com/ns/netconf/transactions/1.0trnetconftailf-netconf-with-rollback-id2020-06-25http://tail-f.com/ns/netconf/with-rollback-idwrbidnetconftailf-netconf-with-transaction-id2018-11-23http://tail-f.com/ns/netconf/with-transaction-idwtxidnetconftailf-progress2021-12-17http://tail-f.com/ns/progressprogresstailf-rollback2020-09-02http://tail-f.com/ns/rollbackrollbackrestnetconfmaapitailf-xsd-types2017-11-20http://tail-f.com/yang/xsd-typesxs0.0.0.020220.0.0.02024fiberscp0fsmgon_daemonnum_instancesremovecreateset_elemget_nextget_elemmediachannelscp0fsmgon_daemonnum_instancesremovecreateset_elemget_nextget_elemopticalbandscp0fsmgon_daemonnum_instancesremovecreateset_elemget_nextget_elemvp10fsmgon_daemonvp20fsmgon_daemonrunning1717-711274-208943./confd-cdb/A.cdb35577915504390false0falseoperational22./confd-cdb/O.cdb42100falseadmin2024-06-20T13:24:43.525796+00:009f9b9714842f10.30.2.208ncm:netconf-ssh02024-06-06T23:13:24.403301+00:009f9b9714842f10.30.2.206ncm:netconf-ssh02024-06-06T22:01:14.795227+00:009f9b9714842f127.0.0.1ncm:netconf-ssh00rollback010002admin2024-06-07 08:55:39netconf1rollback110001system2024-06-06 22:01:14system2rollback210000system2024-06-06 22:01:12system" -[2024-06-20 13:24:46,182] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 6337 bytes from start of buffer -[2024-06-20 13:24:46,182] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=4 -[2024-06-20 13:24:46,183] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found end of message delimiter -[2024-06-20 13:24:46,185] DEBUG:ncclient.operations.rpc:[host 172.17.254.22 session-id 21] Delivering to -[2024-06-20 13:24:46,185] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: saving back rest of message after 6341 bytes, original size 6341 -[2024-06-20 13:24:46,195] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -int-connection-91 -int-connection-92 -int-connection-93 -int-connection-94 -int-connection-95 -int-connection-96 -int-connection-97 -int-connection-98 -int-connection-99 -port-1-in -port-1-out -port-10-in -port-10-out -port-11-in -port-11-out -port-12-in -port-12-out -port-13-in -port-13-out -port-14-in -port-14-out -port-15-in -port-15-out -port-16-in -port-16-out -port-17-in -port-17-out -port-18-in -port-18-out -port-19-in -port-19-out -port-2-in -port-2-out -port-20-in -port-20-out -port-21-in -port-21-out -port-22-in -port-22-out -port-23-in -port-23-out -port-24-in -port-24-out -port-25-in -port-25-out -port-26-in -port-26-out -port-27-in -port-27-out -port-28-in -port-28-out -port-29-in -port-29-out -port-3-in -port-3-out -port-30-in -port-30-out -port-31-in -port-31-out -port-32-in -port-32-out -port-33-in -port-33-out -port-34-in -port-34-out -port-35-in -port-35-out -port-36-in -port-36-out -port-37-in -port-37-out -port-38-in -port-38-out -port-39-in -port-39-out -port-4-in -port-4-out -port-40-in -port-40-out -port-41-in -port-41-out -port-42-in -port-42-out -port-43-in -port-43-out -port-44-in -port-44-out -port-45-in -port-45-out -port-46-in -port-46-out -port-47-in -port-47-out -port-48-in -port-48-out -port-5-in -port-5-out -port-6-in -port-6-out -port-7-in -port-7-out -port-8-in -port-8-out -port-9-in -port-9-out -component [, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -WBSS-1 -WBSS-10 -WBSS-11 -WBSS-12 -WBSS-13 -WBSS-14 -WBSS-15 -WBSS-16 -WBSS-17 -WBSS-18 -WBSS-19 -WBSS-2 -WBSS-20 -WBSS-21 -WBSS-22 -WBSS-23 -WBSS-24 -WBSS-25 -WBSS-26 -WBSS-27 -WBSS-28 -WBSS-29 -WBSS-3 -WBSS-30 -WBSS-31 -WBSS-32 -WBSS-4 -WBSS-5 -WBSS-6 -WBSS-7 -WBSS-8 -WBSS-9 -WSS-1 -WSS-10 -WSS-11 -WSS-12 -WSS-2 -WSS-3 -WSS-4 -WSS-5 -WSS-6 -WSS-7 -WSS-8 -WSS-9 -int-connection-1 -int-connection-10 -int-connection-100 -int-connection-101 -int-connection-102 -int-connection-103 -int-connection-104 -int-connection-105 -int-connection-106 -int-connection-107 -int-connection-108 -int-connection-109 -int-connection-11 -int-connection-110 -int-connection-111 -int-connection-112 -int-connection-113 -int-connection-114 -int-connection-115 -int-connection-116 -int-connection-117 -int-connection-118 -int-connection-119 -int-connection-12 -int-connection-120 -int-connection-121 -int-connection-122 -int-connection-123 -int-connection-124 -int-connection-125 -int-connection-126 -int-connection-127 -int-connection-128 -int-connection-129 -int-connection-13 -int-connection-130 -int-connection-131 -int-connection-132 -int-connection-133 -int-connection-134 -int-connection-135 -int-connection-136 -int-connection-137 -int-connection-138 -int-connection-139 -int-connection-14 -int-connection-140 -int-connection-141 -int-connection-142 -int-connection-143 -int-connection-144 -int-connection-145 -int-connection-146 -int-connection-147 -int-connection-148 -int-connection-149 -int-connection-15 -int-connection-150 -int-connection-151 -int-connection-152 -int-connection-153 -int-connection-154 -int-connection-155 -int-connection-156 -int-connection-157 -int-connection-158 -int-connection-159 -int-connection-16 -int-connection-160 -int-connection-161 -int-connection-162 -int-connection-163 -int-connection-164 -int-connection-165 -int-connection-166 -int-connection-167 -int-connection-168 -int-connection-169 -int-connection-17 -int-connection-170 -int-connection-171 -int-connection-172 -int-connection-173 -int-connection-174 -int-connection-175 -int-connection-176 -int-connection-177 -int-connection-178 -int-connection-179 -int-connection-18 -int-connection-180 -int-connection-181 -int-connection-182 -int-connection-183 -int-connection-184 -int-connection-185 -int-connection-186 -int-connection-187 -int-connection-188 -int-connection-189 -int-connection-19 -int-connection-190 -int-connection-191 -int-connection-192 -int-connection-193 -int-connection-194 -int-connection-195 -int-connection-196 -int-connection-197 -int-connection-198 -int-connection-199 -int-connection-2 -int-connection-20 -int-connection-200 -int-connection-201 -int-connection-202 -int-connection-203 -int-connection-204 -int-connection-205 -int-connection-206 -int-connection-207 -int-connection-208 -int-connection-209 -int-connection-21 -int-connection-210 -int-connection-211 -int-connection-212 -int-connection-213 -int-connection-214 -int-connection-215 -int-connection-216 -int-connection-217 -int-connection-218 -int-connection-219 -int-connection-22 -int-connection-220 -int-connection-221 -int-connection-222 -int-connection-223 -int-connection-224 -int-connection-225 -int-connection-226 -int-connection-227 -int-connection-228 -int-connection-229 -int-connection-23 -int-connection-230 -int-connection-231 -int-connection-232 -int-connection-233 -int-connection-234 -int-connection-235 -int-connection-236 -int-connection-237 -int-connection-238 -int-connection-239 -int-connection-24 -int-connection-240 -int-connection-241 -int-connection-242 -int-connection-243 -int-connection-244 -int-connection-245 -int-connection-246 -int-connection-247 -int-connection-248 -int-connection-249 -int-connection-25 -int-connection-250 -int-connection-251 -int-connection-252 -int-connection-253 -int-connection-254 -int-connection-255 -int-connection-256 -int-connection-257 -int-connection-258 -int-connection-259 -int-connection-26 -int-connection-260 -int-connection-261 -int-connection-262 -int-connection-263 -int-connection-264 -int-connection-265 -int-connection-266 -int-connection-267 -int-connection-268 -int-connection-269 -int-connection-27 -int-connection-270 -int-connection-271 -int-connection-272 -int-connection-273 -int-connection-274 -int-connection-275 -int-connection-276 -int-connection-277 -int-connection-278 -int-connection-279 -int-connection-28 -int-connection-280 -int-connection-281 -int-connection-282 -int-connection-283 -int-connection-284 -int-connection-285 -int-connection-286 -int-connection-287 -int-connection-288 -int-connection-289 -int-connection-29 -int-connection-290 -int-connection-291 -int-connection-292 -int-connection-293 -int-connection-294 -int-connection-295 -int-connection-296 -int-connection-297 -int-connection-298 -int-connection-299 -int-connection-3 -int-connection-30 -int-connection-300 -int-connection-301 -int-connection-302 -int-connection-303 -int-connection-304 -int-connection-305 -int-connection-306 -int-connection-307 -int-connection-308 -int-connection-309 -int-connection-31 -int-connection-310 -int-connection-311 -int-connection-312 -int-connection-313 -int-connection-314 -int-connection-315 -int-connection-316 -int-connection-317 -int-connection-318 -int-connection-319 -int-connection-32 -int-connection-320 -int-connection-321 -int-connection-322 -int-connection-323 -int-connection-324 -int-connection-325 -int-connection-326 -int-connection-327 -int-connection-328 -int-connection-329 -int-connection-33 -int-connection-330 -int-connection-331 -int-connection-332 -int-connection-333 -int-connection-334 -int-connection-335 -int-connection-336 -int-connection-337 -int-connection-338 -int-connection-339 -int-connection-34 -int-connection-340 -int-connection-341 -int-connection-342 -int-connection-343 -int-connection-344 -int-connection-345 -int-connection-346 -int-connection-347 -int-connection-348 -int-connection-349 -int-connection-35 -int-connection-350 -int-connection-351 -int-connection-352 -int-connection-353 -int-connection-354 -int-connection-355 -int-connection-356 -int-connection-357 -int-connection-358 -int-connection-359 -int-connection-36 -int-connection-360 -int-connection-361 -int-connection-362 -int-connection-363 -int-connection-364 -int-connection-365 -int-connection-366 -int-connection-367 -int-connection-368 -int-connection-369 -int-connection-37 -int-connection-370 -int-connection-371 -int-connection-372 -int-connection-373 -int-connection-374 -int-connection-375 -int-connection-376 -int-connection-377 -int-connection-378 -int-connection-379 -int-connection-38 -int-connection-380 -int-connection-381 -int-connection-382 -int-connection-383 -int-connection-384 -int-connection-385 -int-connection-386 -int-connection-387 -int-connection-388 -int-connection-389 -int-connection-39 -int-connection-390 -int-connection-391 -int-connection-392 -int-connection-393 -int-connection-394 -int-connection-395 -int-connection-396 -int-connection-397 -int-connection-398 -int-connection-399 -int-connection-4 -int-connection-40 -int-connection-400 -int-connection-401 -int-connection-402 -int-connection-403 -int-connection-404 -int-connection-405 -int-connection-406 -int-connection-407 -int-connection-408 -int-connection-409 -int-connection-41 -int-connection-410 -int-connection-411 -int-connection-412 -int-connection-413 -int-connection-414 -int-connection-415 -int-connection-416 -int-connection-417 -int-connection-418 -int-connection-419 -int-connection-42 -int-connection-420 -int-connection-421 -int-connection-422 -int-connection-423 -int-connection-424 -int-connection-425 -int-connection-426 -int-connection-427 -int-connection-428 -int-connection-43 -int-connection-44 -int-connection-45 -int-connection-46 -int-connection-47 -int-connection-48 -int-connection-49 -int-connection-5 -int-connection-50 -int-connection-51 -int-connection-52 -int-connection-53 -int-connection-54 -int-connection-55 -int-connection-56 -int-connection-57 -int-connection-58 -int-connection-59 -int-connection-6 -int-connection-60 -int-connection-61 -int-connection-62 -int-connection-63 -int-connection-64 -int-connection-65 -int-connection-66 -int-connection-67 -int-connection-68 -int-connection-69 -int-connection-7 -int-connection-70 -int-connection-71 -int-connection-72 -int-connection-73 -int-connection-74 -int-connection-75 -int-connection-76 -int-connection-77 -int-connection-78 -int-connection-79 -int-connection-8 -int-connection-80 -int-connection-81 -int-connection-82 -int-connection-83 -int-connection-84 -int-connection-85 -int-connection-86 -int-connection-87 -int-connection-88 -int-connection-89 -int-connection-9 -int-connection-90 -[2024-06-20 13:24:46,300] INFO:root:parameters {} -[2024-06-20 13:24:46,302] DEBUG:context.client.ContextClient:SetOpticalConfig request: {"config": "{}", "device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}} -[2024-06-20 13:24:46,330] DEBUG:context.client.ContextClient:SetOpticalConfig result: {"opticalconfig_uuid": ""} -[2024-06-20 13:24:46,331] DEBUG:device.service.Tools:results_getconfig = [('/endpoints/endpoint[port-1-in]', {'uuid': 'port-1-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-10-in]', {'uuid': 'port-10-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-11-in]', {'uuid': 'port-11-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-12-in]', {'uuid': 'port-12-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-13-in]', {'uuid': 'port-13-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-14-in]', {'uuid': 'port-14-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-15-in]', {'uuid': 'port-15-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-16-in]', {'uuid': 'port-16-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-2-in]', {'uuid': 'port-2-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-3-in]', {'uuid': 'port-3-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-4-in]', {'uuid': 'port-4-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-5-in]', {'uuid': 'port-5-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-6-in]', {'uuid': 'port-6-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-7-in]', {'uuid': 'port-7-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-8-in]', {'uuid': 'port-8-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-9-in]', {'uuid': 'port-9-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-1-out]', {'uuid': 'port-1-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-10-out]', {'uuid': 'port-10-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-11-out]', {'uuid': 'port-11-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-12-out]', {'uuid': 'port-12-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-13-out]', {'uuid': 'port-13-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-14-out]', {'uuid': 'port-14-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-15-out]', {'uuid': 'port-15-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-16-out]', {'uuid': 'port-16-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-2-out]', {'uuid': 'port-2-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-3-out]', {'uuid': 'port-3-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-4-out]', {'uuid': 'port-4-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-5-out]', {'uuid': 'port-5-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-6-out]', {'uuid': 'port-6-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-7-out]', {'uuid': 'port-7-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-8-out]', {'uuid': 'port-8-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-9-out]', {'uuid': 'port-9-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-33-in]', {'uuid': 'port-33-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-34-in]', {'uuid': 'port-34-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-35-in]', {'uuid': 'port-35-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-36-in]', {'uuid': 'port-36-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-37-in]', {'uuid': 'port-37-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-38-in]', {'uuid': 'port-38-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-39-in]', {'uuid': 'port-39-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-40-in]', {'uuid': 'port-40-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-41-in]', {'uuid': 'port-41-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-42-in]', {'uuid': 'port-42-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-43-in]', {'uuid': 'port-43-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-44-in]', {'uuid': 'port-44-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-45-in]', {'uuid': 'port-45-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-46-in]', {'uuid': 'port-46-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-47-in]', {'uuid': 'port-47-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-48-in]', {'uuid': 'port-48-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-33-out]', {'uuid': 'port-33-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-34-out]', {'uuid': 'port-34-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-35-out]', {'uuid': 'port-35-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-36-out]', {'uuid': 'port-36-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-37-out]', {'uuid': 'port-37-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-38-out]', {'uuid': 'port-38-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-39-out]', {'uuid': 'port-39-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-40-out]', {'uuid': 'port-40-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-41-out]', {'uuid': 'port-41-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-42-out]', {'uuid': 'port-42-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-43-out]', {'uuid': 'port-43-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-44-out]', {'uuid': 'port-44-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-45-out]', {'uuid': 'port-45-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-46-out]', {'uuid': 'port-46-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-47-out]', {'uuid': 'port-47-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-48-out]', {'uuid': 'port-48-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'})] -[2024-06-20 13:24:46,331] INFO:device.service.Tools:results_getconfig = [('/endpoints/endpoint[port-1-in]', {'uuid': 'port-1-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-10-in]', {'uuid': 'port-10-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-11-in]', {'uuid': 'port-11-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-12-in]', {'uuid': 'port-12-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-13-in]', {'uuid': 'port-13-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-14-in]', {'uuid': 'port-14-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-15-in]', {'uuid': 'port-15-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-16-in]', {'uuid': 'port-16-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-2-in]', {'uuid': 'port-2-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-3-in]', {'uuid': 'port-3-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-4-in]', {'uuid': 'port-4-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-5-in]', {'uuid': 'port-5-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-6-in]', {'uuid': 'port-6-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-7-in]', {'uuid': 'port-7-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-8-in]', {'uuid': 'port-8-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-9-in]', {'uuid': 'port-9-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_INPUT'}), ('/endpoints/endpoint[port-1-out]', {'uuid': 'port-1-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-10-out]', {'uuid': 'port-10-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-11-out]', {'uuid': 'port-11-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-12-out]', {'uuid': 'port-12-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-13-out]', {'uuid': 'port-13-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-14-out]', {'uuid': 'port-14-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-15-out]', {'uuid': 'port-15-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-16-out]', {'uuid': 'port-16-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-2-out]', {'uuid': 'port-2-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-3-out]', {'uuid': 'port-3-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-4-out]', {'uuid': 'port-4-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-5-out]', {'uuid': 'port-5-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-6-out]', {'uuid': 'port-6-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-7-out]', {'uuid': 'port-7-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-8-out]', {'uuid': 'port-8-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-9-out]', {'uuid': 'port-9-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT'}), ('/endpoints/endpoint[port-33-in]', {'uuid': 'port-33-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-34-in]', {'uuid': 'port-34-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-35-in]', {'uuid': 'port-35-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-36-in]', {'uuid': 'port-36-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-37-in]', {'uuid': 'port-37-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-38-in]', {'uuid': 'port-38-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-39-in]', {'uuid': 'port-39-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-40-in]', {'uuid': 'port-40-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-41-in]', {'uuid': 'port-41-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-42-in]', {'uuid': 'port-42-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-43-in]', {'uuid': 'port-43-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-44-in]', {'uuid': 'port-44-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-45-in]', {'uuid': 'port-45-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-46-in]', {'uuid': 'port-46-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-47-in]', {'uuid': 'port-47-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-48-in]', {'uuid': 'port-48-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT'}), ('/endpoints/endpoint[port-33-out]', {'uuid': 'port-33-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-34-out]', {'uuid': 'port-34-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-35-out]', {'uuid': 'port-35-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-36-out]', {'uuid': 'port-36-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-37-out]', {'uuid': 'port-37-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-38-out]', {'uuid': 'port-38-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-39-out]', {'uuid': 'port-39-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-40-out]', {'uuid': 'port-40-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-41-out]', {'uuid': 'port-41-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-42-out]', {'uuid': 'port-42-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-43-out]', {'uuid': 'port-43-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-44-out]', {'uuid': 'port-44-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-45-out]', {'uuid': 'port-45-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-46-out]', {'uuid': 'port-46-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-47-out]', {'uuid': 'port-47-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'}), ('/endpoints/endpoint[port-48-out]', {'uuid': 'port-48-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT'})] -[2024-06-20 13:24:46,333] INFO:ncclient.operations.rpc:[host 172.17.254.22 session-id 21] Requesting 'Get' -[2024-06-20 13:24:46,333] DEBUG:ncclient.operations.rpc:[host 172.17.254.22 session-id 21] Sync request, will wait for timeout=120 -[2024-06-20 13:24:46,452] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:24:46,452] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:46,452] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:46,452] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:46,452] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:46,452] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:46,452] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:46,452] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:46,453] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:24:46,453] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:24:46,453] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:46,453] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:46,453] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:46,453] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:46,453] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:46,453] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:46,453] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:46,453] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:24:46,453] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:24:46,454] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:46,454] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:46,454] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:46,454] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:46,454] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:46,454] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:46,454] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:46,454] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:24:46,454] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:24:46,454] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:46,454] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:46,454] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:46,455] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:46,455] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:46,455] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: appending 16376 bytes -[2024-06-20 13:24:46,455] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: fragment = " -commonflex-scale-mg-on2024-04-25http://flex-scale-project.eu/yang/flex-scale-mg-oniana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashcrypt-hash-md5crypt-hash-sha-256crypt-hash-sha-512ietf-interfaces2018-02-20urn:ietf:params:xml:ns:yang:ietf-interfacesarbitrary-namesif-mibpre-provisioningietf-netconf2011-06-01urn:ietf:params:xml:ns:netconf:base:1.0rollback-on-errorvalidatewritable-runningxpathietf-netconf-acm2018-02-14urn:ietf:params:xml:ns:yang:ietf-netconf-acmietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringietf-netconf-nmda2019-01-07urn:ietf:params:xml:ns:yang:ietf-netconf-nmdawith-defaultsietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsietf-netconf-partial-lock2009-10-19urn:ietf:params:xml:ns:netconf:partial-lock:1.0ietf-netconf-with-defaults2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsietf-restconf2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconfietf-restconf-monitoring2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconf-monitoringietf-subscribed-notifications2019-09-09urn:ietf:params:xml:ns:yang:ietf-subscribed-notificationsencode-xmlreplaysubtreexpathietf-subscribed-notifications-deviationietf-yang-library2019-01-04urn:ietf:params:xml:ns:yang:ietf-yang-libraryietf-yang-patch2017-02-22urn:ietf:params:xml:ns:yang:ietf-yang-patchietf-yang-push2019-09-09urn:ietf:params:xml:ns:yang:ietf-yang-pushon-changeietf-yang-push-deviationietf-yang-schema-mount2019-01-14urn:ietf:params:xml:ns:yang:ietf-yang-schema-mountopenconfig-if-ethernet2023-03-10http://openconfig.net/yang/interfaces/ethernetopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipopenconfig-interfaces2019-07-10http://openconfig.net/yang/interfacesopenconfig-platform2022-12-20http://openconfig.net/yang/platformopenconfig-platform-common2022-12-20openconfig-platform-port2023-01-19http://openconfig.net/yang/platform/portopenconfig-wavelength-router2021-07-26http://openconfig.net/yang/wavelength-routeroptical-switch2020-01-10http://www.polatis.com/yang/optical-switchpolatis-switch2020-11-14http://www.polatis.com/yang/polatis-switchtailf-aaa2022-04-12http://tail-f.com/ns/aaa/1.1tailf-acm2013-03-07http://tail-f.com/yang/acmtailf-confd-monitoring2021-09-09http://tail-f.com/yang/confd-monitoringtailf-confd-progress2020-06-29http://tail-f.com/ns/confd-progresstailf-kicker2020-11-26http://tail-f.com/ns/kickertailf-last-login2019-11-21http://tail-f.com/yang/last-logintailf-netconf-extensions2021-06-18http://tail-f.com/ns/netconf/extensionstailf-netconf-monitoring2022-04-12http://tail-f.com/yang/netconf-monitoringtailf-netconf-query2017-01-06http://tail-f.com/ns/netconf/querytailf-netconf-rollback2018-01-12http://tail-f.com/ns/netconf/rollbacktailf-netconf-transactionshttp://tail-f.com/ns/netconf/transactions/1.0tailf-netconf-with-rollback-id2020-06-25http://tail-f.com/ns/netconf/with-rollback-idtailf-netconf-with-transaction-id2018-11-23http://tail-f.com/ns/netconf/with-transaction-idtailf-progress2021-12-17http://tail-f.com/ns/progresstailf-rollback2020-09-02http://tail-f.com/ns/rollbackiana-if-type2023-01-26urn:ietf:params:xml:ns:yang:iana-if-typeietf-datastores2018-02-14urn:ietf:params:xml:ns:yang:ietf-datastoresietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesietf-ip2018-02-22urn:ietf:params:xml:ns:yang:ietf-ipietf-network-instance2019-01-21urn:ietf:params:xml:ns:yang:ietf-network-instanceietf-origin2018-02-14urn:ietf:params:xml:ns:yang:ietf-originietf-x509-cert-to-name2014-12-10urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-nameietf-yang-metadata2016-08-05urn:ietf:params:xml:ns:yang:ietf-yang-metadataietf-yang-smiv22012-06-22urn:ietf:params:xml:ns:yang:ietf-yang-smiv2ietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesopenconfig-alarm-types2018-11-21http://openconfig.net/yang/alarms/typesopenconfig-extensions2018-10-17http://openconfig.net/yang/openconfig-extopenconfig-if-types2018-11-21http://openconfig.net/yang/openconfig-if-typesopenconfig-inet-types2019-04-25http://openconfig.net/yang/types/inetopenconfig-platform-types2022-07-28http://openconfig.net/yang/platform-typesopenconfig-transport-types2023-02-08http://openconfig.net/yang/transport-typesopenconfig-types2019-04-16http://openconfig.net/yang/openconfig-typesopenconfig-yang-types2018-11-21http://openconfig.net/yang/types/yangtailf-common2022-04-12http://tail-f.com/yang/commontailf-cli-extensions2021-12-17tailf-meta-extensions2017-03-08tailf-common-monitoring2021-09-02http://tail-f.com/yang/common-monitoringtailf-common-query2017-12-15http://tail-f.com/ns/common/querytailf-netconf-forwardhttp://tail-f.com/ns/netconf/forward/1.0tailf-netconf-inactivehttp://tail-f.com/ns/netconf/inactive/1.0tailf-xsd-types2017-11-20http://tail-f.com/yang/xsd-typescommoncommonds:runningcommonds:intendedcommonds:operationalcommonc12b960e969b26974084d2b999572983c12b960e969b26974084d2b999572983flex-scale-mg-on2024-04-25http://flex-scale-project.eu/yang/flex-scale-mg-onimplementiana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashcrypt-hash-md5crypt-hash-sha-256crypt-hash-sha-512implementiana-if-type2023-01-26urn:ietf:params:xml:ns:yang:iana-if-typeimportietf-datastores2018-02-14urn:ietf:params:xml:ns:yang:ietf-datastoresimportietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesimportietf-interfaces2018-02-20urn:ietf:params:xml:ns:yang:ietf-interfacesarbitrary-namesif-mibpre-provisioningimplementietf-ip2018-02-22urn:ietf:params:xml:ns:yang:ietf-ipipv4-non-contiguous-netmasksipv6-privacy-autoconfimportietf-netconf2011-06-01urn:ietf:params:xml:ns:netconf:base:1.0rollback-on-errorvalidatewritable-runningxpathimplementietf-netconf-acm2018-02-14urn:ietf:params:xml:ns:yang:ietf-netconf-acmimplementietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringimplementietf-netconf-nmda2019-01-07urn:ietf:params:xml:ns:yang:ietf-netconf-nmdawith-defaultsimplementietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsimplementietf-netconf-partial-lock2009-10-19urn:ietf:params:xml:ns:netconf:partial-lock:1.0implementietf-netconf-with-defaults2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsimplementietf-network-instance2019-01-21urn:ietf:params:xml:ns:yang:ietf-network-instanceimportietf-origin2018-02-14urn:ietf:params:xml:ns:yang:ietf-originimportietf-restconf2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconfimplementietf-restconf-monitoring2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconf-monitoringimplementietf-subscribed-notifications2019-09-09urn:ietf:params:xml:ns:yang:ietf-subscribed-notificationsencode-xmlreplaysubtreexpathietf-subscribed-notifications-deviation2020-06-25implementietf-x509-cert-to-name2014-12-10urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-nameimportietf-yang-library2019-01-04urn:ietf:params:xml:ns:yang:ietf-yang-libraryimplementietf-yang-metadata2016-08-05urn:ietf:pa" -[2024-06-20 13:24:46,455] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:24:46,455] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:24:46,502] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:24:46,503] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:46,503] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:46,503] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:46,503] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:46,503] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:46,503] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:46,504] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:46,504] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:24:46,504] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:24:46,504] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:46,504] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:46,504] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:46,504] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:46,504] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:46,504] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:46,504] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:46,505] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:24:46,505] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:24:46,505] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:46,505] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:46,505] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:46,505] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:46,505] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:46,505] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:46,505] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:46,505] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:24:46,506] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:24:46,506] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:46,506] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:46,506] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:46,506] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:46,506] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:46,506] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: appending 16376 bytes -[2024-06-20 13:24:46,506] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: fragment = "rams:xml:ns:yang:ietf-yang-metadataimportietf-yang-patch2017-02-22urn:ietf:params:xml:ns:yang:ietf-yang-patchimplementietf-yang-push2019-09-09urn:ietf:params:xml:ns:yang:ietf-yang-pushon-changeietf-yang-push-deviationimplementietf-yang-schema-mount2019-01-14urn:ietf:params:xml:ns:yang:ietf-yang-schema-mountimplementietf-yang-smiv22012-06-22urn:ietf:params:xml:ns:yang:ietf-yang-smiv2importietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesimportopenconfig-alarm-types2018-11-21http://openconfig.net/yang/alarms/typesimportopenconfig-extensions2018-10-17http://openconfig.net/yang/openconfig-extimportopenconfig-if-ethernet2023-03-10http://openconfig.net/yang/interfaces/ethernetimplementopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipimplementopenconfig-if-types2018-11-21http://openconfig.net/yang/openconfig-if-typesimportopenconfig-inet-types2019-04-25http://openconfig.net/yang/types/inetimportopenconfig-interfaces2019-07-10http://openconfig.net/yang/interfacesimplementopenconfig-platform2022-12-20http://openconfig.net/yang/platformimplementopenconfig-platform-common2022-12-20openconfig-platform-port2023-01-19http://openconfig.net/yang/platform/portimplementopenconfig-platform-types2022-07-28http://openconfig.net/yang/platform-typesimportopenconfig-transport-types2023-02-08http://openconfig.net/yang/transport-typesimportopenconfig-types2019-04-16http://openconfig.net/yang/openconfig-typesimportopenconfig-wavelength-router2021-07-26http://openconfig.net/yang/wavelength-routerimplementopenconfig-yang-types2018-11-21http://openconfig.net/yang/types/yangimportoptical-switch2020-01-10http://www.polatis.com/yang/optical-switchimplementpolatis-switch2020-11-14http://www.polatis.com/yang/polatis-switchimplementtailf-aaa2022-04-12http://tail-f.com/ns/aaa/1.1implementtailf-acm2013-03-07http://tail-f.com/yang/acmimplementtailf-common2022-04-12http://tail-f.com/yang/commonimporttailf-cli-extensions2021-12-17tailf-meta-extensions2017-03-08tailf-common-monitoring2021-09-02http://tail-f.com/yang/common-monitoringimporttailf-common-query2017-12-15http://tail-f.com/ns/common/queryimporttailf-confd-monitoring2021-09-09http://tail-f.com/yang/confd-monitoringimplementtailf-confd-progress2020-06-29http://tail-f.com/ns/confd-progressimplementtailf-kicker2020-11-26http://tail-f.com/ns/kickerimplementtailf-last-login2019-11-21http://tail-f.com/yang/last-loginimplementtailf-netconf-extensions2021-06-18http://tail-f.com/ns/netconf/extensionsimplementtailf-netconf-forwardhttp://tail-f.com/ns/netconf/forward/1.0importtailf-netconf-inactivehttp://tail-f.com/ns/netconf/inactive/1.0importtailf-netconf-monitoring2022-04-12http://tail-f.com/yang/netconf-monitoringimplementtailf-netconf-query2017-01-06http://tail-f.com/ns/netconf/queryimplementtailf-netconf-rollback2018-01-12http://tail-f.com/ns/netconf/rollbackimplementtailf-netconf-transactionshttp://tail-f.com/ns/netconf/transactions/1.0implementtailf-netconf-with-rollback-id2020-06-25http://tail-f.com/ns/netconf/with-rollback-idimplementtailf-netconf-with-transaction-id2018-11-23http://tail-f.com/ns/netconf/with-transaction-idimplementtailf-progress2021-12-17http://tail-f.com/ns/progressimplementtailf-rollback2020-09-02http://tail-f.com/ns/rollbackimplementtailf-xsd-types2017-11-20http://tail-f.com/yang/xsd-typesimportpermit000adminadminprivateoperoperpublicadminadminany-accesspermitany-group*tailf-aaa-authenticationtailf-aaa/aaa/authentication/users/user[name='$USER']read updatepermittailf-aaa-usertailf-aaa/user[name='$USER']create read update deletepermittailf-webui-usertailf-webui/webui/data-stores/user-profile[username='$USER']create read update deletepermiturn:ietf:params:netconf:base:1.0urn:ietf:params:netconf:base:1.1urn:ietf:params:netconf:capability:writable-running:1.0urn:ietf:params:netconf:capability:rollback-on-error:1.0urn:ietf:params:netconf:capability:validate:1.0urn:ietf:params:netconf:capability:validate:1.1urn:ietf:params:netconf:capability:xpath:1.0urn:ietf:params:netconf:capability:partial-lock:1.0urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all-tagged,report-allurn:ietf:params:netconf:capability:with-operational-defaults:1.0?basic-mode=explicit&also-supported=report-all-tagged,report-allurn:ietf:params:netconf:capability:yang-library:1.0?revision=2019-01-04&module-set-id=c12b960e969b26974084d2b999572983urn:ietf:params:netconf:capability:yang-library:1.1?revision=2019-01-04&content-id=c12b960e969b26974084d2b999572983http://tail-f.com/ns/netconf/actions/1.0http://flex-scale-project.eu/yang/flex-scale-mg-on?module=flex-scale-mg-on&revision=2024-04-25http://openconfig.net/yang/alarms/types?module=openconfig-alarm-types&revision=2018-11-21http://openconfig.net/yang/interfaces?module=openconfig-interfaces&revision=2019-07-10http://openconfig.net/yang/interfaces/ethernet?module=openconfig-if-ethernet&revision=2023-03-10http://openconfig.net/yang/interfaces/ip?module=openconfig-if-ip&revision=2019-01-08http://openconfig.net/yang/openconfig-ext?module=openconfig-extensions&revision=2018-10-17http://openconfig.net/yang/openconfig-if-types?module=openconfig-if-types&revision=2018-11-21http://openconfig.net/yang/openconfig-types?module=openconfig-types&revision=2019-04-16http://openconfig.net/yang/platform?module=openconfig-platform&revision=2022-12-20http://openconfig.net/yang/platform-types?module=openconfig-platform-types&revision=2022-07-28http://openconfig.net/yang/platform/port?module=openconfig-platform-port&revision=2023-01-19http://openconfig.net/yang/transport-types?module=openconfig-transport-types&revision=2023-02-08http://openconfig.net/yang/types/inet?module=openconfig-inet-types&revision=2019-04-25http://openconfig.net/yang/types/yang?module=openconfig-yang-types&revision=2018-11-21http://openconfig.net/yang/wavelength-router?module=openconfig-wavelength-router&revision=2021-07-26http://tail-f.com/ns/aaa/1.1?module=tailf-aaa&revision=2022-04-12http://tail-f.com/ns/common/query?module=tailf-common-query&revision=2017-12-15http://tail-f.com/ns/confd-progress?module=tailf-confd-progress&revision=2020-06-29http://tail-f.com/ns/kicker?module=tailf-kicker&revision=2020-11-26http://tail-f.com/ns/netconf/query?module=tailf-netconf-query&revision=2017-01-06http://tail-f.com/yang/acm?module=tailf-acm&revision=2013-03-07http://tail-f.com/yang/common?module=tailf-common&revision=2022-04-12http://tail-f.com/yang/common-monitoring?module=tailf-common-monitoring&revision=2021-09-02http://tail-f.com/yang/confd-monitoring?module=tailf-confd-monitoring&revision=2021-09-09http://tail-f.com/yang/last-login?module=tailf-last-login&revision=2019-11-21http://tail-f.com/yang/netconf-monitoring?module=tailf-netconf-monitoring&revision=2022-04-12http://tail-f.com/yang/xsd-types?module=tailf-xsd-types&revision=2017-11-20http://www.polatis.com/yang/optical-switch?module=optical-switch&revision=2020-01-10http://www.polatis.com/yang/polatis-switch?module=polatis-switch&revision=2020-11-14urn:ietf:params:xml:ns:netconf:base:1.0?module=ietf-netconf&revision=2011-06-01&features=writable-running,rollback-on-error,validate,xpathurn:ietf:params:xml:ns:netconf:partial-lock:1.0?module=ietf-netconf-partial-lock&revision=2009-10-19urn:ietf:params:xml:ns:yang:iana-crypt-hash?module=iana-crypt-hash&revision=2014-08-06&features=crypt-hash-sha-512,crypt-hash-sha-256,crypt-hash-md5urn:ietf:params:xml:ns:yang:iana-if-type?module=iana-if-type&revision=2023-01-26urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&revision=2013-07-15urn:ietf:params:xml:ns:yang:ietf-netconf-acm?module=ietf-netconf-acm&revision=2018-02-14urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&revision=2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-notifications?module=ietf-netconf-notifications&revision=2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?module=ietf-netconf-with-defaults&revision=2011-06-01urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?module=ietf-restconf-monitoring&revision=2017-01-26urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name?module=ietf-x509-cert-to-name&revision=2014-12-10urn:ietf:params:xml:ns:yang:ietf-yang-metadata?module=ietf-yang-metadata&revision=2016-08-05urn:ietf:params:xml:ns:yang:ietf-yang-smiv2?module=ietf-yang-smiv2&revision=2012-06-22urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&revision=2013-07-15running1717-711274-208943validflex-scale-mg-on2024-04-25yang23runningread2024-06-06T22:01:10+00:000328000WBSS-1WBSS-1falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-1-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX1MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-10WBSS-10falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-5-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX10MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-11WBSS-11falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON" -[2024-06-20 13:24:46,569] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:24:46,569] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:24:46,637] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:24:46,637] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:46,637] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:46,638] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:46,638] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:46,638] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:46,638] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:46,638] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:46,638] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:24:46,639] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:24:46,639] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:24:46,639] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:46,639] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:46,639] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:46,639] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:46,640] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:46,640] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:46,640] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:24:46,640] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:24:46,640] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:24:46,641] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:46,641] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:46,641] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:46,641] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:46,642] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:46,642] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:46,642] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:24:46,642] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:24:46,643] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:24:46,643] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:46,643] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:24:46,644] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:46,644] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:24:46,644] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: appending 16376 bytes -[2024-06-20 13:24:46,644] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: fragment = "_PORTport-6-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX11MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-12WBSS-12falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-6-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX12MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-13WBSS-13falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-7-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX13MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-14WBSS-14falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-7-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX14MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-15WBSS-15falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-8-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX15MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-16WBSS-16falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-8-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX16MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-17WBSS-17falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-9-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX17MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-18WBSS-18falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-9-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX18MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-19WBSS-19falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-10-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX19MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-2WBSS-2falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-1-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX2MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-20WBSS-20falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-10-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX20MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-21WBSS-21falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-11-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX21MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-22WBSS-22falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-11-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX22MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-23WBSS-23falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-12-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX23MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-24WBSS-24falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-12-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX24MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-25WBSS-25falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-13-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX25MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-26WBSS-26falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-13-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX26MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-27WBSS-27falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-14-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX27MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-28WBSS-28falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-14-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX28MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-29WBSS-2911C_BAND192006250192206250ENABLED1C_BAND192006250192206250ENABLEDUPport-1-inport-1-inDROPDROPadmin9000100$1$uHrg99PA$.Lms1sWc8ZGuUX8T6PNQh0/var/confd/homes/admin/.ssh/var/confd/homes/adminoper9000100$1$9OJiF0bG$Myi9nICnK8rp2p9qSmBmH./var/confd/homes/oper/.ssh/var/confd/homes/operprivate9000100$1$PuXqqWlS$aShVgQv24iqb/MNYtMeAn//var/confd/homes/private/.ssh/var/confd/homes/privatepublic9000100$1$inij.yJ9$QUH0TnRHgwszY3T9THj6w1/var/confd/homes/public/.ssh/var/confd/homes/public0\h> 15\h# exec0actionautowizardenableexithelpstartup15configure7.8.31truestartedflex-scale-mg-on2024-04-25http://flex-scale-project.eu/yang/flex-scale-mg-onfsmgoniana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashianachiana-if-type2023-01-26urn:ietf:params:xml:ns:yang:iana-if-typeianaiftietf-datastores2018-02-14urn:ietf:params:xml:ns:yang:ietf-datastoresdsietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesinetietf-interfaces2018-02-20urn:ietf:params:xml:ns:yang:ietf-interfacesifietf-ip2018-02-22urn:ietf:params:xml:ns:yang:ietf-iptfipietf-netconf2011-06-01urn:ietf:params:xml:ns:netconf:base:1.0ncnetconfietf-netconf-acm2018-02-14urn:ietf:params:xml:ns:yang:ietf-netconf-acmnacmietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringncmietf-netconf-nmda2019-01-07urn:ietf:params:xml:ns:yang:ietf-netconf-nmdancdsnetconfietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsncnietf-netconf-partial-lock2009-10-19urn:ietf:params:xml:ns:netconf:partial-lock:1.0plietf-netconf-with-defaults2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsncwdnetconfietf-network-instance2019-01-21urn:ietf:params:xml:ns:yang:ietf-network-instancetfniietf-origin2018-02-14urn:ietf:params:xml:ns:yang:ietf-originorietf-restconf2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconfrcrestnetconfietf-restconf-monitoring2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconf-monitoringrcmonietf-subscribed-notifications2019-09-09urn:ietf:params:xml:ns:yang:ietf-subscribed-notificationssnnetconfietf-x509-cert-to-name2014-12-10urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-namex509c2nietf-yang-library2019-01-04urn:ietf:params:xml:ns:yang:ietf-yang-libraryyanglibnetconfrestietf-yang-metadata2016-08-05urn:ietf:params:xml:ns:yang:ietf-yang-metadatamdietf-yang-patch2017-02-22urn:ietf:params:xml:ns:yang:ietf-yang-patchypatchrestnetconfietf-yang-push2019-09-09urn:ietf:params:xml:ns:yang:ietf-yang-pushypnetconfietf-yang-schema-mount2019-01-14urn:ietf:params:xml:ns:yang:ietf-yang-schema-mountyangmntietf-yang-smiv22012-06-22urn:ietf:params:xml:ns:yang:ietf-yang-smiv2smiv2ietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesyangnetconf_netmodurn:ietf:params:xml:ns:netmod:notificationnmnetconfopenconfig-alarm-types2018-11-21http://openconfig.net/yang/alarms/typesoc-alarm-typesopenconfig-extensions2018-10-17http://openconfig.net/yang/openconfig-extoc-extopenconfig-if-ethernet2023-03-10http://openconfig.net/yang/interfaces/ethernetoc-ethopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipoc-ipopenconfig-if-types2018-11-21http://openconfig.net/yang/openconfig-if-typesoc-iftopenconfig-inet-types2019-04-25http://openconfig.net/yang/types/inetoc-inetopenconfig-interfaces2019-07-10http://openconfig.net/yang/interfacesoc-ifopenconfig-platform2022-12-20http://openconfig.net/yang/platformoc-platformopenconfig-platform-port2023-01-19http://openconfig.net/yang/platform/portoc-portopenconfig-platform-types2022-07-28http://openconfig.net/yang/platform-typesoc-platform-typesopenconfig-transport-types2023-02-08http://openconfig.net/yang/transport-typesoc-opt-typesopenconfig-types2019-04-16http://openconfig.net/yang/openconfig-typesoc-typesopenconfig-wavelength-router2021-07-26http://openconfig.net/yang/wavelength-routeroc-wave-routeropenconfig-yang-types2018-11-21http://openconfig.net/yang/types/yangoc-yangoptical-switch2020-01-10http://www.polatis.com/yang/optical-switchopswpolatis-switch2020-11-14http://www.polatis.com/yang/polatis-switchpltstailf-aaa2022-04-12http://tail-f.com/ns/aaa/1.1aaatailf-acm2013-03-07http://tail-f.com/yang/acmtacmtailf-common2022-04-12http://tail-f.com/yang/commontailftailf-common-monitoring2021-09-02http://tail-f.com/yang/common-monitoringtfcgtailf-common-query2017-12-15http://tail-f.com/ns/common/querytfcqtailf-confd-monitoring2021-09-09http://tail-f.com/yang/confd-monitoringtfcmtailf-confd-progress2020-06-29http://tail-f" -[2024-06-20 13:24:49,087] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:24:49,087] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:24:49,169] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:24:49,169] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:24:49,169] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:49,169] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=7 -[2024-06-20 13:24:49,170] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:49,170] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 6330 bytes -[2024-06-20 13:24:49,170] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:24:49,170] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:24:49,170] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:24:49,170] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:24:49,170] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 6341 bytes -[2024-06-20 13:24:49,171] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:24:49,171] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=7 -[2024-06-20 13:24:49,171] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:24:49,171] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 6330 bytes -[2024-06-20 13:24:49,171] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: appending 6330 bytes -[2024-06-20 13:24:49,171] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: fragment = ".com/ns/confd-progressconfd-progresstailf-kicker2020-11-26http://tail-f.com/ns/kickerkickertailf-last-login2019-11-21http://tail-f.com/yang/last-loginlasttailf-netconf-extensions2021-06-18http://tail-f.com/ns/netconf/extensionstfncenetconftailf-netconf-forwardhttp://tail-f.com/ns/netconf/forward/1.0fwdnetconftailf-netconf-inactivehttp://tail-f.com/ns/netconf/inactive/1.0innetconftailf-netconf-monitoring2022-04-12http://tail-f.com/yang/netconf-monitoringtncmtailf-netconf-query2017-01-06http://tail-f.com/ns/netconf/querytfncqnetconftailf-netconf-rollback2018-01-12http://tail-f.com/ns/netconf/rollbacknetconf-rollbacknetconftailf-netconf-transactionshttp://tail-f.com/ns/netconf/transactions/1.0trnetconftailf-netconf-with-rollback-id2020-06-25http://tail-f.com/ns/netconf/with-rollback-idwrbidnetconftailf-netconf-with-transaction-id2018-11-23http://tail-f.com/ns/netconf/with-transaction-idwtxidnetconftailf-progress2021-12-17http://tail-f.com/ns/progressprogresstailf-rollback2020-09-02http://tail-f.com/ns/rollbackrollbackrestnetconfmaapitailf-xsd-types2017-11-20http://tail-f.com/yang/xsd-typesxs0.0.0.020220.0.0.02024fiberscp0fsmgon_daemonnum_instancesremovecreateset_elemget_nextget_elemmediachannelscp0fsmgon_daemonnum_instancesremovecreateset_elemget_nextget_elemopticalbandscp0fsmgon_daemonnum_instancesremovecreateset_elemget_nextget_elemvp10fsmgon_daemonvp20fsmgon_daemonrunning1717-711274-208943./confd-cdb/A.cdb35577915504390false0falseoperational22./confd-cdb/O.cdb42100falseadmin2024-06-20T13:24:43.525796+00:009f9b9714842f10.30.2.208ncm:netconf-ssh02024-06-06T23:13:24.403301+00:009f9b9714842f10.30.2.206ncm:netconf-ssh02024-06-06T22:01:14.795227+00:009f9b9714842f127.0.0.1ncm:netconf-ssh00rollback010002admin2024-06-07 08:55:39netconf1rollback110001system2024-06-06 22:01:14system2rollback210000system2024-06-06 22:01:12system" -[2024-06-20 13:24:49,171] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 6337 bytes from start of buffer -[2024-06-20 13:24:49,172] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=4 -[2024-06-20 13:24:49,172] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found end of message delimiter -[2024-06-20 13:24:49,174] DEBUG:ncclient.operations.rpc:[host 172.17.254.22 session-id 21] Delivering to -[2024-06-20 13:24:49,174] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: saving back rest of message after 6341 bytes, original size 6341 -[2024-06-20 13:24:49,175] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -int-connection-91 -int-connection-92 -int-connection-93 -int-connection-94 -int-connection-95 -int-connection-96 -int-connection-97 -int-connection-98 -int-connection-99 -port-1-in -port-1-out -port-10-in -port-10-out -port-11-in -port-11-out -port-12-in -port-12-out -port-13-in -port-13-out -port-14-in -port-14-out -port-15-in -port-15-out -port-16-in -port-16-out -port-17-in -port-17-out -port-18-in -port-18-out -port-19-in -port-19-out -port-2-in -port-2-out -port-20-in -port-20-out -port-21-in -port-21-out -port-22-in -port-22-out -port-23-in -port-23-out -port-24-in -port-24-out -port-25-in -port-25-out -port-26-in -port-26-out -port-27-in -port-27-out -port-28-in -port-28-out -port-29-in -port-29-out -port-3-in -port-3-out -port-30-in -port-30-out -port-31-in -port-31-out -port-32-in -port-32-out -port-33-in -port-33-out -port-34-in -port-34-out -port-35-in -port-35-out -port-36-in -port-36-out -port-37-in -port-37-out -port-38-in -port-38-out -port-39-in -port-39-out -port-4-in -port-4-out -port-40-in -port-40-out -port-41-in -port-41-out -port-42-in -port-42-out -port-43-in -port-43-out -port-44-in -port-44-out -port-45-in -port-45-out -port-46-in -port-46-out -port-47-in -port-47-out -port-48-in -port-48-out -port-5-in -port-5-out -port-6-in -port-6-out -port-7-in -port-7-out -port-8-in -port-8-out -port-9-in -port-9-out -component [, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -WBSS-1 -WBSS-10 -WBSS-11 -WBSS-12 -WBSS-13 -WBSS-14 -WBSS-15 -WBSS-16 -WBSS-17 -WBSS-18 -WBSS-19 -WBSS-2 -WBSS-20 -WBSS-21 -WBSS-22 -WBSS-23 -WBSS-24 -WBSS-25 -WBSS-26 -WBSS-27 -WBSS-28 -WBSS-29 -WBSS-3 -WBSS-30 -WBSS-31 -WBSS-32 -WBSS-4 -WBSS-5 -WBSS-6 -WBSS-7 -WBSS-8 -WBSS-9 -WSS-1 -WSS-10 -WSS-11 -WSS-12 -WSS-2 -WSS-3 -WSS-4 -WSS-5 -WSS-6 -WSS-7 -WSS-8 -WSS-9 -int-connection-1 -int-connection-10 -int-connection-100 -int-connection-101 -int-connection-102 -int-connection-103 -int-connection-104 -int-connection-105 -int-connection-106 -int-connection-107 -int-connection-108 -int-connection-109 -int-connection-11 -int-connection-110 -int-connection-111 -int-connection-112 -int-connection-113 -int-connection-114 -int-connection-115 -int-connection-116 -int-connection-117 -int-connection-118 -int-connection-119 -int-connection-12 -int-connection-120 -int-connection-121 -int-connection-122 -int-connection-123 -int-connection-124 -int-connection-125 -int-connection-126 -int-connection-127 -int-connection-128 -int-connection-129 -int-connection-13 -int-connection-130 -int-connection-131 -int-connection-132 -int-connection-133 -int-connection-134 -int-connection-135 -int-connection-136 -int-connection-137 -int-connection-138 -int-connection-139 -int-connection-14 -int-connection-140 -int-connection-141 -int-connection-142 -int-connection-143 -int-connection-144 -int-connection-145 -int-connection-146 -int-connection-147 -int-connection-148 -int-connection-149 -int-connection-15 -int-connection-150 -int-connection-151 -int-connection-152 -int-connection-153 -int-connection-154 -int-connection-155 -int-connection-156 -int-connection-157 -int-connection-158 -int-connection-159 -int-connection-16 -int-connection-160 -int-connection-161 -int-connection-162 -int-connection-163 -int-connection-164 -int-connection-165 -int-connection-166 -int-connection-167 -int-connection-168 -int-connection-169 -int-connection-17 -int-connection-170 -int-connection-171 -int-connection-172 -int-connection-173 -int-connection-174 -int-connection-175 -int-connection-176 -int-connection-177 -int-connection-178 -int-connection-179 -int-connection-18 -int-connection-180 -int-connection-181 -int-connection-182 -int-connection-183 -int-connection-184 -int-connection-185 -int-connection-186 -int-connection-187 -int-connection-188 -int-connection-189 -int-connection-19 -int-connection-190 -int-connection-191 -int-connection-192 -int-connection-193 -int-connection-194 -int-connection-195 -int-connection-196 -int-connection-197 -int-connection-198 -int-connection-199 -int-connection-2 -int-connection-20 -int-connection-200 -int-connection-201 -int-connection-202 -int-connection-203 -int-connection-204 -int-connection-205 -int-connection-206 -int-connection-207 -int-connection-208 -int-connection-209 -int-connection-21 -int-connection-210 -int-connection-211 -int-connection-212 -int-connection-213 -int-connection-214 -int-connection-215 -int-connection-216 -int-connection-217 -int-connection-218 -int-connection-219 -int-connection-22 -int-connection-220 -int-connection-221 -int-connection-222 -int-connection-223 -int-connection-224 -int-connection-225 -int-connection-226 -int-connection-227 -int-connection-228 -int-connection-229 -int-connection-23 -int-connection-230 -int-connection-231 -int-connection-232 -int-connection-233 -int-connection-234 -int-connection-235 -int-connection-236 -int-connection-237 -int-connection-238 -int-connection-239 -int-connection-24 -int-connection-240 -int-connection-241 -int-connection-242 -int-connection-243 -int-connection-244 -int-connection-245 -int-connection-246 -int-connection-247 -int-connection-248 -int-connection-249 -int-connection-25 -int-connection-250 -int-connection-251 -int-connection-252 -int-connection-253 -int-connection-254 -int-connection-255 -int-connection-256 -int-connection-257 -int-connection-258 -int-connection-259 -int-connection-26 -int-connection-260 -int-connection-261 -int-connection-262 -int-connection-263 -int-connection-264 -int-connection-265 -int-connection-266 -int-connection-267 -int-connection-268 -int-connection-269 -int-connection-27 -int-connection-270 -int-connection-271 -int-connection-272 -int-connection-273 -int-connection-274 -int-connection-275 -int-connection-276 -int-connection-277 -int-connection-278 -int-connection-279 -int-connection-28 -int-connection-280 -int-connection-281 -int-connection-282 -int-connection-283 -int-connection-284 -int-connection-285 -int-connection-286 -int-connection-287 -int-connection-288 -int-connection-289 -int-connection-29 -int-connection-290 -int-connection-291 -int-connection-292 -int-connection-293 -int-connection-294 -int-connection-295 -int-connection-296 -int-connection-297 -int-connection-298 -int-connection-299 -int-connection-3 -int-connection-30 -int-connection-300 -int-connection-301 -int-connection-302 -int-connection-303 -int-connection-304 -int-connection-305 -int-connection-306 -int-connection-307 -int-connection-308 -int-connection-309 -int-connection-31 -int-connection-310 -int-connection-311 -int-connection-312 -int-connection-313 -int-connection-314 -int-connection-315 -int-connection-316 -int-connection-317 -int-connection-318 -int-connection-319 -int-connection-32 -int-connection-320 -int-connection-321 -int-connection-322 -int-connection-323 -int-connection-324 -int-connection-325 -int-connection-326 -int-connection-327 -int-connection-328 -int-connection-329 -int-connection-33 -int-connection-330 -int-connection-331 -int-connection-332 -int-connection-333 -int-connection-334 -int-connection-335 -int-connection-336 -int-connection-337 -int-connection-338 -int-connection-339 -int-connection-34 -int-connection-340 -int-connection-341 -int-connection-342 -int-connection-343 -int-connection-344 -int-connection-345 -int-connection-346 -int-connection-347 -int-connection-348 -int-connection-349 -int-connection-35 -int-connection-350 -int-connection-351 -int-connection-352 -int-connection-353 -int-connection-354 -int-connection-355 -int-connection-356 -int-connection-357 -int-connection-358 -int-connection-359 -int-connection-36 -int-connection-360 -int-connection-361 -int-connection-362 -int-connection-363 -int-connection-364 -int-connection-365 -int-connection-366 -int-connection-367 -int-connection-368 -int-connection-369 -int-connection-37 -int-connection-370 -int-connection-371 -int-connection-372 -int-connection-373 -int-connection-374 -int-connection-375 -int-connection-376 -int-connection-377 -int-connection-378 -int-connection-379 -int-connection-38 -int-connection-380 -int-connection-381 -int-connection-382 -int-connection-383 -int-connection-384 -int-connection-385 -int-connection-386 -int-connection-387 -int-connection-388 -int-connection-389 -int-connection-39 -int-connection-390 -int-connection-391 -int-connection-392 -int-connection-393 -int-connection-394 -int-connection-395 -int-connection-396 -int-connection-397 -int-connection-398 -int-connection-399 -int-connection-4 -int-connection-40 -int-connection-400 -int-connection-401 -int-connection-402 -int-connection-403 -int-connection-404 -int-connection-405 -int-connection-406 -int-connection-407 -int-connection-408 -int-connection-409 -int-connection-41 -int-connection-410 -int-connection-411 -int-connection-412 -int-connection-413 -int-connection-414 -int-connection-415 -int-connection-416 -int-connection-417 -int-connection-418 -int-connection-419 -int-connection-42 -int-connection-420 -int-connection-421 -int-connection-422 -int-connection-423 -int-connection-424 -int-connection-425 -int-connection-426 -int-connection-427 -int-connection-428 -int-connection-43 -int-connection-44 -int-connection-45 -int-connection-46 -int-connection-47 -int-connection-48 -int-connection-49 -int-connection-5 -int-connection-50 -int-connection-51 -int-connection-52 -int-connection-53 -int-connection-54 -int-connection-55 -int-connection-56 -int-connection-57 -int-connection-58 -int-connection-59 -int-connection-6 -int-connection-60 -int-connection-61 -int-connection-62 -int-connection-63 -int-connection-64 -int-connection-65 -int-connection-66 -int-connection-67 -int-connection-68 -int-connection-69 -int-connection-7 -int-connection-70 -int-connection-71 -int-connection-72 -int-connection-73 -int-connection-74 -int-connection-75 -int-connection-76 -int-connection-77 -int-connection-78 -int-connection-79 -int-connection-8 -int-connection-80 -int-connection-81 -int-connection-82 -int-connection-83 -int-connection-84 -int-connection-85 -int-connection-86 -int-connection-87 -int-connection-88 -int-connection-89 -int-connection-9 -int-connection-90 -[2024-06-20 13:24:49,251] INFO:root:parameters {} -[2024-06-20 13:24:49,252] DEBUG:context.client.ContextClient:SetOpticalConfig request: {"config": "{}", "device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}} -[2024-06-20 13:24:49,280] DEBUG:context.client.ContextClient:SetOpticalConfig result: {"opticalconfig_uuid": ""} -[2024-06-20 13:24:49,290] DEBUG:context.client.ContextClient:SetDevice request: {"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.17.254.22"}}, {"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}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-1-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-1-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-10-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-10-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-11-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-11-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-12-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-12-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-13-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-13-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-14-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-14-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-15-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-15-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-16-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-16-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-2-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-2-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-3-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-3-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-4-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-4-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-5-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-5-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-6-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-6-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-7-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-7-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-8-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-8-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-9-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_INPUT\", \"uuid\": \"port-9-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-1-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-1-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-10-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-10-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-11-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-11-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-12-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-12-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-13-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-13-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-14-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-14-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-15-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-15-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-16-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-16-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-2-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-2-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-3-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-3-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-4-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-4-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-5-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-5-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-6-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-6-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-7-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-7-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-8-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-8-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-9-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT\", \"uuid\": \"port-9-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-33-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-33-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-34-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-34-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-35-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-35-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-36-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-36-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-37-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-37-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-38-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-38-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-39-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-39-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-40-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-40-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-41-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-41-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-42-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-42-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-43-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-43-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-44-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-44-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-45-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-45-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-46-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-46-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-47-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-47-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-48-in]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT\", \"uuid\": \"port-48-in\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-33-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-33-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-34-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-34-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-35-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-35-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-36-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-36-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-37-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-37-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-38-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-38-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-39-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-39-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-40-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-40-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-41-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-41-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-42-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-42-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-43-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-43-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-44-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-44-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-45-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-45-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-46-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-46-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-47-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-47-out\"}"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "/endpoints/endpoint[port-48-out]", "resource_value": "{\"type\": \"MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT\", \"uuid\": \"port-48-out\"}"}}]}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-1-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-10-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-11-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-12-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-13-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-14-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-15-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-16-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-2-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-3-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-4-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-5-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-6-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-7-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-8-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-9-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-1-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-10-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-11-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-12-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-13-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-14-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-15-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-16-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-2-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-3-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-4-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-5-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-6-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-7-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-8-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-9-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-33-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-34-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-35-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-36-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-37-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-38-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-39-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-40-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-41-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-42-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-43-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-44-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-45-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-46-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-47-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-48-in"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-33-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-34-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-35-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-36-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-37-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-38-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-39-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-40-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-41-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-42-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-43-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-44-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-45-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-46-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-47-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "port-48-out"}, "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}, "endpoint_type": "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": ""}], "device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-roadm", "name": "R2"} -[2024-06-20 13:24:49,515] DEBUG:context.client.ContextClient:SetDevice result: {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}} -[2024-06-20 13:24:49,515] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}]}, "include_components": false, "include_config_rules": false, "include_endpoints": true} -[2024-06-20 13:24:49,555] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": [{"components": [], "controller_id": {}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "053a62f6-2760-562a-b285-15a9b159c2c5"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-46-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "0a9b56db-32f8-5c60-83af-7ceaa39c618e"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-2-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "0d103312-7c8c-5e8a-980f-f6863b42d0d3"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-10-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "0ee5d330-9700-5684-92c1-bcb6c4c8a3bc"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-8-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "115ed444-0128-53f1-aa1a-ce8129a55f67"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-9-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "12ea85fc-4388-59c1-9cb9-b480ee06e01a"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-45-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "14bb0e42-db22-5dfb-b618-4caa72a8e8cc"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-42-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "18a7b3b1-d4a3-590a-a5a9-b7db5293ac61"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-48-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "19041fc0-6807-5b8f-9b26-7e7eed556980"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-6-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "1950275c-e218-5190-8ca5-6a2228c4a87b"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-10-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "21db5850-b53e-57de-ba2a-bf578bffb1ea"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-46-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "261a53b4-d257-5f35-bf5b-b2f975d7d2ed"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-35-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "266dc3a1-0892-5454-a917-3fa62190c6c2"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-8-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "2e4f4523-3fb0-5704-9a47-1cf467d70bc8"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-13-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "2f6d500b-2407-516f-9468-4f059b218f4b"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-43-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "3062d499-cf08-5f02-94c6-8906ebdf756b"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-41-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "31060d00-8617-55c3-92f2-f42b876478c1"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-4-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "399d3645-5565-502b-bfc8-3ea9cf68a83b"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-36-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "3ba5f6db-ffde-59d9-a7ae-af06e96a9674"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-40-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "3e17084e-d2b4-5cb2-b31a-7f6d80feb60e"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-5-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "3e74aa2a-cf0d-51ce-b406-dcf1b96ae5d5"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-11-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "3efedbc2-7363-53cf-a0b9-fc4a2bcbd245"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-1-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "48a917ad-12d8-5ec4-aaab-84b35337abfe"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-14-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "5047aede-f784-58ab-b80a-454386a43c64"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-12-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "50b41e11-e2f7-5720-b2b0-bc2a43eb7b95"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-38-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "5aeb719f-e322-5185-be08-a2f837992a4f"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-44-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "5cfa4f91-cbce-5721-b612-e6b5eaa76721"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-35-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "5d5cb9d0-e675-55b7-8a76-5649f4c95c81"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-39-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "5dd55ad7-b980-562e-b579-d724a3655d31"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-34-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "5eba7909-6f11-5154-b6e9-e2a2bbc75bb0"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-48-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "625560d9-4809-5f40-b3cf-23ec59efe71a"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-38-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "630a400f-dd0c-51d0-8049-c281881190b0"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-3-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "6a2d629b-9dfe-58af-bc5b-96277a127512"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-41-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "6e621543-9616-57bf-806c-2564047f234b"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-15-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "6e9b83ef-b9a4-5898-9495-38c45635aac7"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-34-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "72fabf2f-0121-5198-a4bf-ab82034d7da9"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-16-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "743daf39-41eb-500c-b61b-d7b473249022"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-47-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "76d3c064-04eb-5edf-95ac-645cb6348b61"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-33-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "77d8c722-2ad2-5a7c-8669-fb900f1166e1"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-45-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "8657516b-33f4-5d1c-839d-51acbc6fb93d"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-36-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "86f6b3e0-3e7e-5db2-bb71-6e05229c97eb"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-3-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "922a952b-50b6-5985-bf44-3afeb53f396e"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-44-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "94ae7ec2-0cba-55ea-a36f-2143b205ed64"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-43-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "994c45dd-b2b8-53c4-957d-4834f45e0e1f"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-13-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "a08ab669-238c-5e9e-9e86-780d39111595"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-40-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "a751a510-e108-5819-bafb-3d3e6881b4eb"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-12-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "b22d517e-2d36-518b-9e3e-c75c625f06ef"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-7-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "b3ab2b45-ed47-5c14-801d-b1104dd9d619"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-6-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "b71a78da-69db-5260-8a15-8de81d02a20d"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-9-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "bc82f789-cbb1-5f3e-b989-88dab185ea0d"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-37-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "bcfb768c-e8fb-5e0b-9559-821d120b5410"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-1-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "bd08db44-134e-5902-bb24-b2453bf21db4"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-5-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "be1b3bb0-8aed-569a-be91-e888b0c0985d"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-33-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "c027a391-2cf6-5b96-bba3-051e01c63f43"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-7-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "c2d5ac50-2faf-5608-a6ae-7c023bceb289"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-39-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "c4568f02-d291-5c95-b9bc-846278862db9"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-4-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "c559fb60-6495-5992-b339-ac7a590e337c"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-16-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "cace07d7-0ca3-51be-bef1-b58db0ccba6f"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-2-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "caf865b8-df54-5601-9163-1cdbe8f7a599"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-47-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "cc5064c4-bc42-5c50-b5b0-9b2ad1405bd8"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-42-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "e650eba7-019d-5c4f-9d75-14d47a711f2f"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-14-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "e7566eac-9fa0-5137-929a-7cf2485babea"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-37-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "ea7812b2-db7c-5504-a415-6b4299ae090f"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-11-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "fd4d5404-baf3-5f5f-b7b7-a825c90e5f2a"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-15-in"}], "device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-roadm", "name": "R2"}]} -[2024-06-20 13:24:49,556] DEBUG:device.service.DeviceServiceServicerImpl:AddDevice reply: {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}} -[2024-06-20 13:26:22,579] DEBUG:device.service.OpenConfigServicer:ConfigureOpticalDevice request: {"config": "{\"channels\": [], \"transceivers\": {\"transceiver\": []}, \"interfaces\": {\"interface\": \"\"}, \"channel_namespace\": null, \"endpoints\": [], \"device_name\": \"R1\", \"new_config\": {\"band_type\": \"C_BAND\", \"low-freq\": 192006250, \"up-freq\": 192206250, \"frequency\": 192106250, \"band\": 200000, \"ob_id\": 1}, \"is_opticalband\": true, \"flow\": [[\"0\", \"77df46fd-6d6e-5726-9960-ca439c925dea\"]]}", "device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "opticalconfig_id": {"opticalconfig_uuid": "8e7fd0ea-e9de-54a3-a3bd-bf3ae86efbf3"}} -[2024-06-20 13:26:22,580] INFO:device.service.OpenConfigServicer: config from openconfigservicer {'channels': [], 'transceivers': {'transceiver': []}, 'interfaces': {'interface': ''}, 'channel_namespace': None, 'endpoints': [], 'device_name': 'R1', 'new_config': {'band_type': 'C_BAND', 'low-freq': 192006250, 'up-freq': 192206250, 'frequency': 192106250, 'band': 200000, 'ob_id': 1}, 'is_opticalband': True, 'flow': [['0', '77df46fd-6d6e-5726-9960-ca439c925dea']]} -[2024-06-20 13:26:22,580] DEBUG:context.client.ContextClient:Creating channel to 10.152.183.195:1010... -[2024-06-20 13:26:22,581] DEBUG:context.client.ContextClient:Channel created -[2024-06-20 13:26:22,581] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}]}, "include_components": false, "include_config_rules": false, "include_endpoints": true} -[2024-06-20 13:26:22,620] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": [{"components": [], "controller_id": {}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "02c19f3c-73ac-55b9-b4c2-7def7e7df9fe"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-48-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "0332be2a-9b4e-52d7-ac7b-3ea58bf00375"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-12-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "08da1aa7-9253-5e92-bf2c-6e66ffe7a4ff"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-38-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "0b1c4d0e-5140-5085-ab66-2def390b650f"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-33-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "12b4419f-9ae9-5839-ad52-9684b1f30878"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-34-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "188af412-9ac2-588f-8f00-a956aa6b2ae5"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-43-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "18a51dcf-905d-5104-9ef1-f24740fd6d78"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-12-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "1e02e33d-4b14-502d-9806-988f64cccb5d"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-43-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "21b8ccaa-9f7b-5bc5-9fc0-6f32025eb8a6"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-41-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "22d287ab-7935-55cb-b681-944a064726a9"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-11-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "28666b3c-4b96-5cb6-8006-eba13ca8ab6e"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-9-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "29e8b36f-6989-5651-99fe-b3cb2ee5b4b8"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-40-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "2b646bf7-3120-5254-a4fb-748294c61a71"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-2-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "35aaee89-81a3-56b1-b1ba-33f972d0af49"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-36-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "385bc8da-171b-574c-9d4f-d9b08f29c469"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-40-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "38f57fc2-4b25-5b8e-8ab0-e2676594b652"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-39-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "3972ab17-4386-5a0c-92db-fc8096433068"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-38-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "3a49ceb2-fd5b-59e2-975a-b065c4e127a4"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-7-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "3b1551b2-3c17-54f6-8990-308ee42b421d"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-15-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "3f8b1948-619c-5130-a158-b7beb838434c"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-14-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "435a198b-cd6f-5d29-a72d-ea4f04cb658a"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-35-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "436bb32a-c8a0-5718-bbdb-382c79d96587"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-1-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "4b197fb8-d26e-59fb-a96c-d347ba017b28"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-46-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "53e3c997-d487-5d96-a6c4-998a562dcb96"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-5-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "55684f06-7aab-5061-aa0d-2e37b45e5ec7"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-2-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "56c81904-047c-5d7c-a765-79b9e4b7abf2"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-3-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "59871dc1-872d-5df1-9392-2537a591c86c"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-45-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "59fcacb0-1840-5dd3-9dfa-a07cf4f91bd2"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-3-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "5ac999c3-3df8-53c4-8f4a-52e5943f5c4c"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-14-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "62099377-4f4f-5ffb-aa37-6dec3319a21e"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-13-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "6a6dc5d4-567c-5104-b50d-6820768d2699"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-46-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "77df46fd-6d6e-5726-9960-ca439c925dea"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-1-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "7be48ef0-2357-55fa-aca6-a1aeeeb3267a"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-42-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "7ce13dc8-d5f1-5233-beec-1d99416c9164"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-44-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "883609be-6125-5bbf-91ac-2a30e75a7d1e"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-16-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "8d0c4ac4-c522-5992-a206-45e8bf8389c6"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-7-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "904c4b18-10a6-512b-9bb2-8ec81e74fda4"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-34-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "91492a21-2f88-5acc-a427-2a57230eb2ea"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-15-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "927b0db8-602b-54d5-acd9-c1cd6395425f"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-39-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "a18a7eb1-811d-5d27-be08-db212d83f25e"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-45-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "a7058178-97da-5b95-b969-abe5ab7a8e6f"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-42-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "a7d33ece-9565-59ec-999f-4c995d142f83"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-4-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "a9061634-e9a7-5d13-bc96-09fbf31cd610"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-41-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "b5354091-162e-5073-aeb2-ec5debcfcf9f"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-16-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "b9fbeed8-e304-5bd5-90e1-3e43c6af5a16"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-35-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "c31537c8-13df-503d-bf91-64e860e6b573"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-48-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "ca4f5f60-37ba-567b-a474-ff8951033342"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-47-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "cc197d41-625f-50d1-94d8-c6c63a31ccfb"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-8-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "ccb07637-f7d6-5b4a-9fc6-8510ef694cd9"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-4-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "cd539095-12a6-5460-8b07-481ec1901c9a"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-33-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "cfe60fca-3fe5-5747-ace8-ca7913e26d81"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-13-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "dda83a5d-29b7-5f96-9b0a-bd1f39e1db2f"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-37-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "e2500678-0f36-555a-9133-7cd04d3ad63a"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-6-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "e5265cb0-2e80-5ea1-80d8-333749bb7f14"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-5-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "e9d0dac3-11f2-5b84-9125-d0300ccd8eeb"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-37-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "e9d4bff3-76ac-5490-b897-a30b9a42a8b1"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-44-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "ea73d8c4-1077-55c9-87f1-9c377cee196f"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-9-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "eb38e3cd-e42a-54b2-846c-82207a95e8e3"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-10-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "ebfe571c-77b2-5f66-9efe-25583cc1f587"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-36-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "ee4df110-8657-571c-aa20-a70ec79db01f"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-47-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "f206246e-cb90-56b4-b908-1dc3daa7ac3f"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-11-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "f7052fb4-fab8-5821-95e0-d407043742d8"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-8-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "f8bd2b7e-6d37-5bbc-92f4-9b9b2e0ce22c"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-10-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "ff51524f-7b51-5efd-af6b-6bc8541d3716"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-6-out"}], "device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-roadm", "name": "R1"}]} -[2024-06-20 13:26:22,621] INFO:device.service.OpenConfigServicer:device is device_id { - device_uuid { - uuid: "68741528-2e94-5274-ab3c-fddcd8dc05ef" - } -} -name: "R1" -device_type: "optical-roadm" -device_operational_status: DEVICEOPERATIONALSTATUS_ENABLED -device_drivers: DEVICEDRIVER_OC -device_endpoints { - endpoint_id { - 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: "02c19f3c-73ac-55b9-b4c2-7def7e7df9fe" - } - } - name: "port-48-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0332be2a-9b4e-52d7-ac7b-3ea58bf00375" - } - } - name: "port-12-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "08da1aa7-9253-5e92-bf2c-6e66ffe7a4ff" - } - } - name: "port-38-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0b1c4d0e-5140-5085-ab66-2def390b650f" - } - } - name: "port-33-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "12b4419f-9ae9-5839-ad52-9684b1f30878" - } - } - name: "port-34-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "188af412-9ac2-588f-8f00-a956aa6b2ae5" - } - } - name: "port-43-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "18a51dcf-905d-5104-9ef1-f24740fd6d78" - } - } - name: "port-12-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "1e02e33d-4b14-502d-9806-988f64cccb5d" - } - } - name: "port-43-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "21b8ccaa-9f7b-5bc5-9fc0-6f32025eb8a6" - } - } - name: "port-41-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "22d287ab-7935-55cb-b681-944a064726a9" - } - } - name: "port-11-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "28666b3c-4b96-5cb6-8006-eba13ca8ab6e" - } - } - name: "port-9-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "29e8b36f-6989-5651-99fe-b3cb2ee5b4b8" - } - } - name: "port-40-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "2b646bf7-3120-5254-a4fb-748294c61a71" - } - } - name: "port-2-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "35aaee89-81a3-56b1-b1ba-33f972d0af49" - } - } - name: "port-36-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "385bc8da-171b-574c-9d4f-d9b08f29c469" - } - } - name: "port-40-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "38f57fc2-4b25-5b8e-8ab0-e2676594b652" - } - } - name: "port-39-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3972ab17-4386-5a0c-92db-fc8096433068" - } - } - name: "port-38-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3a49ceb2-fd5b-59e2-975a-b065c4e127a4" - } - } - name: "port-7-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3b1551b2-3c17-54f6-8990-308ee42b421d" - } - } - name: "port-15-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3f8b1948-619c-5130-a158-b7beb838434c" - } - } - name: "port-14-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "435a198b-cd6f-5d29-a72d-ea4f04cb658a" - } - } - name: "port-35-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "436bb32a-c8a0-5718-bbdb-382c79d96587" - } - } - name: "port-1-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "4b197fb8-d26e-59fb-a96c-d347ba017b28" - } - } - name: "port-46-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "53e3c997-d487-5d96-a6c4-998a562dcb96" - } - } - name: "port-5-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "55684f06-7aab-5061-aa0d-2e37b45e5ec7" - } - } - name: "port-2-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "56c81904-047c-5d7c-a765-79b9e4b7abf2" - } - } - name: "port-3-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "59871dc1-872d-5df1-9392-2537a591c86c" - } - } - name: "port-45-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "59fcacb0-1840-5dd3-9dfa-a07cf4f91bd2" - } - } - name: "port-3-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5ac999c3-3df8-53c4-8f4a-52e5943f5c4c" - } - } - name: "port-14-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "62099377-4f4f-5ffb-aa37-6dec3319a21e" - } - } - name: "port-13-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "6a6dc5d4-567c-5104-b50d-6820768d2699" - } - } - name: "port-46-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "77df46fd-6d6e-5726-9960-ca439c925dea" - } - } - name: "port-1-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "7be48ef0-2357-55fa-aca6-a1aeeeb3267a" - } - } - name: "port-42-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "7ce13dc8-d5f1-5233-beec-1d99416c9164" - } - } - name: "port-44-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "883609be-6125-5bbf-91ac-2a30e75a7d1e" - } - } - name: "port-16-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "8d0c4ac4-c522-5992-a206-45e8bf8389c6" - } - } - name: "port-7-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "904c4b18-10a6-512b-9bb2-8ec81e74fda4" - } - } - name: "port-34-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "91492a21-2f88-5acc-a427-2a57230eb2ea" - } - } - name: "port-15-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "927b0db8-602b-54d5-acd9-c1cd6395425f" - } - } - name: "port-39-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a18a7eb1-811d-5d27-be08-db212d83f25e" - } - } - name: "port-45-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a7058178-97da-5b95-b969-abe5ab7a8e6f" - } - } - name: "port-42-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a7d33ece-9565-59ec-999f-4c995d142f83" - } - } - name: "port-4-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a9061634-e9a7-5d13-bc96-09fbf31cd610" - } - } - name: "port-41-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b5354091-162e-5073-aeb2-ec5debcfcf9f" - } - } - name: "port-16-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b9fbeed8-e304-5bd5-90e1-3e43c6af5a16" - } - } - name: "port-35-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c31537c8-13df-503d-bf91-64e860e6b573" - } - } - name: "port-48-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ca4f5f60-37ba-567b-a474-ff8951033342" - } - } - name: "port-47-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cc197d41-625f-50d1-94d8-c6c63a31ccfb" - } - } - name: "port-8-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ccb07637-f7d6-5b4a-9fc6-8510ef694cd9" - } - } - name: "port-4-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cd539095-12a6-5460-8b07-481ec1901c9a" - } - } - name: "port-33-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cfe60fca-3fe5-5747-ace8-ca7913e26d81" - } - } - name: "port-13-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "dda83a5d-29b7-5f96-9b0a-bd1f39e1db2f" - } - } - name: "port-37-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e2500678-0f36-555a-9133-7cd04d3ad63a" - } - } - name: "port-6-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e5265cb0-2e80-5ea1-80d8-333749bb7f14" - } - } - name: "port-5-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e9d0dac3-11f2-5b84-9125-d0300ccd8eeb" - } - } - name: "port-37-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e9d4bff3-76ac-5490-b897-a30b9a42a8b1" - } - } - name: "port-44-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ea73d8c4-1077-55c9-87f1-9c377cee196f" - } - } - name: "port-9-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "eb38e3cd-e42a-54b2-846c-82207a95e8e3" - } - } - name: "port-10-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ebfe571c-77b2-5f66-9efe-25583cc1f587" - } - } - name: "port-36-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ee4df110-8657-571c-aa20-a70ec79db01f" - } - } - name: "port-47-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "f206246e-cb90-56b4-b908-1dc3daa7ac3f" - } - } - name: "port-11-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "f7052fb4-fab8-5821-95e0-d407043742d8" - } - } - name: "port-8-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "f8bd2b7e-6d37-5bbc-92f4-9b9b2e0ce22c" - } - } - name: "port-10-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ff51524f-7b51-5efd-af6b-6bc8541d3716" - } - } - name: "port-6-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -controller_id { -} - -[2024-06-20 13:26:22,621] INFO:device.service.OpenConfigServicer:from openconfigservicer [{'resource_key': 'channel_namespace', 'value': None}, {'resource_key': 'add_transceiver', 'value': None}, {'resource_key': 'source_port', 'value': [None]}, {'resource_key': 'destination_port', 'value': ['port-1-out']}, {'resource_key': 'target-output-power', 'value': None}, {'resource_key': 'frequency', 'value': 192106250}, {'resource_key': 'operational-mode', 'value': None}, {'resource_key': 'line-port', 'value': None}, {'resource_key': 'name', 'value': 'C_BAND'}, {'resource_key': 'optical-band-parent', 'value': 1}, {'resource_key': 'channel_name', 'value': None}, {'resource_key': 'index', 'value': 1}, {'resource_key': 'lower-frequency', 'value': 192006250}, {'resource_key': 'upper-frequency', 'value': 192206250}] and conditions {'is_opticalband': True, 'edit_type': 'optical-band'} -[2024-06-20 13:26:22,632] INFO:ncclient.operations.rpc:[host 172.17.254.21 session-id 21] Requesting 'EditConfig' -[2024-06-20 13:26:22,633] DEBUG:ncclient.operations.rpc:[host 172.17.254.21 session-id 21] Sync request, will wait for timeout=120 -[2024-06-20 13:26:22,785] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:26:22,785] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 235 bytes -[2024-06-20 13:26:22,785] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:22,785] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=6 -[2024-06-20 13:26:22,786] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:22,786] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 225 bytes -[2024-06-20 13:26:22,786] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: appending 225 bytes -[2024-06-20 13:26:22,786] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: fragment = " -" -[2024-06-20 13:26:22,786] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 231 bytes from start of buffer -[2024-06-20 13:26:22,786] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=4 -[2024-06-20 13:26:22,786] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found end of message delimiter -[2024-06-20 13:26:22,786] DEBUG:ncclient.operations.rpc:[host 172.17.254.21 session-id 21] Delivering to -[2024-06-20 13:26:22,787] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: saving back rest of message after 235 bytes, original size 235 -[2024-06-20 13:26:22,787] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:26:22,787] INFO:root:resonse from edit - -[2024-06-20 13:26:22,787] INFO:device.service.OpenConfigServicer:resluts [True] and is_all_good True -[2024-06-20 13:26:22,788] INFO:ncclient.operations.rpc:[host 172.17.254.21 session-id 21] Requesting 'Get' -[2024-06-20 13:26:22,788] DEBUG:ncclient.operations.rpc:[host 172.17.254.21 session-id 21] Sync request, will wait for timeout=120 -[2024-06-20 13:26:22,927] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:26:22,927] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:26:22,927] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:22,927] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:22,927] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:22,927] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:22,927] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:26:22,927] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:26:22,927] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:26:22,927] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:26:22,928] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:26:22,928] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:22,928] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:22,928] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:22,928] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:22,928] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:26:22,928] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:26:22,928] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:26:22,928] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:26:22,928] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:26:22,928] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:22,929] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:22,929] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:22,929] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:22,929] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:26:22,929] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:26:22,929] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:26:22,929] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:26:22,929] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:26:22,929] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:22,929] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:22,929] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:22,929] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:22,930] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: appending 16376 bytes -[2024-06-20 13:26:22,930] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: fragment = " -commonflex-scale-mg-on2024-04-25http://flex-scale-project.eu/yang/flex-scale-mg-oniana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashcrypt-hash-md5crypt-hash-sha-256crypt-hash-sha-512ietf-interfaces2018-02-20urn:ietf:params:xml:ns:yang:ietf-interfacesarbitrary-namesif-mibpre-provisioningietf-netconf2011-06-01urn:ietf:params:xml:ns:netconf:base:1.0rollback-on-errorvalidatewritable-runningxpathietf-netconf-acm2018-02-14urn:ietf:params:xml:ns:yang:ietf-netconf-acmietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringietf-netconf-nmda2019-01-07urn:ietf:params:xml:ns:yang:ietf-netconf-nmdawith-defaultsietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsietf-netconf-partial-lock2009-10-19urn:ietf:params:xml:ns:netconf:partial-lock:1.0ietf-netconf-with-defaults2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsietf-restconf2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconfietf-restconf-monitoring2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconf-monitoringietf-subscribed-notifications2019-09-09urn:ietf:params:xml:ns:yang:ietf-subscribed-notificationsencode-xmlreplaysubtreexpathietf-subscribed-notifications-deviationietf-yang-library2019-01-04urn:ietf:params:xml:ns:yang:ietf-yang-libraryietf-yang-patch2017-02-22urn:ietf:params:xml:ns:yang:ietf-yang-patchietf-yang-push2019-09-09urn:ietf:params:xml:ns:yang:ietf-yang-pushon-changeietf-yang-push-deviationietf-yang-schema-mount2019-01-14urn:ietf:params:xml:ns:yang:ietf-yang-schema-mountopenconfig-if-ethernet2023-03-10http://openconfig.net/yang/interfaces/ethernetopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipopenconfig-interfaces2019-07-10http://openconfig.net/yang/interfacesopenconfig-platform2022-12-20http://openconfig.net/yang/platformopenconfig-platform-common2022-12-20openconfig-platform-port2023-01-19http://openconfig.net/yang/platform/portopenconfig-wavelength-router2021-07-26http://openconfig.net/yang/wavelength-routeroptical-switch2020-01-10http://www.polatis.com/yang/optical-switchpolatis-switch2020-11-14http://www.polatis.com/yang/polatis-switchtailf-aaa2022-04-12http://tail-f.com/ns/aaa/1.1tailf-acm2013-03-07http://tail-f.com/yang/acmtailf-confd-monitoring2021-09-09http://tail-f.com/yang/confd-monitoringtailf-confd-progress2020-06-29http://tail-f.com/ns/confd-progresstailf-kicker2020-11-26http://tail-f.com/ns/kickertailf-last-login2019-11-21http://tail-f.com/yang/last-logintailf-netconf-extensions2021-06-18http://tail-f.com/ns/netconf/extensionstailf-netconf-monitoring2022-04-12http://tail-f.com/yang/netconf-monitoringtailf-netconf-query2017-01-06http://tail-f.com/ns/netconf/querytailf-netconf-rollback2018-01-12http://tail-f.com/ns/netconf/rollbacktailf-netconf-transactionshttp://tail-f.com/ns/netconf/transactions/1.0tailf-netconf-with-rollback-id2020-06-25http://tail-f.com/ns/netconf/with-rollback-idtailf-netconf-with-transaction-id2018-11-23http://tail-f.com/ns/netconf/with-transaction-idtailf-progress2021-12-17http://tail-f.com/ns/progresstailf-rollback2020-09-02http://tail-f.com/ns/rollbackiana-if-type2023-01-26urn:ietf:params:xml:ns:yang:iana-if-typeietf-datastores2018-02-14urn:ietf:params:xml:ns:yang:ietf-datastoresietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesietf-ip2018-02-22urn:ietf:params:xml:ns:yang:ietf-ipietf-network-instance2019-01-21urn:ietf:params:xml:ns:yang:ietf-network-instanceietf-origin2018-02-14urn:ietf:params:xml:ns:yang:ietf-originietf-x509-cert-to-name2014-12-10urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-nameietf-yang-metadata2016-08-05urn:ietf:params:xml:ns:yang:ietf-yang-metadataietf-yang-smiv22012-06-22urn:ietf:params:xml:ns:yang:ietf-yang-smiv2ietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesopenconfig-alarm-types2018-11-21http://openconfig.net/yang/alarms/typesopenconfig-extensions2018-10-17http://openconfig.net/yang/openconfig-extopenconfig-if-types2018-11-21http://openconfig.net/yang/openconfig-if-typesopenconfig-inet-types2019-04-25http://openconfig.net/yang/types/inetopenconfig-platform-types2022-07-28http://openconfig.net/yang/platform-typesopenconfig-transport-types2023-02-08http://openconfig.net/yang/transport-typesopenconfig-types2019-04-16http://openconfig.net/yang/openconfig-typesopenconfig-yang-types2018-11-21http://openconfig.net/yang/types/yangtailf-common2022-04-12http://tail-f.com/yang/commontailf-cli-extensions2021-12-17tailf-meta-extensions2017-03-08tailf-common-monitoring2021-09-02http://tail-f.com/yang/common-monitoringtailf-common-query2017-12-15http://tail-f.com/ns/common/querytailf-netconf-forwardhttp://tail-f.com/ns/netconf/forward/1.0tailf-netconf-inactivehttp://tail-f.com/ns/netconf/inactive/1.0tailf-xsd-types2017-11-20http://tail-f.com/yang/xsd-typescommoncommonds:runningcommonds:intendedcommonds:operationalcommonc12b960e969b26974084d2b999572983c12b960e969b26974084d2b999572983flex-scale-mg-on2024-04-25http://flex-scale-project.eu/yang/flex-scale-mg-onimplementiana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashcrypt-hash-md5crypt-hash-sha-256crypt-hash-sha-512implementiana-if-type2023-01-26urn:ietf:params:xml:ns:yang:iana-if-typeimportietf-datastores2018-02-14urn:ietf:params:xml:ns:yang:ietf-datastoresimportietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesimportietf-interfaces2018-02-20urn:ietf:params:xml:ns:yang:ietf-interfacesarbitrary-namesif-mibpre-provisioningimplementietf-ip2018-02-22urn:ietf:params:xml:ns:yang:ietf-ipipv4-non-contiguous-netmasksipv6-privacy-autoconfimportietf-netconf2011-06-01urn:ietf:params:xml:ns:netconf:base:1.0rollback-on-errorvalidatewritable-runningxpathimplementietf-netconf-acm2018-02-14urn:ietf:params:xml:ns:yang:ietf-netconf-acmimplementietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringimplementietf-netconf-nmda2019-01-07urn:ietf:params:xml:ns:yang:ietf-netconf-nmdawith-defaultsimplementietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsimplementietf-netconf-partial-lock2009-10-19urn:ietf:params:xml:ns:netconf:partial-lock:1.0implementietf-netconf-with-defaults2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsimplementietf-network-instance2019-01-21urn:ietf:params:xml:ns:yang:ietf-network-instanceimportietf-origin2018-02-14urn:ietf:params:xml:ns:yang:ietf-originimportietf-restconf2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconfimplementietf-restconf-monitoring2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconf-monitoringimplementietf-subscribed-notifications2019-09-09urn:ietf:params:xml:ns:yang:ietf-subscribed-notificationsencode-xmlreplaysubtreexpathietf-subscribed-notifications-deviation2020-06-25implementietf-x509-cert-to-name2014-12-10urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-nameimportietf-yang-library2019-01-04urn:ietf:params:xml:ns:yang:ietf-yang-libraryimplementietf-yang-metadata2016-08-05urn:ietf:pa" -[2024-06-20 13:26:22,930] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:26:22,930] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:26:22,986] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:26:22,986] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:26:22,986] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:22,987] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:22,987] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:22,987] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:22,987] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:26:22,987] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:26:22,987] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:26:22,987] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:26:22,987] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:26:22,988] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:22,990] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:22,990] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:22,990] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:22,990] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:26:22,990] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:26:22,991] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:26:22,991] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:26:22,991] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:26:22,991] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:22,991] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:22,991] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:22,991] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:22,992] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:26:22,992] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:26:22,992] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:26:22,992] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:26:22,992] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:26:22,992] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:22,993] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:22,993] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:22,993] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:22,993] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: appending 16376 bytes -[2024-06-20 13:26:22,993] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: fragment = "rams:xml:ns:yang:ietf-yang-metadataimportietf-yang-patch2017-02-22urn:ietf:params:xml:ns:yang:ietf-yang-patchimplementietf-yang-push2019-09-09urn:ietf:params:xml:ns:yang:ietf-yang-pushon-changeietf-yang-push-deviationimplementietf-yang-schema-mount2019-01-14urn:ietf:params:xml:ns:yang:ietf-yang-schema-mountimplementietf-yang-smiv22012-06-22urn:ietf:params:xml:ns:yang:ietf-yang-smiv2importietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesimportopenconfig-alarm-types2018-11-21http://openconfig.net/yang/alarms/typesimportopenconfig-extensions2018-10-17http://openconfig.net/yang/openconfig-extimportopenconfig-if-ethernet2023-03-10http://openconfig.net/yang/interfaces/ethernetimplementopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipimplementopenconfig-if-types2018-11-21http://openconfig.net/yang/openconfig-if-typesimportopenconfig-inet-types2019-04-25http://openconfig.net/yang/types/inetimportopenconfig-interfaces2019-07-10http://openconfig.net/yang/interfacesimplementopenconfig-platform2022-12-20http://openconfig.net/yang/platformimplementopenconfig-platform-common2022-12-20openconfig-platform-port2023-01-19http://openconfig.net/yang/platform/portimplementopenconfig-platform-types2022-07-28http://openconfig.net/yang/platform-typesimportopenconfig-transport-types2023-02-08http://openconfig.net/yang/transport-typesimportopenconfig-types2019-04-16http://openconfig.net/yang/openconfig-typesimportopenconfig-wavelength-router2021-07-26http://openconfig.net/yang/wavelength-routerimplementopenconfig-yang-types2018-11-21http://openconfig.net/yang/types/yangimportoptical-switch2020-01-10http://www.polatis.com/yang/optical-switchimplementpolatis-switch2020-11-14http://www.polatis.com/yang/polatis-switchimplementtailf-aaa2022-04-12http://tail-f.com/ns/aaa/1.1implementtailf-acm2013-03-07http://tail-f.com/yang/acmimplementtailf-common2022-04-12http://tail-f.com/yang/commonimporttailf-cli-extensions2021-12-17tailf-meta-extensions2017-03-08tailf-common-monitoring2021-09-02http://tail-f.com/yang/common-monitoringimporttailf-common-query2017-12-15http://tail-f.com/ns/common/queryimporttailf-confd-monitoring2021-09-09http://tail-f.com/yang/confd-monitoringimplementtailf-confd-progress2020-06-29http://tail-f.com/ns/confd-progressimplementtailf-kicker2020-11-26http://tail-f.com/ns/kickerimplementtailf-last-login2019-11-21http://tail-f.com/yang/last-loginimplementtailf-netconf-extensions2021-06-18http://tail-f.com/ns/netconf/extensionsimplementtailf-netconf-forwardhttp://tail-f.com/ns/netconf/forward/1.0importtailf-netconf-inactivehttp://tail-f.com/ns/netconf/inactive/1.0importtailf-netconf-monitoring2022-04-12http://tail-f.com/yang/netconf-monitoringimplementtailf-netconf-query2017-01-06http://tail-f.com/ns/netconf/queryimplementtailf-netconf-rollback2018-01-12http://tail-f.com/ns/netconf/rollbackimplementtailf-netconf-transactionshttp://tail-f.com/ns/netconf/transactions/1.0implementtailf-netconf-with-rollback-id2020-06-25http://tail-f.com/ns/netconf/with-rollback-idimplementtailf-netconf-with-transaction-id2018-11-23http://tail-f.com/ns/netconf/with-transaction-idimplementtailf-progress2021-12-17http://tail-f.com/ns/progressimplementtailf-rollback2020-09-02http://tail-f.com/ns/rollbackimplementtailf-xsd-types2017-11-20http://tail-f.com/yang/xsd-typesimportpermit000adminadminprivateoperoperpublicadminadminany-accesspermitany-group*tailf-aaa-authenticationtailf-aaa/aaa/authentication/users/user[name='$USER']read updatepermittailf-aaa-usertailf-aaa/user[name='$USER']create read update deletepermittailf-webui-usertailf-webui/webui/data-stores/user-profile[username='$USER']create read update deletepermiturn:ietf:params:netconf:base:1.0urn:ietf:params:netconf:base:1.1urn:ietf:params:netconf:capability:writable-running:1.0urn:ietf:params:netconf:capability:rollback-on-error:1.0urn:ietf:params:netconf:capability:validate:1.0urn:ietf:params:netconf:capability:validate:1.1urn:ietf:params:netconf:capability:xpath:1.0urn:ietf:params:netconf:capability:partial-lock:1.0urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all-tagged,report-allurn:ietf:params:netconf:capability:with-operational-defaults:1.0?basic-mode=explicit&also-supported=report-all-tagged,report-allurn:ietf:params:netconf:capability:yang-library:1.0?revision=2019-01-04&module-set-id=c12b960e969b26974084d2b999572983urn:ietf:params:netconf:capability:yang-library:1.1?revision=2019-01-04&content-id=c12b960e969b26974084d2b999572983http://tail-f.com/ns/netconf/actions/1.0http://flex-scale-project.eu/yang/flex-scale-mg-on?module=flex-scale-mg-on&revision=2024-04-25http://openconfig.net/yang/alarms/types?module=openconfig-alarm-types&revision=2018-11-21http://openconfig.net/yang/interfaces?module=openconfig-interfaces&revision=2019-07-10http://openconfig.net/yang/interfaces/ethernet?module=openconfig-if-ethernet&revision=2023-03-10http://openconfig.net/yang/interfaces/ip?module=openconfig-if-ip&revision=2019-01-08http://openconfig.net/yang/openconfig-ext?module=openconfig-extensions&revision=2018-10-17http://openconfig.net/yang/openconfig-if-types?module=openconfig-if-types&revision=2018-11-21http://openconfig.net/yang/openconfig-types?module=openconfig-types&revision=2019-04-16http://openconfig.net/yang/platform?module=openconfig-platform&revision=2022-12-20http://openconfig.net/yang/platform-types?module=openconfig-platform-types&revision=2022-07-28http://openconfig.net/yang/platform/port?module=openconfig-platform-port&revision=2023-01-19http://openconfig.net/yang/transport-types?module=openconfig-transport-types&revision=2023-02-08http://openconfig.net/yang/types/inet?module=openconfig-inet-types&revision=2019-04-25http://openconfig.net/yang/types/yang?module=openconfig-yang-types&revision=2018-11-21http://openconfig.net/yang/wavelength-router?module=openconfig-wavelength-router&revision=2021-07-26http://tail-f.com/ns/aaa/1.1?module=tailf-aaa&revision=2022-04-12http://tail-f.com/ns/common/query?module=tailf-common-query&revision=2017-12-15http://tail-f.com/ns/confd-progress?module=tailf-confd-progress&revision=2020-06-29http://tail-f.com/ns/kicker?module=tailf-kicker&revision=2020-11-26http://tail-f.com/ns/netconf/query?module=tailf-netconf-query&revision=2017-01-06http://tail-f.com/yang/acm?module=tailf-acm&revision=2013-03-07http://tail-f.com/yang/common?module=tailf-common&revision=2022-04-12http://tail-f.com/yang/common-monitoring?module=tailf-common-monitoring&revision=2021-09-02http://tail-f.com/yang/confd-monitoring?module=tailf-confd-monitoring&revision=2021-09-09http://tail-f.com/yang/last-login?module=tailf-last-login&revision=2019-11-21http://tail-f.com/yang/netconf-monitoring?module=tailf-netconf-monitoring&revision=2022-04-12http://tail-f.com/yang/xsd-types?module=tailf-xsd-types&revision=2017-11-20http://www.polatis.com/yang/optical-switch?module=optical-switch&revision=2020-01-10http://www.polatis.com/yang/polatis-switch?module=polatis-switch&revision=2020-11-14urn:ietf:params:xml:ns:netconf:base:1.0?module=ietf-netconf&revision=2011-06-01&features=writable-running,rollback-on-error,validate,xpathurn:ietf:params:xml:ns:netconf:partial-lock:1.0?module=ietf-netconf-partial-lock&revision=2009-10-19urn:ietf:params:xml:ns:yang:iana-crypt-hash?module=iana-crypt-hash&revision=2014-08-06&features=crypt-hash-sha-512,crypt-hash-sha-256,crypt-hash-md5urn:ietf:params:xml:ns:yang:iana-if-type?module=iana-if-type&revision=2023-01-26urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&revision=2013-07-15urn:ietf:params:xml:ns:yang:ietf-netconf-acm?module=ietf-netconf-acm&revision=2018-02-14urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&revision=2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-notifications?module=ietf-netconf-notifications&revision=2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?module=ietf-netconf-with-defaults&revision=2011-06-01urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?module=ietf-restconf-monitoring&revision=2017-01-26urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name?module=ietf-x509-cert-to-name&revision=2014-12-10urn:ietf:params:xml:ns:yang:ietf-yang-metadata?module=ietf-yang-metadata&revision=2016-08-05urn:ietf:params:xml:ns:yang:ietf-yang-smiv2?module=ietf-yang-smiv2&revision=2012-06-22urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&revision=2013-07-15running1717-711273-156835validflex-scale-mg-on2024-04-25yang26runningread2024-06-06T22:01:09+00:0003210000WBSS-1WBSS-1falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-1-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX1MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-10WBSS-10falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-5-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX10MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-11WBSS-11falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMO" -[2024-06-20 13:26:23,039] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:26:23,040] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:26:23,103] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:26:23,104] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:26:23,104] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:23,104] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:23,104] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:23,104] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:23,104] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:26:23,105] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:26:23,105] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:26:23,105] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:26:23,105] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:26:23,105] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:23,105] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:23,105] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:23,106] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:23,106] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:26:23,106] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:26:23,106] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:26:23,106] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:26:23,106] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:26:23,106] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:23,107] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:23,107] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:23,107] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:23,107] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:26:23,107] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:26:23,107] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:26:23,108] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:26:23,108] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:26:23,108] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:23,108] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:23,108] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:23,108] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:23,109] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: appending 16376 bytes -[2024-06-20 13:26:23,109] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: fragment = "N_PORTport-6-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX11MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-12WBSS-12falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-6-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX12MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-13WBSS-13falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-7-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX13MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-14WBSS-14falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-7-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX14MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-15WBSS-15falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-8-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX15MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-16WBSS-16falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-8-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX16MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-17WBSS-17falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-9-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX17MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-18WBSS-18falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-9-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX18MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-19WBSS-19falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-10-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX19MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-2WBSS-2falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-1-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX2MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-20WBSS-20falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-10-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX20MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-21WBSS-21falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-11-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX21MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-22WBSS-22falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-11-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX22MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-23WBSS-23falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-12-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX23MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-24WBSS-24falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-12-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX24MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-25WBSS-25falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-13-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX25MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-26WBSS-26falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-13-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX26MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-27WBSS-27falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-14-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX27MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-28WBSS-28falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-14-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX28MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-29WBSS-29falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-15-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX29MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-3WBSS-3falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-2-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX3MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-30WBSS-30falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-15-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX30MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-31WBSS-31falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-16-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX31MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-32WBSS-32falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-16-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX32MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-4WBSS-4falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-2-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX4MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-5WBSS-5falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-3-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX5MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-6WBSS-6falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-3-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX6MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-7WBSS-7falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-4-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX7MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-8WBSS-8falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-4-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX8MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-9WBSS-9falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-5-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX9MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWSS-1WSS-1falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WSS_MODULEMG_ON_WSS_BANDMG_ON_WSS_BANDC-BANDMG_ON_WSS_COMMON_PORTMG_ON_WSS_COMMON_PORT273MG_ON_WSS_INDEXMG_ON_WSS_INDEX1MG_ON_WSS_LOWER_FREQMG_ON_WSS_LOWER_FREQ191560677MG_ON_WSS_NUM_PORTSMG_ON_WSS_NUM_PORTS9MG_ON_WSS_TYPEMG_ON_WSS_TYPEDEMUXMG_ON_WSS_UPPER_FREQMG_ON_WSS_UPPER_FREQ195942783WSS-10WSS-10falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WSS_MODULEMG_ON_WSS_BANDMG_ON_WSS_BANDS-BANDMG_ON_WSS_COMMON_PORTMG_ON_WSS_COMMON_PORT282MG_ON_WSS_INDEXMG_ON_WSS_INDEX10MG_ON_WSS_LOWER_FREQMG_ON_WSS_LOWER_FREQ195942784MG_ON_WSS_NUM_PORTSMG_ON_WSS_NUM_PORTS9MG_ON_WSS_TYPEMG_ON_WSS_TYPEDEMUXMG_ON_WSS_UPPER_FREQMG_ON_WSS_UPPER_FREQ205337300WSS-11WSS-11falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WSS_MODULEMG_ON_WSS_BANDMG_ON_WSS_BANDS-BANDMG_ON_WSS_COMMON_PORTMG_ON_WSS_COMMON_PORT91MG_ON_WSS_INDEXMG_ON_WSS_INDEX11MG_ON_WSS_LOWER_FREQMG_ON_WSS_LOWER_FREQ195942784MG_ON_WSS_NUM_PORTSMG_ON_WSS_NUM_PORTS9MG_ON_WSS_TYPEMG_ON_WSS_TYPEMUXMG_ON_WSS_UPPER_FREQMG_ON_WSS_UPPER_FREQ205337300WSS-12WSS-12falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WSS_MODULEMG_ON_WSS_BANDMG_ON_WSS_BANDS-BANDMG_ON_WSS_COMMON_PORTMG_ON_WSS_COMMON_PORT92MG_ON_WSS_INDEXMG_ON_WSS_INDEX12MG_ON_WSS_LOWER_FREQMG_ON_WSS_LOWER_FREQ195942784MG_ON_WSS_NUM_PORTSMG_ON_WSS_NUM_PORTS9MG_ON_WSS_TYPEMG_ON_WSS_TYPEMUXMG_ON_WSS_UPPER_FREQMG_ON_WSS_UPPER_FREQ205337300WSS-2WSS-2falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WSS_MODULEMG_ON_WSS_BANDMG_ON_WSS_BANDC-BANDMG_ON_WSS_COMMON_PORTMG_ON_WSS_COMMON_PORT274MG_ON_WSS_INDEXMG_ON_WSS_INDEX2MG_ON_WSS_LOWER_FREQMG_ON_WSS_LOWER_FREQ191560677MG_ON_WSS_NUM_PORTSMG_ON_WSS_NUM_PORTS9MG_ON_WSS_TYPEMG_ON_WSS_TYPEDEMUXMG_ON_WSS_UPPER_FREQMG_ON_WSS_UPPER_FREQ195942783WSS-3WSS-3falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WSS_MODULEMG_ON_WSS_BANDMG_ON_WSS_BANDC-BANDMG_ON_WSS_COMMON_PORTMG_ON_WSS_COMMON_PORT83MG_ON_WSS_INDEXMG_ON_WSS_INDEX3MG_ON_WSS_LOWER_FREQMG_ON_WSS_LOWER_FREQ191560677MG_ON_WSS_NUM_PORTSMG_ON_WSS_NUM_PORTS9MG_ON_WSS_TYPEMG_ON_WSS_TYPEMUXMG_ON_WSS_UPPER_FREQMG_ON_WSS_UPPER_FREQ195942783WSS-4WSS-4falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPE11C_BAND192006250192206250ENABLED1C_BAND192006250192206250ENABLEDUPADDADDport-1-outport-1-outadmin9000100$1$LWKnq6Bt$b.uVhMiISHVTC6CXfnfrC0/var/confd/homes/admin/.ssh/var/confd/homes/adminoper9000100$1$im2jm9f9$kg2pTFGHnnHw2QpT8wU1x./var/confd/homes/oper/.ssh/var/confd/homes/operprivate9000100$1$FV0aZKYX$WCQ/jCpTiyjJIbnnTtnwG./var/confd/homes/private/.ssh/var/confd/homes/privatepublic9000100$1$drWaFr7x$uQSEVNpu/fw2VpBxR2hrP0/var/confd/homes/public/.ssh/var/confd/homes/public0\h> 15\h# exec0actionautowizardenableexithelpstartup15configure7.8.31truestartedflex-scale-mg-on2024-04-25http://flex-scale-project.eu/yang/flex-scale-mg-onfsmgoniana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashianachiana-if-type2023-01-26urn:ietf:params:xml:ns:yang:iana-if-typeianaiftietf-datastores2018-02-14urn:ietf:params:xml:ns:yang:ietf-datastoresdsietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesinetietf-interfaces2018-02-20urn:ietf:params:xml:ns:yang:ietf-interfacesifietf-ip2018-02-22urn:ietf:params:xml:ns:yang:ietf-iptfipietf-netconf2011-06-01urn:ietf:params:xml:ns:netconf:base:1.0ncnetconfietf-netconf-acm2018-02-14urn:ietf:params:xml:ns:yang:ietf-netconf-acmnacmietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringncmietf-netconf-nmda2019-01-07urn:ietf:params:xml:ns:yang:ietf-netconf-nmdancdsnetconfietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsncnietf-netconf-partial-lock2009-10-19urn:ietf:params:xml:ns:netconf:partial-lock:1.0plietf-netconf-with-defaults2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsncwdnetconfietf-network-instance2019-01-21urn:ietf:params:xml:ns:yang:ietf-network-instancetfniietf-origin2018-02-14urn:ietf:params:xml:ns:yang:ietf-originorietf-restconf2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconfrcrestnetconfietf-restconf-monitoring2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconf-monitoringrcmonietf-subscribed-notifications2019-09-09urn:ietf:params:xml:ns:yang:ietf-subscribed-notificationssnnetconfietf-x509-cert-to-name2014-12-10urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-namex509c2nietf-yang-library2019-01-04urn:ietf:params:xml:ns:yang:ietf-yang-libraryyanglibnetconfrestietf-yang-metadata2016-08-05urn:ietf:params:xml:ns:yang:ietf-yang-metadatamdietf-yang-patch2017-02-22urn:ietf:params:xml:ns:yang:ietf-yang-patchypatchrestnetconfietf-yang-push2019-09-09urn:ietf:params:xml:ns:yang:ietf-yang-pushypnetconfietf-yang-schema-mount2019-01-14urn:ietf:params:xml:ns:yang:ietf-yang-schema-mountyangmntietf-yang-smiv22012-06-22urn:ietf:params:xml:ns:yang:ietf-yang-smiv2smiv2ietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesyangnetconf_netmodurn:ietf:params:xml:ns:netmod:notificationnmnetconfopenconfig-alarm-types2018-11-21http://openconfig.net/yang/alarms/typesoc-alarm-typesopenconfig-extensions2018-10-17http://openconfig.net/yang/openconfig-extoc-extopenconfig-if-ethernet2023-03-10http://openconfig.net/yang/interfaces/ethernetoc-ethopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipoc-ipopenconfig-if-types2018-11-21http://openconfig.net/yang/openconfig-if-typesoc-iftopenconfig-inet-types2019-04-25http://openconfig.net/yang/types/inetoc-inetopenconfig-interfaces2019-07-10http://openconfig.net/yang/interfacesoc-ifopenconfig-platform2022-12-20http://openconfig.net/yang/platformoc-platformopenconfig-platform-port2023-01-19http://openconfig.net/yang/platform/portoc-portopenconfig-platform-types2022-07-28http://openconfig.net/yang/platform-typesoc-platform-typesopenconfig-transport-types2023-02-08http://openconfig.net/yang/transport-typesoc-opt-typesopenconfig-types2019-04-16http://openconfig.net/yang/openconfig-typesoc-typesopenconfig-wavelength-router2021-07-26http://openconfig.net/yang/wavelength-routeroc-wave-routeropenconfig-yang-types2018-11-21http://openconfig.net/yang/types/yangoc-yangoptical-switch2020-01-10http://www.polatis.com/yang/optical-switchopswpolatis-switch2020-11-14http://www.polatis.com/yang/polatis-switchpltstailf-aaa2022-04-12http://tail-f.com/ns/aaa/1.1aaatailf-acm2013-03-07http://tail-f.com/yang/acmtacmtailf-common2022-04-12http://tail-f.com/yang/commontailftailf-common-monitoring2021-09-02http://tail-f.com/yang/common-monitoringtfcgtailf-common-query2017-12-15http://tail-f.com/ns/common/querytfcqtailf-confd-monitoring2021-09-09http://tail-f.com/yang/confd-monitoringtfcmtailf-confd-progress2020-06-29http://tail-" -[2024-06-20 13:26:25,325] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:26:25,325] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:26:25,378] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:26:25,378] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:26:25,378] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:25,378] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=7 -[2024-06-20 13:26:25,378] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:25,378] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 6484 bytes -[2024-06-20 13:26:25,379] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:26:25,379] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:26:25,379] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -[2024-06-20 13:26:25,379] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: starting -[2024-06-20 13:26:25,379] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: working with buffer of 6495 bytes -[2024-06-20 13:26:25,379] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:25,379] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=7 -[2024-06-20 13:26:25,379] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:25,379] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: chunk size 6484 bytes -[2024-06-20 13:26:25,379] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: appending 6484 bytes -[2024-06-20 13:26:25,380] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: fragment = "f.com/ns/confd-progressconfd-progresstailf-kicker2020-11-26http://tail-f.com/ns/kickerkickertailf-last-login2019-11-21http://tail-f.com/yang/last-loginlasttailf-netconf-extensions2021-06-18http://tail-f.com/ns/netconf/extensionstfncenetconftailf-netconf-forwardhttp://tail-f.com/ns/netconf/forward/1.0fwdnetconftailf-netconf-inactivehttp://tail-f.com/ns/netconf/inactive/1.0innetconftailf-netconf-monitoring2022-04-12http://tail-f.com/yang/netconf-monitoringtncmtailf-netconf-query2017-01-06http://tail-f.com/ns/netconf/querytfncqnetconftailf-netconf-rollback2018-01-12http://tail-f.com/ns/netconf/rollbacknetconf-rollbacknetconftailf-netconf-transactionshttp://tail-f.com/ns/netconf/transactions/1.0trnetconftailf-netconf-with-rollback-id2020-06-25http://tail-f.com/ns/netconf/with-rollback-idwrbidnetconftailf-netconf-with-transaction-id2018-11-23http://tail-f.com/ns/netconf/with-transaction-idwtxidnetconftailf-progress2021-12-17http://tail-f.com/ns/progressprogresstailf-rollback2020-09-02http://tail-f.com/ns/rollbackrollbackrestnetconfmaapitailf-xsd-types2017-11-20http://tail-f.com/yang/xsd-typesxs0.0.0.020220.0.0.02024fiberscp0fsmgon_daemonnum_instancesremovecreateset_elemget_nextget_elemmediachannelscp0fsmgon_daemonnum_instancesremovecreateset_elemget_nextget_elemopticalbandscp0fsmgon_daemonnum_instancesremovecreateset_elemget_nextget_elemvp10fsmgon_daemonvp20fsmgon_daemonrunning1717-711273-156835./confd-cdb/A.cdb35577915512390false0falseoperational22./confd-cdb/O.cdb42108falseadmin2024-06-20T13:24:30.493779+00:00066778e1455b10.30.2.208ncm:netconf-ssh02024-06-06T23:12:41.957668+00:00066778e1455b10.30.2.206ncm:netconf-ssh02024-06-06T22:01:13.861449+00:00066778e1455b127.0.0.1ncm:netconf-ssh00rollback010003admin2024-06-20 13:26:22netconf1rollback110002admin2024-06-07 08:55:35netconf2rollback210001system2024-06-06 22:01:13system3rollback310000system2024-06-06 22:01:11system" -[2024-06-20 13:26:25,380] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: matching from 6491 bytes from start of buffer -[2024-06-20 13:26:25,380] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: regular expression start=0, end=4 -[2024-06-20 13:26:25,380] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: found end of message delimiter -[2024-06-20 13:26:25,381] DEBUG:ncclient.operations.rpc:[host 172.17.254.21 session-id 21] Delivering to -[2024-06-20 13:26:25,381] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: saving back rest of message after 6495 bytes, original size 6495 -[2024-06-20 13:26:25,382] DEBUG:ncclient.transport.parser:[host 172.17.254.21 session-id 21] _parse11: ending -int-connection-91 -int-connection-92 -int-connection-93 -int-connection-94 -int-connection-95 -int-connection-96 -int-connection-97 -int-connection-98 -int-connection-99 -port-1-in -port-1-out -port-10-in -port-10-out -port-11-in -port-11-out -port-12-in -port-12-out -port-13-in -port-13-out -port-14-in -port-14-out -port-15-in -port-15-out -port-16-in -port-16-out -port-17-in -port-17-out -port-18-in -port-18-out -port-19-in -port-19-out -port-2-in -port-2-out -port-20-in -port-20-out -port-21-in -port-21-out -port-22-in -port-22-out -port-23-in -port-23-out -port-24-in -port-24-out -port-25-in -port-25-out -port-26-in -port-26-out -port-27-in -port-27-out -port-28-in -port-28-out -port-29-in -port-29-out -port-3-in -port-3-out -port-30-in -port-30-out -port-31-in -port-31-out -port-32-in -port-32-out -port-33-in -port-33-out -port-34-in -port-34-out -port-35-in -port-35-out -port-36-in -port-36-out -port-37-in -port-37-out -port-38-in -port-38-out -port-39-in -port-39-out -port-4-in -port-4-out -port-40-in -port-40-out -port-41-in -port-41-out -port-42-in -port-42-out -port-43-in -port-43-out -port-44-in -port-44-out -port-45-in -port-45-out -port-46-in -port-46-out -port-47-in -port-47-out -port-48-in -port-48-out -port-5-in -port-5-out -port-6-in -port-6-out -port-7-in -port-7-out -port-8-in -port-8-out -port-9-in -port-9-out -component [, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -WBSS-1 -WBSS-10 -WBSS-11 -WBSS-12 -WBSS-13 -WBSS-14 -WBSS-15 -WBSS-16 -WBSS-17 -WBSS-18 -WBSS-19 -WBSS-2 -WBSS-20 -WBSS-21 -WBSS-22 -WBSS-23 -WBSS-24 -WBSS-25 -WBSS-26 -WBSS-27 -WBSS-28 -WBSS-29 -WBSS-3 -WBSS-30 -WBSS-31 -WBSS-32 -WBSS-4 -WBSS-5 -WBSS-6 -WBSS-7 -WBSS-8 -WBSS-9 -WSS-1 -WSS-10 -WSS-11 -WSS-12 -WSS-2 -WSS-3 -WSS-4 -WSS-5 -WSS-6 -WSS-7 -WSS-8 -WSS-9 -int-connection-1 -int-connection-10 -int-connection-100 -int-connection-101 -int-connection-102 -int-connection-103 -int-connection-104 -int-connection-105 -int-connection-106 -int-connection-107 -int-connection-108 -int-connection-109 -int-connection-11 -int-connection-110 -int-connection-111 -int-connection-112 -int-connection-113 -int-connection-114 -int-connection-115 -int-connection-116 -int-connection-117 -int-connection-118 -int-connection-119 -int-connection-12 -int-connection-120 -int-connection-121 -int-connection-122 -int-connection-123 -int-connection-124 -int-connection-125 -int-connection-126 -int-connection-127 -int-connection-128 -int-connection-129 -int-connection-13 -int-connection-130 -int-connection-131 -int-connection-132 -int-connection-133 -int-connection-134 -int-connection-135 -int-connection-136 -int-connection-137 -int-connection-138 -int-connection-139 -int-connection-14 -int-connection-140 -int-connection-141 -int-connection-142 -int-connection-143 -int-connection-144 -int-connection-145 -int-connection-146 -int-connection-147 -int-connection-148 -int-connection-149 -int-connection-15 -int-connection-150 -int-connection-151 -int-connection-152 -int-connection-153 -int-connection-154 -int-connection-155 -int-connection-156 -int-connection-157 -int-connection-158 -int-connection-159 -int-connection-16 -int-connection-160 -int-connection-161 -int-connection-162 -int-connection-163 -int-connection-164 -int-connection-165 -int-connection-166 -int-connection-167 -int-connection-168 -int-connection-169 -int-connection-17 -int-connection-170 -int-connection-171 -int-connection-172 -int-connection-173 -int-connection-174 -int-connection-175 -int-connection-176 -int-connection-177 -int-connection-178 -int-connection-179 -int-connection-18 -int-connection-180 -int-connection-181 -int-connection-182 -int-connection-183 -int-connection-184 -int-connection-185 -int-connection-186 -int-connection-187 -int-connection-188 -int-connection-189 -int-connection-19 -int-connection-190 -int-connection-191 -int-connection-192 -int-connection-193 -int-connection-194 -int-connection-195 -int-connection-196 -int-connection-197 -int-connection-198 -int-connection-199 -int-connection-2 -int-connection-20 -int-connection-200 -int-connection-201 -int-connection-202 -int-connection-203 -int-connection-204 -int-connection-205 -int-connection-206 -int-connection-207 -int-connection-208 -int-connection-209 -int-connection-21 -int-connection-210 -int-connection-211 -int-connection-212 -int-connection-213 -int-connection-214 -int-connection-215 -int-connection-216 -int-connection-217 -int-connection-218 -int-connection-219 -int-connection-22 -int-connection-220 -int-connection-221 -int-connection-222 -int-connection-223 -int-connection-224 -int-connection-225 -int-connection-226 -int-connection-227 -int-connection-228 -int-connection-229 -int-connection-23 -int-connection-230 -int-connection-231 -int-connection-232 -int-connection-233 -int-connection-234 -int-connection-235 -int-connection-236 -int-connection-237 -int-connection-238 -int-connection-239 -int-connection-24 -int-connection-240 -int-connection-241 -int-connection-242 -int-connection-243 -int-connection-244 -int-connection-245 -int-connection-246 -int-connection-247 -int-connection-248 -int-connection-249 -int-connection-25 -int-connection-250 -int-connection-251 -int-connection-252 -int-connection-253 -int-connection-254 -int-connection-255 -int-connection-256 -int-connection-257 -int-connection-258 -int-connection-259 -int-connection-26 -int-connection-260 -int-connection-261 -int-connection-262 -int-connection-263 -int-connection-264 -int-connection-265 -int-connection-266 -int-connection-267 -int-connection-268 -int-connection-269 -int-connection-27 -int-connection-270 -int-connection-271 -int-connection-272 -int-connection-273 -int-connection-274 -int-connection-275 -int-connection-276 -int-connection-277 -int-connection-278 -int-connection-279 -int-connection-28 -int-connection-280 -int-connection-281 -int-connection-282 -int-connection-283 -int-connection-284 -int-connection-285 -int-connection-286 -int-connection-287 -int-connection-288 -int-connection-289 -int-connection-29 -int-connection-290 -int-connection-291 -int-connection-292 -int-connection-293 -int-connection-294 -int-connection-295 -int-connection-296 -int-connection-297 -int-connection-298 -int-connection-299 -int-connection-3 -int-connection-30 -int-connection-300 -int-connection-301 -int-connection-302 -int-connection-303 -int-connection-304 -int-connection-305 -int-connection-306 -int-connection-307 -int-connection-308 -int-connection-309 -int-connection-31 -int-connection-310 -int-connection-311 -int-connection-312 -int-connection-313 -int-connection-314 -int-connection-315 -int-connection-316 -int-connection-317 -int-connection-318 -int-connection-319 -int-connection-32 -int-connection-320 -int-connection-321 -int-connection-322 -int-connection-323 -int-connection-324 -int-connection-325 -int-connection-326 -int-connection-327 -int-connection-328 -int-connection-329 -int-connection-33 -int-connection-330 -int-connection-331 -int-connection-332 -int-connection-333 -int-connection-334 -int-connection-335 -int-connection-336 -int-connection-337 -int-connection-338 -int-connection-339 -int-connection-34 -int-connection-340 -int-connection-341 -int-connection-342 -int-connection-343 -int-connection-344 -int-connection-345 -int-connection-346 -int-connection-347 -int-connection-348 -int-connection-349 -int-connection-35 -int-connection-350 -int-connection-351 -int-connection-352 -int-connection-353 -int-connection-354 -int-connection-355 -int-connection-356 -int-connection-357 -int-connection-358 -int-connection-359 -int-connection-36 -int-connection-360 -int-connection-361 -int-connection-362 -int-connection-363 -int-connection-364 -int-connection-365 -int-connection-366 -int-connection-367 -int-connection-368 -int-connection-369 -int-connection-37 -int-connection-370 -int-connection-371 -int-connection-372 -int-connection-373 -int-connection-374 -int-connection-375 -int-connection-376 -int-connection-377 -int-connection-378 -int-connection-379 -int-connection-38 -int-connection-380 -int-connection-381 -int-connection-382 -int-connection-383 -int-connection-384 -int-connection-385 -int-connection-386 -int-connection-387 -int-connection-388 -int-connection-389 -int-connection-39 -int-connection-390 -int-connection-391 -int-connection-392 -int-connection-393 -int-connection-394 -int-connection-395 -int-connection-396 -int-connection-397 -int-connection-398 -int-connection-399 -int-connection-4 -int-connection-40 -int-connection-400 -int-connection-401 -int-connection-402 -int-connection-403 -int-connection-404 -int-connection-405 -int-connection-406 -int-connection-407 -int-connection-408 -int-connection-409 -int-connection-41 -int-connection-410 -int-connection-411 -int-connection-412 -int-connection-413 -int-connection-414 -int-connection-415 -int-connection-416 -int-connection-417 -int-connection-418 -int-connection-419 -int-connection-42 -int-connection-420 -int-connection-421 -int-connection-422 -int-connection-423 -int-connection-424 -int-connection-425 -int-connection-426 -int-connection-427 -int-connection-428 -int-connection-43 -int-connection-44 -int-connection-45 -int-connection-46 -int-connection-47 -int-connection-48 -int-connection-49 -int-connection-5 -int-connection-50 -int-connection-51 -int-connection-52 -int-connection-53 -int-connection-54 -int-connection-55 -int-connection-56 -int-connection-57 -int-connection-58 -int-connection-59 -int-connection-6 -int-connection-60 -int-connection-61 -int-connection-62 -int-connection-63 -int-connection-64 -int-connection-65 -int-connection-66 -int-connection-67 -int-connection-68 -int-connection-69 -int-connection-7 -int-connection-70 -int-connection-71 -int-connection-72 -int-connection-73 -int-connection-74 -int-connection-75 -int-connection-76 -int-connection-77 -int-connection-78 -int-connection-79 -int-connection-8 -int-connection-80 -int-connection-81 -int-connection-82 -int-connection-83 -int-connection-84 -int-connection-85 -int-connection-86 -int-connection-87 -int-connection-88 -int-connection-89 -int-connection-9 -int-connection-90 -[2024-06-20 13:26:25,477] INFO:root:parameters {} -[2024-06-20 13:26:25,478] DEBUG:context.client.ContextClient:SetOpticalConfig request: {"config": "{}", "device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}} -[2024-06-20 13:26:25,517] DEBUG:context.client.ContextClient:SetOpticalConfig result: {"opticalconfig_uuid": ""} -[2024-06-20 13:26:25,518] DEBUG:device.service.OpenConfigServicer:ConfigureOpticalDevice reply: {} -[2024-06-20 13:26:25,545] DEBUG:device.service.OpenConfigServicer:ConfigureOpticalDevice request: {"config": "{\"channels\": [], \"transceivers\": {\"transceiver\": []}, \"interfaces\": {\"interface\": \"\"}, \"channel_namespace\": null, \"endpoints\": [], \"device_name\": \"R2\", \"new_config\": {\"band_type\": \"C_BAND\", \"low-freq\": 192006250, \"up-freq\": 192206250, \"frequency\": 192106250, \"band\": 200000, \"ob_id\": 1}, \"is_opticalband\": true, \"flow\": [[\"bcfb768c-e8fb-5e0b-9559-821d120b5410\", \"0\"]]}", "device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "opticalconfig_id": {"opticalconfig_uuid": "338f26c4-1443-5e19-b7ea-6d395a3f2366"}} -[2024-06-20 13:26:25,546] INFO:device.service.OpenConfigServicer: config from openconfigservicer {'channels': [], 'transceivers': {'transceiver': []}, 'interfaces': {'interface': ''}, 'channel_namespace': None, 'endpoints': [], 'device_name': 'R2', 'new_config': {'band_type': 'C_BAND', 'low-freq': 192006250, 'up-freq': 192206250, 'frequency': 192106250, 'band': 200000, 'ob_id': 1}, 'is_opticalband': True, 'flow': [['bcfb768c-e8fb-5e0b-9559-821d120b5410', '0']]} -[2024-06-20 13:26:25,546] DEBUG:context.client.ContextClient:Creating channel to 10.152.183.195:1010... -[2024-06-20 13:26:25,547] DEBUG:context.client.ContextClient:Channel created -[2024-06-20 13:26:25,547] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}]}, "include_components": false, "include_config_rules": false, "include_endpoints": true} -[2024-06-20 13:26:25,595] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": [{"components": [], "controller_id": {}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "053a62f6-2760-562a-b285-15a9b159c2c5"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-46-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "0a9b56db-32f8-5c60-83af-7ceaa39c618e"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-2-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "0d103312-7c8c-5e8a-980f-f6863b42d0d3"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-10-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "0ee5d330-9700-5684-92c1-bcb6c4c8a3bc"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-8-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "115ed444-0128-53f1-aa1a-ce8129a55f67"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-9-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "12ea85fc-4388-59c1-9cb9-b480ee06e01a"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-45-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "14bb0e42-db22-5dfb-b618-4caa72a8e8cc"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-42-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "18a7b3b1-d4a3-590a-a5a9-b7db5293ac61"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-48-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "19041fc0-6807-5b8f-9b26-7e7eed556980"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-6-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "1950275c-e218-5190-8ca5-6a2228c4a87b"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-10-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "21db5850-b53e-57de-ba2a-bf578bffb1ea"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-46-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "261a53b4-d257-5f35-bf5b-b2f975d7d2ed"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-35-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "266dc3a1-0892-5454-a917-3fa62190c6c2"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-8-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "2e4f4523-3fb0-5704-9a47-1cf467d70bc8"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-13-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "2f6d500b-2407-516f-9468-4f059b218f4b"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-43-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "3062d499-cf08-5f02-94c6-8906ebdf756b"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-41-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "31060d00-8617-55c3-92f2-f42b876478c1"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-4-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "399d3645-5565-502b-bfc8-3ea9cf68a83b"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-36-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "3ba5f6db-ffde-59d9-a7ae-af06e96a9674"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-40-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "3e17084e-d2b4-5cb2-b31a-7f6d80feb60e"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-5-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "3e74aa2a-cf0d-51ce-b406-dcf1b96ae5d5"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-11-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "3efedbc2-7363-53cf-a0b9-fc4a2bcbd245"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-1-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "48a917ad-12d8-5ec4-aaab-84b35337abfe"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-14-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "5047aede-f784-58ab-b80a-454386a43c64"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-12-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "50b41e11-e2f7-5720-b2b0-bc2a43eb7b95"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-38-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "5aeb719f-e322-5185-be08-a2f837992a4f"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-44-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "5cfa4f91-cbce-5721-b612-e6b5eaa76721"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-35-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "5d5cb9d0-e675-55b7-8a76-5649f4c95c81"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-39-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "5dd55ad7-b980-562e-b579-d724a3655d31"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-34-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "5eba7909-6f11-5154-b6e9-e2a2bbc75bb0"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-48-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "625560d9-4809-5f40-b3cf-23ec59efe71a"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-38-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "630a400f-dd0c-51d0-8049-c281881190b0"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-3-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "6a2d629b-9dfe-58af-bc5b-96277a127512"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-41-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "6e621543-9616-57bf-806c-2564047f234b"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-15-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "6e9b83ef-b9a4-5898-9495-38c45635aac7"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-34-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "72fabf2f-0121-5198-a4bf-ab82034d7da9"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-16-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "743daf39-41eb-500c-b61b-d7b473249022"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-47-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "76d3c064-04eb-5edf-95ac-645cb6348b61"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-33-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "77d8c722-2ad2-5a7c-8669-fb900f1166e1"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-45-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "8657516b-33f4-5d1c-839d-51acbc6fb93d"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-36-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "86f6b3e0-3e7e-5db2-bb71-6e05229c97eb"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-3-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "922a952b-50b6-5985-bf44-3afeb53f396e"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-44-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "94ae7ec2-0cba-55ea-a36f-2143b205ed64"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-43-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "994c45dd-b2b8-53c4-957d-4834f45e0e1f"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-13-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "a08ab669-238c-5e9e-9e86-780d39111595"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-40-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "a751a510-e108-5819-bafb-3d3e6881b4eb"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-12-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "b22d517e-2d36-518b-9e3e-c75c625f06ef"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-7-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "b3ab2b45-ed47-5c14-801d-b1104dd9d619"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-6-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "b71a78da-69db-5260-8a15-8de81d02a20d"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-9-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "bc82f789-cbb1-5f3e-b989-88dab185ea0d"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-37-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "bcfb768c-e8fb-5e0b-9559-821d120b5410"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-1-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "bd08db44-134e-5902-bb24-b2453bf21db4"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-5-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "be1b3bb0-8aed-569a-be91-e888b0c0985d"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-33-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "c027a391-2cf6-5b96-bba3-051e01c63f43"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-7-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "c2d5ac50-2faf-5608-a6ae-7c023bceb289"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-39-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "c4568f02-d291-5c95-b9bc-846278862db9"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-4-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "c559fb60-6495-5992-b339-ac7a590e337c"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-16-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "cace07d7-0ca3-51be-bef1-b58db0ccba6f"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-2-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "caf865b8-df54-5601-9163-1cdbe8f7a599"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-47-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "cc5064c4-bc42-5c50-b5b0-9b2ad1405bd8"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-42-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "e650eba7-019d-5c4f-9d75-14d47a711f2f"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-14-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "e7566eac-9fa0-5137-929a-7cf2485babea"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-37-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "ea7812b2-db7c-5504-a415-6b4299ae090f"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-11-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "fd4d5404-baf3-5f5f-b7b7-a825c90e5f2a"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-15-in"}], "device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-roadm", "name": "R2"}]} -[2024-06-20 13:26:25,597] INFO:device.service.OpenConfigServicer:device is device_id { - device_uuid { - uuid: "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6" - } -} -name: "R2" -device_type: "optical-roadm" -device_operational_status: DEVICEOPERATIONALSTATUS_ENABLED -device_drivers: DEVICEDRIVER_OC -device_endpoints { - endpoint_id { - 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: "053a62f6-2760-562a-b285-15a9b159c2c5" - } - } - name: "port-46-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0a9b56db-32f8-5c60-83af-7ceaa39c618e" - } - } - name: "port-2-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0d103312-7c8c-5e8a-980f-f6863b42d0d3" - } - } - name: "port-10-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0ee5d330-9700-5684-92c1-bcb6c4c8a3bc" - } - } - name: "port-8-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "115ed444-0128-53f1-aa1a-ce8129a55f67" - } - } - name: "port-9-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "12ea85fc-4388-59c1-9cb9-b480ee06e01a" - } - } - name: "port-45-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "14bb0e42-db22-5dfb-b618-4caa72a8e8cc" - } - } - name: "port-42-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "18a7b3b1-d4a3-590a-a5a9-b7db5293ac61" - } - } - name: "port-48-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "19041fc0-6807-5b8f-9b26-7e7eed556980" - } - } - name: "port-6-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "1950275c-e218-5190-8ca5-6a2228c4a87b" - } - } - name: "port-10-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "21db5850-b53e-57de-ba2a-bf578bffb1ea" - } - } - name: "port-46-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "261a53b4-d257-5f35-bf5b-b2f975d7d2ed" - } - } - name: "port-35-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "266dc3a1-0892-5454-a917-3fa62190c6c2" - } - } - name: "port-8-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "2e4f4523-3fb0-5704-9a47-1cf467d70bc8" - } - } - name: "port-13-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "2f6d500b-2407-516f-9468-4f059b218f4b" - } - } - name: "port-43-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3062d499-cf08-5f02-94c6-8906ebdf756b" - } - } - name: "port-41-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "31060d00-8617-55c3-92f2-f42b876478c1" - } - } - name: "port-4-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "399d3645-5565-502b-bfc8-3ea9cf68a83b" - } - } - name: "port-36-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3ba5f6db-ffde-59d9-a7ae-af06e96a9674" - } - } - name: "port-40-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3e17084e-d2b4-5cb2-b31a-7f6d80feb60e" - } - } - name: "port-5-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3e74aa2a-cf0d-51ce-b406-dcf1b96ae5d5" - } - } - name: "port-11-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3efedbc2-7363-53cf-a0b9-fc4a2bcbd245" - } - } - name: "port-1-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "48a917ad-12d8-5ec4-aaab-84b35337abfe" - } - } - name: "port-14-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5047aede-f784-58ab-b80a-454386a43c64" - } - } - name: "port-12-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "50b41e11-e2f7-5720-b2b0-bc2a43eb7b95" - } - } - name: "port-38-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5aeb719f-e322-5185-be08-a2f837992a4f" - } - } - name: "port-44-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5cfa4f91-cbce-5721-b612-e6b5eaa76721" - } - } - name: "port-35-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5d5cb9d0-e675-55b7-8a76-5649f4c95c81" - } - } - name: "port-39-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5dd55ad7-b980-562e-b579-d724a3655d31" - } - } - name: "port-34-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5eba7909-6f11-5154-b6e9-e2a2bbc75bb0" - } - } - name: "port-48-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "625560d9-4809-5f40-b3cf-23ec59efe71a" - } - } - name: "port-38-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "630a400f-dd0c-51d0-8049-c281881190b0" - } - } - name: "port-3-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "6a2d629b-9dfe-58af-bc5b-96277a127512" - } - } - name: "port-41-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "6e621543-9616-57bf-806c-2564047f234b" - } - } - name: "port-15-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "6e9b83ef-b9a4-5898-9495-38c45635aac7" - } - } - name: "port-34-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "72fabf2f-0121-5198-a4bf-ab82034d7da9" - } - } - name: "port-16-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "743daf39-41eb-500c-b61b-d7b473249022" - } - } - name: "port-47-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "76d3c064-04eb-5edf-95ac-645cb6348b61" - } - } - name: "port-33-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "77d8c722-2ad2-5a7c-8669-fb900f1166e1" - } - } - name: "port-45-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "8657516b-33f4-5d1c-839d-51acbc6fb93d" - } - } - name: "port-36-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "86f6b3e0-3e7e-5db2-bb71-6e05229c97eb" - } - } - name: "port-3-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "922a952b-50b6-5985-bf44-3afeb53f396e" - } - } - name: "port-44-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "94ae7ec2-0cba-55ea-a36f-2143b205ed64" - } - } - name: "port-43-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "994c45dd-b2b8-53c4-957d-4834f45e0e1f" - } - } - name: "port-13-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a08ab669-238c-5e9e-9e86-780d39111595" - } - } - name: "port-40-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a751a510-e108-5819-bafb-3d3e6881b4eb" - } - } - name: "port-12-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b22d517e-2d36-518b-9e3e-c75c625f06ef" - } - } - name: "port-7-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b3ab2b45-ed47-5c14-801d-b1104dd9d619" - } - } - name: "port-6-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b71a78da-69db-5260-8a15-8de81d02a20d" - } - } - name: "port-9-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "bc82f789-cbb1-5f3e-b989-88dab185ea0d" - } - } - name: "port-37-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "bcfb768c-e8fb-5e0b-9559-821d120b5410" - } - } - name: "port-1-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "bd08db44-134e-5902-bb24-b2453bf21db4" - } - } - name: "port-5-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "be1b3bb0-8aed-569a-be91-e888b0c0985d" - } - } - name: "port-33-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c027a391-2cf6-5b96-bba3-051e01c63f43" - } - } - name: "port-7-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c2d5ac50-2faf-5608-a6ae-7c023bceb289" - } - } - name: "port-39-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c4568f02-d291-5c95-b9bc-846278862db9" - } - } - name: "port-4-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c559fb60-6495-5992-b339-ac7a590e337c" - } - } - name: "port-16-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cace07d7-0ca3-51be-bef1-b58db0ccba6f" - } - } - name: "port-2-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "caf865b8-df54-5601-9163-1cdbe8f7a599" - } - } - name: "port-47-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cc5064c4-bc42-5c50-b5b0-9b2ad1405bd8" - } - } - name: "port-42-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e650eba7-019d-5c4f-9d75-14d47a711f2f" - } - } - name: "port-14-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e7566eac-9fa0-5137-929a-7cf2485babea" - } - } - name: "port-37-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ea7812b2-db7c-5504-a415-6b4299ae090f" - } - } - name: "port-11-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "fd4d5404-baf3-5f5f-b7b7-a825c90e5f2a" - } - } - name: "port-15-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -controller_id { -} - -[2024-06-20 13:26:25,597] INFO:device.service.OpenConfigServicer:from openconfigservicer [{'resource_key': 'channel_namespace', 'value': None}, {'resource_key': 'add_transceiver', 'value': None}, {'resource_key': 'source_port', 'value': ['port-1-in']}, {'resource_key': 'destination_port', 'value': [None]}, {'resource_key': 'target-output-power', 'value': None}, {'resource_key': 'frequency', 'value': 192106250}, {'resource_key': 'operational-mode', 'value': None}, {'resource_key': 'line-port', 'value': None}, {'resource_key': 'name', 'value': 'C_BAND'}, {'resource_key': 'optical-band-parent', 'value': 1}, {'resource_key': 'channel_name', 'value': None}, {'resource_key': 'index', 'value': 1}, {'resource_key': 'lower-frequency', 'value': 192006250}, {'resource_key': 'upper-frequency', 'value': 192206250}] and conditions {'is_opticalband': True, 'edit_type': 'optical-band'} -[2024-06-20 13:26:25,599] INFO:ncclient.operations.rpc:[host 172.17.254.22 session-id 21] Requesting 'EditConfig' -[2024-06-20 13:26:25,599] DEBUG:ncclient.operations.rpc:[host 172.17.254.22 session-id 21] Sync request, will wait for timeout=120 -[2024-06-20 13:26:25,728] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:26:25,728] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 235 bytes -[2024-06-20 13:26:25,728] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:25,728] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=6 -[2024-06-20 13:26:25,728] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:25,728] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 225 bytes -[2024-06-20 13:26:25,728] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: appending 225 bytes -[2024-06-20 13:26:25,728] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: fragment = " -" -[2024-06-20 13:26:25,729] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 231 bytes from start of buffer -[2024-06-20 13:26:25,729] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=4 -[2024-06-20 13:26:25,729] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found end of message delimiter -[2024-06-20 13:26:25,729] DEBUG:ncclient.operations.rpc:[host 172.17.254.22 session-id 21] Delivering to -[2024-06-20 13:26:25,729] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: saving back rest of message after 235 bytes, original size 235 -[2024-06-20 13:26:25,729] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:26:25,730] INFO:root:resonse from edit - -[2024-06-20 13:26:25,730] INFO:device.service.OpenConfigServicer:resluts [True] and is_all_good True -[2024-06-20 13:26:25,731] INFO:ncclient.operations.rpc:[host 172.17.254.22 session-id 21] Requesting 'Get' -[2024-06-20 13:26:25,731] DEBUG:ncclient.operations.rpc:[host 172.17.254.22 session-id 21] Sync request, will wait for timeout=120 -[2024-06-20 13:26:25,862] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:26:25,862] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:26:25,862] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:25,862] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:25,862] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:25,862] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:25,862] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:26:25,862] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:26:25,863] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:26:25,863] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:26:25,863] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:26:25,863] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:25,863] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:25,863] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:25,863] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:25,863] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:26:25,863] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:26:25,863] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:26:25,863] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:26:25,864] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:26:25,864] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:25,864] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:25,864] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:25,864] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:25,864] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:26:25,864] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:26:25,864] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:26:25,864] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:26:25,864] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:26:25,865] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:25,865] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:25,865] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:25,865] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:25,865] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: appending 16376 bytes -[2024-06-20 13:26:25,865] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: fragment = " -commonflex-scale-mg-on2024-04-25http://flex-scale-project.eu/yang/flex-scale-mg-oniana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashcrypt-hash-md5crypt-hash-sha-256crypt-hash-sha-512ietf-interfaces2018-02-20urn:ietf:params:xml:ns:yang:ietf-interfacesarbitrary-namesif-mibpre-provisioningietf-netconf2011-06-01urn:ietf:params:xml:ns:netconf:base:1.0rollback-on-errorvalidatewritable-runningxpathietf-netconf-acm2018-02-14urn:ietf:params:xml:ns:yang:ietf-netconf-acmietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringietf-netconf-nmda2019-01-07urn:ietf:params:xml:ns:yang:ietf-netconf-nmdawith-defaultsietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsietf-netconf-partial-lock2009-10-19urn:ietf:params:xml:ns:netconf:partial-lock:1.0ietf-netconf-with-defaults2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsietf-restconf2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconfietf-restconf-monitoring2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconf-monitoringietf-subscribed-notifications2019-09-09urn:ietf:params:xml:ns:yang:ietf-subscribed-notificationsencode-xmlreplaysubtreexpathietf-subscribed-notifications-deviationietf-yang-library2019-01-04urn:ietf:params:xml:ns:yang:ietf-yang-libraryietf-yang-patch2017-02-22urn:ietf:params:xml:ns:yang:ietf-yang-patchietf-yang-push2019-09-09urn:ietf:params:xml:ns:yang:ietf-yang-pushon-changeietf-yang-push-deviationietf-yang-schema-mount2019-01-14urn:ietf:params:xml:ns:yang:ietf-yang-schema-mountopenconfig-if-ethernet2023-03-10http://openconfig.net/yang/interfaces/ethernetopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipopenconfig-interfaces2019-07-10http://openconfig.net/yang/interfacesopenconfig-platform2022-12-20http://openconfig.net/yang/platformopenconfig-platform-common2022-12-20openconfig-platform-port2023-01-19http://openconfig.net/yang/platform/portopenconfig-wavelength-router2021-07-26http://openconfig.net/yang/wavelength-routeroptical-switch2020-01-10http://www.polatis.com/yang/optical-switchpolatis-switch2020-11-14http://www.polatis.com/yang/polatis-switchtailf-aaa2022-04-12http://tail-f.com/ns/aaa/1.1tailf-acm2013-03-07http://tail-f.com/yang/acmtailf-confd-monitoring2021-09-09http://tail-f.com/yang/confd-monitoringtailf-confd-progress2020-06-29http://tail-f.com/ns/confd-progresstailf-kicker2020-11-26http://tail-f.com/ns/kickertailf-last-login2019-11-21http://tail-f.com/yang/last-logintailf-netconf-extensions2021-06-18http://tail-f.com/ns/netconf/extensionstailf-netconf-monitoring2022-04-12http://tail-f.com/yang/netconf-monitoringtailf-netconf-query2017-01-06http://tail-f.com/ns/netconf/querytailf-netconf-rollback2018-01-12http://tail-f.com/ns/netconf/rollbacktailf-netconf-transactionshttp://tail-f.com/ns/netconf/transactions/1.0tailf-netconf-with-rollback-id2020-06-25http://tail-f.com/ns/netconf/with-rollback-idtailf-netconf-with-transaction-id2018-11-23http://tail-f.com/ns/netconf/with-transaction-idtailf-progress2021-12-17http://tail-f.com/ns/progresstailf-rollback2020-09-02http://tail-f.com/ns/rollbackiana-if-type2023-01-26urn:ietf:params:xml:ns:yang:iana-if-typeietf-datastores2018-02-14urn:ietf:params:xml:ns:yang:ietf-datastoresietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesietf-ip2018-02-22urn:ietf:params:xml:ns:yang:ietf-ipietf-network-instance2019-01-21urn:ietf:params:xml:ns:yang:ietf-network-instanceietf-origin2018-02-14urn:ietf:params:xml:ns:yang:ietf-originietf-x509-cert-to-name2014-12-10urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-nameietf-yang-metadata2016-08-05urn:ietf:params:xml:ns:yang:ietf-yang-metadataietf-yang-smiv22012-06-22urn:ietf:params:xml:ns:yang:ietf-yang-smiv2ietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesopenconfig-alarm-types2018-11-21http://openconfig.net/yang/alarms/typesopenconfig-extensions2018-10-17http://openconfig.net/yang/openconfig-extopenconfig-if-types2018-11-21http://openconfig.net/yang/openconfig-if-typesopenconfig-inet-types2019-04-25http://openconfig.net/yang/types/inetopenconfig-platform-types2022-07-28http://openconfig.net/yang/platform-typesopenconfig-transport-types2023-02-08http://openconfig.net/yang/transport-typesopenconfig-types2019-04-16http://openconfig.net/yang/openconfig-typesopenconfig-yang-types2018-11-21http://openconfig.net/yang/types/yangtailf-common2022-04-12http://tail-f.com/yang/commontailf-cli-extensions2021-12-17tailf-meta-extensions2017-03-08tailf-common-monitoring2021-09-02http://tail-f.com/yang/common-monitoringtailf-common-query2017-12-15http://tail-f.com/ns/common/querytailf-netconf-forwardhttp://tail-f.com/ns/netconf/forward/1.0tailf-netconf-inactivehttp://tail-f.com/ns/netconf/inactive/1.0tailf-xsd-types2017-11-20http://tail-f.com/yang/xsd-typescommoncommonds:runningcommonds:intendedcommonds:operationalcommonc12b960e969b26974084d2b999572983c12b960e969b26974084d2b999572983flex-scale-mg-on2024-04-25http://flex-scale-project.eu/yang/flex-scale-mg-onimplementiana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashcrypt-hash-md5crypt-hash-sha-256crypt-hash-sha-512implementiana-if-type2023-01-26urn:ietf:params:xml:ns:yang:iana-if-typeimportietf-datastores2018-02-14urn:ietf:params:xml:ns:yang:ietf-datastoresimportietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesimportietf-interfaces2018-02-20urn:ietf:params:xml:ns:yang:ietf-interfacesarbitrary-namesif-mibpre-provisioningimplementietf-ip2018-02-22urn:ietf:params:xml:ns:yang:ietf-ipipv4-non-contiguous-netmasksipv6-privacy-autoconfimportietf-netconf2011-06-01urn:ietf:params:xml:ns:netconf:base:1.0rollback-on-errorvalidatewritable-runningxpathimplementietf-netconf-acm2018-02-14urn:ietf:params:xml:ns:yang:ietf-netconf-acmimplementietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringimplementietf-netconf-nmda2019-01-07urn:ietf:params:xml:ns:yang:ietf-netconf-nmdawith-defaultsimplementietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsimplementietf-netconf-partial-lock2009-10-19urn:ietf:params:xml:ns:netconf:partial-lock:1.0implementietf-netconf-with-defaults2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsimplementietf-network-instance2019-01-21urn:ietf:params:xml:ns:yang:ietf-network-instanceimportietf-origin2018-02-14urn:ietf:params:xml:ns:yang:ietf-originimportietf-restconf2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconfimplementietf-restconf-monitoring2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconf-monitoringimplementietf-subscribed-notifications2019-09-09urn:ietf:params:xml:ns:yang:ietf-subscribed-notificationsencode-xmlreplaysubtreexpathietf-subscribed-notifications-deviation2020-06-25implementietf-x509-cert-to-name2014-12-10urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-nameimportietf-yang-library2019-01-04urn:ietf:params:xml:ns:yang:ietf-yang-libraryimplementietf-yang-metadata2016-08-05urn:ietf:pa" -[2024-06-20 13:26:25,865] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:26:25,865] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:26:25,904] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:26:25,904] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:26:25,904] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:25,904] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:25,904] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:25,905] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:25,905] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:26:25,905] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:26:25,905] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:26:25,905] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:26:25,905] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:26:25,905] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:25,906] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:25,906] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:25,906] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:25,906] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:26:25,906] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:26:25,906] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:26:25,906] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:26:25,907] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:26:25,907] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:25,907] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:25,907] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:25,907] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:25,907] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:26:25,907] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:26:25,907] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:26:25,908] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:26:25,908] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:26:25,908] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:25,908] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:25,908] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:25,908] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:25,908] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: appending 16376 bytes -[2024-06-20 13:26:25,909] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: fragment = "rams:xml:ns:yang:ietf-yang-metadataimportietf-yang-patch2017-02-22urn:ietf:params:xml:ns:yang:ietf-yang-patchimplementietf-yang-push2019-09-09urn:ietf:params:xml:ns:yang:ietf-yang-pushon-changeietf-yang-push-deviationimplementietf-yang-schema-mount2019-01-14urn:ietf:params:xml:ns:yang:ietf-yang-schema-mountimplementietf-yang-smiv22012-06-22urn:ietf:params:xml:ns:yang:ietf-yang-smiv2importietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesimportopenconfig-alarm-types2018-11-21http://openconfig.net/yang/alarms/typesimportopenconfig-extensions2018-10-17http://openconfig.net/yang/openconfig-extimportopenconfig-if-ethernet2023-03-10http://openconfig.net/yang/interfaces/ethernetimplementopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipimplementopenconfig-if-types2018-11-21http://openconfig.net/yang/openconfig-if-typesimportopenconfig-inet-types2019-04-25http://openconfig.net/yang/types/inetimportopenconfig-interfaces2019-07-10http://openconfig.net/yang/interfacesimplementopenconfig-platform2022-12-20http://openconfig.net/yang/platformimplementopenconfig-platform-common2022-12-20openconfig-platform-port2023-01-19http://openconfig.net/yang/platform/portimplementopenconfig-platform-types2022-07-28http://openconfig.net/yang/platform-typesimportopenconfig-transport-types2023-02-08http://openconfig.net/yang/transport-typesimportopenconfig-types2019-04-16http://openconfig.net/yang/openconfig-typesimportopenconfig-wavelength-router2021-07-26http://openconfig.net/yang/wavelength-routerimplementopenconfig-yang-types2018-11-21http://openconfig.net/yang/types/yangimportoptical-switch2020-01-10http://www.polatis.com/yang/optical-switchimplementpolatis-switch2020-11-14http://www.polatis.com/yang/polatis-switchimplementtailf-aaa2022-04-12http://tail-f.com/ns/aaa/1.1implementtailf-acm2013-03-07http://tail-f.com/yang/acmimplementtailf-common2022-04-12http://tail-f.com/yang/commonimporttailf-cli-extensions2021-12-17tailf-meta-extensions2017-03-08tailf-common-monitoring2021-09-02http://tail-f.com/yang/common-monitoringimporttailf-common-query2017-12-15http://tail-f.com/ns/common/queryimporttailf-confd-monitoring2021-09-09http://tail-f.com/yang/confd-monitoringimplementtailf-confd-progress2020-06-29http://tail-f.com/ns/confd-progressimplementtailf-kicker2020-11-26http://tail-f.com/ns/kickerimplementtailf-last-login2019-11-21http://tail-f.com/yang/last-loginimplementtailf-netconf-extensions2021-06-18http://tail-f.com/ns/netconf/extensionsimplementtailf-netconf-forwardhttp://tail-f.com/ns/netconf/forward/1.0importtailf-netconf-inactivehttp://tail-f.com/ns/netconf/inactive/1.0importtailf-netconf-monitoring2022-04-12http://tail-f.com/yang/netconf-monitoringimplementtailf-netconf-query2017-01-06http://tail-f.com/ns/netconf/queryimplementtailf-netconf-rollback2018-01-12http://tail-f.com/ns/netconf/rollbackimplementtailf-netconf-transactionshttp://tail-f.com/ns/netconf/transactions/1.0implementtailf-netconf-with-rollback-id2020-06-25http://tail-f.com/ns/netconf/with-rollback-idimplementtailf-netconf-with-transaction-id2018-11-23http://tail-f.com/ns/netconf/with-transaction-idimplementtailf-progress2021-12-17http://tail-f.com/ns/progressimplementtailf-rollback2020-09-02http://tail-f.com/ns/rollbackimplementtailf-xsd-types2017-11-20http://tail-f.com/yang/xsd-typesimportpermit000adminadminprivateoperoperpublicadminadminany-accesspermitany-group*tailf-aaa-authenticationtailf-aaa/aaa/authentication/users/user[name='$USER']read updatepermittailf-aaa-usertailf-aaa/user[name='$USER']create read update deletepermittailf-webui-usertailf-webui/webui/data-stores/user-profile[username='$USER']create read update deletepermiturn:ietf:params:netconf:base:1.0urn:ietf:params:netconf:base:1.1urn:ietf:params:netconf:capability:writable-running:1.0urn:ietf:params:netconf:capability:rollback-on-error:1.0urn:ietf:params:netconf:capability:validate:1.0urn:ietf:params:netconf:capability:validate:1.1urn:ietf:params:netconf:capability:xpath:1.0urn:ietf:params:netconf:capability:partial-lock:1.0urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all-tagged,report-allurn:ietf:params:netconf:capability:with-operational-defaults:1.0?basic-mode=explicit&also-supported=report-all-tagged,report-allurn:ietf:params:netconf:capability:yang-library:1.0?revision=2019-01-04&module-set-id=c12b960e969b26974084d2b999572983urn:ietf:params:netconf:capability:yang-library:1.1?revision=2019-01-04&content-id=c12b960e969b26974084d2b999572983http://tail-f.com/ns/netconf/actions/1.0http://flex-scale-project.eu/yang/flex-scale-mg-on?module=flex-scale-mg-on&revision=2024-04-25http://openconfig.net/yang/alarms/types?module=openconfig-alarm-types&revision=2018-11-21http://openconfig.net/yang/interfaces?module=openconfig-interfaces&revision=2019-07-10http://openconfig.net/yang/interfaces/ethernet?module=openconfig-if-ethernet&revision=2023-03-10http://openconfig.net/yang/interfaces/ip?module=openconfig-if-ip&revision=2019-01-08http://openconfig.net/yang/openconfig-ext?module=openconfig-extensions&revision=2018-10-17http://openconfig.net/yang/openconfig-if-types?module=openconfig-if-types&revision=2018-11-21http://openconfig.net/yang/openconfig-types?module=openconfig-types&revision=2019-04-16http://openconfig.net/yang/platform?module=openconfig-platform&revision=2022-12-20http://openconfig.net/yang/platform-types?module=openconfig-platform-types&revision=2022-07-28http://openconfig.net/yang/platform/port?module=openconfig-platform-port&revision=2023-01-19http://openconfig.net/yang/transport-types?module=openconfig-transport-types&revision=2023-02-08http://openconfig.net/yang/types/inet?module=openconfig-inet-types&revision=2019-04-25http://openconfig.net/yang/types/yang?module=openconfig-yang-types&revision=2018-11-21http://openconfig.net/yang/wavelength-router?module=openconfig-wavelength-router&revision=2021-07-26http://tail-f.com/ns/aaa/1.1?module=tailf-aaa&revision=2022-04-12http://tail-f.com/ns/common/query?module=tailf-common-query&revision=2017-12-15http://tail-f.com/ns/confd-progress?module=tailf-confd-progress&revision=2020-06-29http://tail-f.com/ns/kicker?module=tailf-kicker&revision=2020-11-26http://tail-f.com/ns/netconf/query?module=tailf-netconf-query&revision=2017-01-06http://tail-f.com/yang/acm?module=tailf-acm&revision=2013-03-07http://tail-f.com/yang/common?module=tailf-common&revision=2022-04-12http://tail-f.com/yang/common-monitoring?module=tailf-common-monitoring&revision=2021-09-02http://tail-f.com/yang/confd-monitoring?module=tailf-confd-monitoring&revision=2021-09-09http://tail-f.com/yang/last-login?module=tailf-last-login&revision=2019-11-21http://tail-f.com/yang/netconf-monitoring?module=tailf-netconf-monitoring&revision=2022-04-12http://tail-f.com/yang/xsd-types?module=tailf-xsd-types&revision=2017-11-20http://www.polatis.com/yang/optical-switch?module=optical-switch&revision=2020-01-10http://www.polatis.com/yang/polatis-switch?module=polatis-switch&revision=2020-11-14urn:ietf:params:xml:ns:netconf:base:1.0?module=ietf-netconf&revision=2011-06-01&features=writable-running,rollback-on-error,validate,xpathurn:ietf:params:xml:ns:netconf:partial-lock:1.0?module=ietf-netconf-partial-lock&revision=2009-10-19urn:ietf:params:xml:ns:yang:iana-crypt-hash?module=iana-crypt-hash&revision=2014-08-06&features=crypt-hash-sha-512,crypt-hash-sha-256,crypt-hash-md5urn:ietf:params:xml:ns:yang:iana-if-type?module=iana-if-type&revision=2023-01-26urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&revision=2013-07-15urn:ietf:params:xml:ns:yang:ietf-netconf-acm?module=ietf-netconf-acm&revision=2018-02-14urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&revision=2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-notifications?module=ietf-netconf-notifications&revision=2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?module=ietf-netconf-with-defaults&revision=2011-06-01urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?module=ietf-restconf-monitoring&revision=2017-01-26urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name?module=ietf-x509-cert-to-name&revision=2014-12-10urn:ietf:params:xml:ns:yang:ietf-yang-metadata?module=ietf-yang-metadata&revision=2016-08-05urn:ietf:params:xml:ns:yang:ietf-yang-smiv2?module=ietf-yang-smiv2&revision=2012-06-22urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&revision=2013-07-15running1717-711274-208943validflex-scale-mg-on2024-04-25yang26runningread2024-06-06T22:01:10+00:0003210000WBSS-1WBSS-1falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-1-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX1MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-10WBSS-10falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-5-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX10MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-11WBSS-11falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMO" -[2024-06-20 13:26:25,952] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:26:25,952] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:26:26,023] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:26:26,023] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:26:26,023] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:26,023] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:26,023] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:26,024] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:26,024] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:26:26,024] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:26:26,024] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:26:26,024] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:26:26,024] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:26:26,024] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:26,024] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:26,025] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:26,025] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:26,025] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:26:26,025] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:26:26,025] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:26:26,025] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:26:26,025] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:26:26,025] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:26,025] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:26,025] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:26,025] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:26,026] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:26:26,026] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:26:26,026] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:26:26,026] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:26:26,026] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:26:26,026] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:26,026] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:26,026] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:26,026] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:26,026] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: appending 16376 bytes -[2024-06-20 13:26:26,026] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: fragment = "N_PORTport-6-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX11MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-12WBSS-12falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-6-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX12MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-13WBSS-13falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-7-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX13MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-14WBSS-14falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-7-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX14MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-15WBSS-15falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-8-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX15MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-16WBSS-16falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-8-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX16MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-17WBSS-17falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-9-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX17MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-18WBSS-18falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-9-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX18MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-19WBSS-19falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-10-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX19MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-2WBSS-2falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-1-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX2MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-20WBSS-20falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-10-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX20MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-21WBSS-21falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-11-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX21MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-22WBSS-22falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-11-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX22MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-23WBSS-23falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-12-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX23MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-24WBSS-24falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-12-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX24MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-25WBSS-25falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-13-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX25MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-26WBSS-26falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-13-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX26MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-27WBSS-27falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-14-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX27MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-28WBSS-28falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-14-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX28MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-29WBSS-29falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-15-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX29MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-3WBSS-3falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-2-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX3MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-30WBSS-30falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-15-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX30MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-31WBSS-31falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-16-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX31MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-32WBSS-32falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-16-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX32MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-4WBSS-4falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-2-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX4MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-5WBSS-5falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-3-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX5MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-6WBSS-6falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-3-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX6MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-7WBSS-7falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-4-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX7MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWBSS-8WBSS-8falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-4-outMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX8MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEMUXWBSS-9WBSS-9falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WBSS_MODULEMG_ON_WBSS_COMMON_PORTMG_ON_WBSS_COMMON_PORTport-5-inMG_ON_WBSS_INDEXMG_ON_WBSS_INDEX9MG_ON_WBSS_NUM_BANDSMG_ON_WBSS_NUM_BANDS4MG_ON_WBSS_NUM_PORTSMG_ON_WBSS_NUM_PORTS16MG_ON_WBSS_TYPEMG_ON_WBSS_TYPEDEMUXWSS-1WSS-1falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WSS_MODULEMG_ON_WSS_BANDMG_ON_WSS_BANDC-BANDMG_ON_WSS_COMMON_PORTMG_ON_WSS_COMMON_PORT273MG_ON_WSS_INDEXMG_ON_WSS_INDEX1MG_ON_WSS_LOWER_FREQMG_ON_WSS_LOWER_FREQ191560677MG_ON_WSS_NUM_PORTSMG_ON_WSS_NUM_PORTS9MG_ON_WSS_TYPEMG_ON_WSS_TYPEDEMUXMG_ON_WSS_UPPER_FREQMG_ON_WSS_UPPER_FREQ195942783WSS-10WSS-10falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WSS_MODULEMG_ON_WSS_BANDMG_ON_WSS_BANDS-BANDMG_ON_WSS_COMMON_PORTMG_ON_WSS_COMMON_PORT282MG_ON_WSS_INDEXMG_ON_WSS_INDEX10MG_ON_WSS_LOWER_FREQMG_ON_WSS_LOWER_FREQ195942784MG_ON_WSS_NUM_PORTSMG_ON_WSS_NUM_PORTS9MG_ON_WSS_TYPEMG_ON_WSS_TYPEDEMUXMG_ON_WSS_UPPER_FREQMG_ON_WSS_UPPER_FREQ205337300WSS-11WSS-11falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WSS_MODULEMG_ON_WSS_BANDMG_ON_WSS_BANDS-BANDMG_ON_WSS_COMMON_PORTMG_ON_WSS_COMMON_PORT91MG_ON_WSS_INDEXMG_ON_WSS_INDEX11MG_ON_WSS_LOWER_FREQMG_ON_WSS_LOWER_FREQ195942784MG_ON_WSS_NUM_PORTSMG_ON_WSS_NUM_PORTS9MG_ON_WSS_TYPEMG_ON_WSS_TYPEMUXMG_ON_WSS_UPPER_FREQMG_ON_WSS_UPPER_FREQ205337300WSS-12WSS-12falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WSS_MODULEMG_ON_WSS_BANDMG_ON_WSS_BANDS-BANDMG_ON_WSS_COMMON_PORTMG_ON_WSS_COMMON_PORT92MG_ON_WSS_INDEXMG_ON_WSS_INDEX12MG_ON_WSS_LOWER_FREQMG_ON_WSS_LOWER_FREQ195942784MG_ON_WSS_NUM_PORTSMG_ON_WSS_NUM_PORTS9MG_ON_WSS_TYPEMG_ON_WSS_TYPEMUXMG_ON_WSS_UPPER_FREQMG_ON_WSS_UPPER_FREQ205337300WSS-2WSS-2falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WSS_MODULEMG_ON_WSS_BANDMG_ON_WSS_BANDC-BANDMG_ON_WSS_COMMON_PORTMG_ON_WSS_COMMON_PORT274MG_ON_WSS_INDEXMG_ON_WSS_INDEX2MG_ON_WSS_LOWER_FREQMG_ON_WSS_LOWER_FREQ191560677MG_ON_WSS_NUM_PORTSMG_ON_WSS_NUM_PORTS9MG_ON_WSS_TYPEMG_ON_WSS_TYPEDEMUXMG_ON_WSS_UPPER_FREQMG_ON_WSS_UPPER_FREQ195942783WSS-3WSS-3falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPEMG_ON_WSS_MODULEMG_ON_WSS_BANDMG_ON_WSS_BANDC-BANDMG_ON_WSS_COMMON_PORTMG_ON_WSS_COMMON_PORT83MG_ON_WSS_INDEXMG_ON_WSS_INDEX3MG_ON_WSS_LOWER_FREQMG_ON_WSS_LOWER_FREQ191560677MG_ON_WSS_NUM_PORTSMG_ON_WSS_NUM_PORTS9MG_ON_WSS_TYPEMG_ON_WSS_TYPEMUXMG_ON_WSS_UPPER_FREQMG_ON_WSS_UPPER_FREQ195942783WSS-4WSS-4falseMG_ON_COMPONENT_TYPEMG_ON_COMPONENT_TYPE11C_BAND192006250192206250ENABLED1C_BAND192006250192206250ENABLEDUPport-1-inport-1-inDROPDROPadmin9000100$1$uHrg99PA$.Lms1sWc8ZGuUX8T6PNQh0/var/confd/homes/admin/.ssh/var/confd/homes/adminoper9000100$1$9OJiF0bG$Myi9nICnK8rp2p9qSmBmH./var/confd/homes/oper/.ssh/var/confd/homes/operprivate9000100$1$PuXqqWlS$aShVgQv24iqb/MNYtMeAn//var/confd/homes/private/.ssh/var/confd/homes/privatepublic9000100$1$inij.yJ9$QUH0TnRHgwszY3T9THj6w1/var/confd/homes/public/.ssh/var/confd/homes/public0\h> 15\h# exec0actionautowizardenableexithelpstartup15configure7.8.31truestartedflex-scale-mg-on2024-04-25http://flex-scale-project.eu/yang/flex-scale-mg-onfsmgoniana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashianachiana-if-type2023-01-26urn:ietf:params:xml:ns:yang:iana-if-typeianaiftietf-datastores2018-02-14urn:ietf:params:xml:ns:yang:ietf-datastoresdsietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesinetietf-interfaces2018-02-20urn:ietf:params:xml:ns:yang:ietf-interfacesifietf-ip2018-02-22urn:ietf:params:xml:ns:yang:ietf-iptfipietf-netconf2011-06-01urn:ietf:params:xml:ns:netconf:base:1.0ncnetconfietf-netconf-acm2018-02-14urn:ietf:params:xml:ns:yang:ietf-netconf-acmnacmietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringncmietf-netconf-nmda2019-01-07urn:ietf:params:xml:ns:yang:ietf-netconf-nmdancdsnetconfietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsncnietf-netconf-partial-lock2009-10-19urn:ietf:params:xml:ns:netconf:partial-lock:1.0plietf-netconf-with-defaults2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsncwdnetconfietf-network-instance2019-01-21urn:ietf:params:xml:ns:yang:ietf-network-instancetfniietf-origin2018-02-14urn:ietf:params:xml:ns:yang:ietf-originorietf-restconf2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconfrcrestnetconfietf-restconf-monitoring2017-01-26urn:ietf:params:xml:ns:yang:ietf-restconf-monitoringrcmonietf-subscribed-notifications2019-09-09urn:ietf:params:xml:ns:yang:ietf-subscribed-notificationssnnetconfietf-x509-cert-to-name2014-12-10urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-namex509c2nietf-yang-library2019-01-04urn:ietf:params:xml:ns:yang:ietf-yang-libraryyanglibnetconfrestietf-yang-metadata2016-08-05urn:ietf:params:xml:ns:yang:ietf-yang-metadatamdietf-yang-patch2017-02-22urn:ietf:params:xml:ns:yang:ietf-yang-patchypatchrestnetconfietf-yang-push2019-09-09urn:ietf:params:xml:ns:yang:ietf-yang-pushypnetconfietf-yang-schema-mount2019-01-14urn:ietf:params:xml:ns:yang:ietf-yang-schema-mountyangmntietf-yang-smiv22012-06-22urn:ietf:params:xml:ns:yang:ietf-yang-smiv2smiv2ietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesyangnetconf_netmodurn:ietf:params:xml:ns:netmod:notificationnmnetconfopenconfig-alarm-types2018-11-21http://openconfig.net/yang/alarms/typesoc-alarm-typesopenconfig-extensions2018-10-17http://openconfig.net/yang/openconfig-extoc-extopenconfig-if-ethernet2023-03-10http://openconfig.net/yang/interfaces/ethernetoc-ethopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipoc-ipopenconfig-if-types2018-11-21http://openconfig.net/yang/openconfig-if-typesoc-iftopenconfig-inet-types2019-04-25http://openconfig.net/yang/types/inetoc-inetopenconfig-interfaces2019-07-10http://openconfig.net/yang/interfacesoc-ifopenconfig-platform2022-12-20http://openconfig.net/yang/platformoc-platformopenconfig-platform-port2023-01-19http://openconfig.net/yang/platform/portoc-portopenconfig-platform-types2022-07-28http://openconfig.net/yang/platform-typesoc-platform-typesopenconfig-transport-types2023-02-08http://openconfig.net/yang/transport-typesoc-opt-typesopenconfig-types2019-04-16http://openconfig.net/yang/openconfig-typesoc-typesopenconfig-wavelength-router2021-07-26http://openconfig.net/yang/wavelength-routeroc-wave-routeropenconfig-yang-types2018-11-21http://openconfig.net/yang/types/yangoc-yangoptical-switch2020-01-10http://www.polatis.com/yang/optical-switchopswpolatis-switch2020-11-14http://www.polatis.com/yang/polatis-switchpltstailf-aaa2022-04-12http://tail-f.com/ns/aaa/1.1aaatailf-acm2013-03-07http://tail-f.com/yang/acmtacmtailf-common2022-04-12http://tail-f.com/yang/commontailftailf-common-monitoring2021-09-02http://tail-f.com/yang/common-monitoringtfcgtailf-common-query2017-12-15http://tail-f.com/ns/common/querytfcqtailf-confd-monitoring2021-09-09http://tail-f.com/yang/confd-monitoringtfcmtailf-confd-progress2020-06-29http://tail-" -[2024-06-20 13:26:28,214] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:26:28,214] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:26:28,275] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:26:28,275] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:26:28,275] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:28,275] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=7 -[2024-06-20 13:26:28,275] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:28,276] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 6484 bytes -[2024-06-20 13:26:28,276] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: not enough data for chunk yet -[2024-06-20 13:26:28,276] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: setting start to 0 -[2024-06-20 13:26:28,276] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -[2024-06-20 13:26:28,276] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: starting -[2024-06-20 13:26:28,276] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: working with buffer of 6495 bytes -[2024-06-20 13:26:28,276] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:28,276] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=7 -[2024-06-20 13:26:28,276] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found chunk delimiter -[2024-06-20 13:26:28,277] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: chunk size 6484 bytes -[2024-06-20 13:26:28,277] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: appending 6484 bytes -[2024-06-20 13:26:28,277] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: fragment = "f.com/ns/confd-progressconfd-progresstailf-kicker2020-11-26http://tail-f.com/ns/kickerkickertailf-last-login2019-11-21http://tail-f.com/yang/last-loginlasttailf-netconf-extensions2021-06-18http://tail-f.com/ns/netconf/extensionstfncenetconftailf-netconf-forwardhttp://tail-f.com/ns/netconf/forward/1.0fwdnetconftailf-netconf-inactivehttp://tail-f.com/ns/netconf/inactive/1.0innetconftailf-netconf-monitoring2022-04-12http://tail-f.com/yang/netconf-monitoringtncmtailf-netconf-query2017-01-06http://tail-f.com/ns/netconf/querytfncqnetconftailf-netconf-rollback2018-01-12http://tail-f.com/ns/netconf/rollbacknetconf-rollbacknetconftailf-netconf-transactionshttp://tail-f.com/ns/netconf/transactions/1.0trnetconftailf-netconf-with-rollback-id2020-06-25http://tail-f.com/ns/netconf/with-rollback-idwrbidnetconftailf-netconf-with-transaction-id2018-11-23http://tail-f.com/ns/netconf/with-transaction-idwtxidnetconftailf-progress2021-12-17http://tail-f.com/ns/progressprogresstailf-rollback2020-09-02http://tail-f.com/ns/rollbackrollbackrestnetconfmaapitailf-xsd-types2017-11-20http://tail-f.com/yang/xsd-typesxs0.0.0.020220.0.0.02024fiberscp0fsmgon_daemonnum_instancesremovecreateset_elemget_nextget_elemmediachannelscp0fsmgon_daemonnum_instancesremovecreateset_elemget_nextget_elemopticalbandscp0fsmgon_daemonnum_instancesremovecreateset_elemget_nextget_elemvp10fsmgon_daemonvp20fsmgon_daemonrunning1717-711274-208943./confd-cdb/A.cdb35577915504390false0falseoperational22./confd-cdb/O.cdb42100falseadmin2024-06-20T13:24:43.525796+00:009f9b9714842f10.30.2.208ncm:netconf-ssh02024-06-06T23:13:24.403301+00:009f9b9714842f10.30.2.206ncm:netconf-ssh02024-06-06T22:01:14.795227+00:009f9b9714842f127.0.0.1ncm:netconf-ssh00rollback010003admin2024-06-20 13:26:25netconf1rollback110002admin2024-06-07 08:55:39netconf2rollback210001system2024-06-06 22:01:14system3rollback310000system2024-06-06 22:01:12system" -[2024-06-20 13:26:28,277] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: matching from 6491 bytes from start of buffer -[2024-06-20 13:26:28,277] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: regular expression start=0, end=4 -[2024-06-20 13:26:28,277] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: found end of message delimiter -[2024-06-20 13:26:28,279] DEBUG:ncclient.operations.rpc:[host 172.17.254.22 session-id 21] Delivering to -[2024-06-20 13:26:28,279] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: saving back rest of message after 6495 bytes, original size 6495 -[2024-06-20 13:26:28,279] DEBUG:ncclient.transport.parser:[host 172.17.254.22 session-id 21] _parse11: ending -int-connection-91 -int-connection-92 -int-connection-93 -int-connection-94 -int-connection-95 -int-connection-96 -int-connection-97 -int-connection-98 -int-connection-99 -port-1-in -port-1-out -port-10-in -port-10-out -port-11-in -port-11-out -port-12-in -port-12-out -port-13-in -port-13-out -port-14-in -port-14-out -port-15-in -port-15-out -port-16-in -port-16-out -port-17-in -port-17-out -port-18-in -port-18-out -port-19-in -port-19-out -port-2-in -port-2-out -port-20-in -port-20-out -port-21-in -port-21-out -port-22-in -port-22-out -port-23-in -port-23-out -port-24-in -port-24-out -port-25-in -port-25-out -port-26-in -port-26-out -port-27-in -port-27-out -port-28-in -port-28-out -port-29-in -port-29-out -port-3-in -port-3-out -port-30-in -port-30-out -port-31-in -port-31-out -port-32-in -port-32-out -port-33-in -port-33-out -port-34-in -port-34-out -port-35-in -port-35-out -port-36-in -port-36-out -port-37-in -port-37-out -port-38-in -port-38-out -port-39-in -port-39-out -port-4-in -port-4-out -port-40-in -port-40-out -port-41-in -port-41-out -port-42-in -port-42-out -port-43-in -port-43-out -port-44-in -port-44-out -port-45-in -port-45-out -port-46-in -port-46-out -port-47-in -port-47-out -port-48-in -port-48-out -port-5-in -port-5-out -port-6-in -port-6-out -port-7-in -port-7-out -port-8-in -port-8-out -port-9-in -port-9-out -component [, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -WBSS-1 -WBSS-10 -WBSS-11 -WBSS-12 -WBSS-13 -WBSS-14 -WBSS-15 -WBSS-16 -WBSS-17 -WBSS-18 -WBSS-19 -WBSS-2 -WBSS-20 -WBSS-21 -WBSS-22 -WBSS-23 -WBSS-24 -WBSS-25 -WBSS-26 -WBSS-27 -WBSS-28 -WBSS-29 -WBSS-3 -WBSS-30 -WBSS-31 -WBSS-32 -WBSS-4 -WBSS-5 -WBSS-6 -WBSS-7 -WBSS-8 -WBSS-9 -WSS-1 -WSS-10 -WSS-11 -WSS-12 -WSS-2 -WSS-3 -WSS-4 -WSS-5 -WSS-6 -WSS-7 -WSS-8 -WSS-9 -int-connection-1 -int-connection-10 -int-connection-100 -int-connection-101 -int-connection-102 -int-connection-103 -int-connection-104 -int-connection-105 -int-connection-106 -int-connection-107 -int-connection-108 -int-connection-109 -int-connection-11 -int-connection-110 -int-connection-111 -int-connection-112 -int-connection-113 -int-connection-114 -int-connection-115 -int-connection-116 -int-connection-117 -int-connection-118 -int-connection-119 -int-connection-12 -int-connection-120 -int-connection-121 -int-connection-122 -int-connection-123 -int-connection-124 -int-connection-125 -int-connection-126 -int-connection-127 -int-connection-128 -int-connection-129 -int-connection-13 -int-connection-130 -int-connection-131 -int-connection-132 -int-connection-133 -int-connection-134 -int-connection-135 -int-connection-136 -int-connection-137 -int-connection-138 -int-connection-139 -int-connection-14 -int-connection-140 -int-connection-141 -int-connection-142 -int-connection-143 -int-connection-144 -int-connection-145 -int-connection-146 -int-connection-147 -int-connection-148 -int-connection-149 -int-connection-15 -int-connection-150 -int-connection-151 -int-connection-152 -int-connection-153 -int-connection-154 -int-connection-155 -int-connection-156 -int-connection-157 -int-connection-158 -int-connection-159 -int-connection-16 -int-connection-160 -int-connection-161 -int-connection-162 -int-connection-163 -int-connection-164 -int-connection-165 -int-connection-166 -int-connection-167 -int-connection-168 -int-connection-169 -int-connection-17 -int-connection-170 -int-connection-171 -int-connection-172 -int-connection-173 -int-connection-174 -int-connection-175 -int-connection-176 -int-connection-177 -int-connection-178 -int-connection-179 -int-connection-18 -int-connection-180 -int-connection-181 -int-connection-182 -int-connection-183 -int-connection-184 -int-connection-185 -int-connection-186 -int-connection-187 -int-connection-188 -int-connection-189 -int-connection-19 -int-connection-190 -int-connection-191 -int-connection-192 -int-connection-193 -int-connection-194 -int-connection-195 -int-connection-196 -int-connection-197 -int-connection-198 -int-connection-199 -int-connection-2 -int-connection-20 -int-connection-200 -int-connection-201 -int-connection-202 -int-connection-203 -int-connection-204 -int-connection-205 -int-connection-206 -int-connection-207 -int-connection-208 -int-connection-209 -int-connection-21 -int-connection-210 -int-connection-211 -int-connection-212 -int-connection-213 -int-connection-214 -int-connection-215 -int-connection-216 -int-connection-217 -int-connection-218 -int-connection-219 -int-connection-22 -int-connection-220 -int-connection-221 -int-connection-222 -int-connection-223 -int-connection-224 -int-connection-225 -int-connection-226 -int-connection-227 -int-connection-228 -int-connection-229 -int-connection-23 -int-connection-230 -int-connection-231 -int-connection-232 -int-connection-233 -int-connection-234 -int-connection-235 -int-connection-236 -int-connection-237 -int-connection-238 -int-connection-239 -int-connection-24 -int-connection-240 -int-connection-241 -int-connection-242 -int-connection-243 -int-connection-244 -int-connection-245 -int-connection-246 -int-connection-247 -int-connection-248 -int-connection-249 -int-connection-25 -int-connection-250 -int-connection-251 -int-connection-252 -int-connection-253 -int-connection-254 -int-connection-255 -int-connection-256 -int-connection-257 -int-connection-258 -int-connection-259 -int-connection-26 -int-connection-260 -int-connection-261 -int-connection-262 -int-connection-263 -int-connection-264 -int-connection-265 -int-connection-266 -int-connection-267 -int-connection-268 -int-connection-269 -int-connection-27 -int-connection-270 -int-connection-271 -int-connection-272 -int-connection-273 -int-connection-274 -int-connection-275 -int-connection-276 -int-connection-277 -int-connection-278 -int-connection-279 -int-connection-28 -int-connection-280 -int-connection-281 -int-connection-282 -int-connection-283 -int-connection-284 -int-connection-285 -int-connection-286 -int-connection-287 -int-connection-288 -int-connection-289 -int-connection-29 -int-connection-290 -int-connection-291 -int-connection-292 -int-connection-293 -int-connection-294 -int-connection-295 -int-connection-296 -int-connection-297 -int-connection-298 -int-connection-299 -int-connection-3 -int-connection-30 -int-connection-300 -int-connection-301 -int-connection-302 -int-connection-303 -int-connection-304 -int-connection-305 -int-connection-306 -int-connection-307 -int-connection-308 -int-connection-309 -int-connection-31 -int-connection-310 -int-connection-311 -int-connection-312 -int-connection-313 -int-connection-314 -int-connection-315 -int-connection-316 -int-connection-317 -int-connection-318 -int-connection-319 -int-connection-32 -int-connection-320 -int-connection-321 -int-connection-322 -int-connection-323 -int-connection-324 -int-connection-325 -int-connection-326 -int-connection-327 -int-connection-328 -int-connection-329 -int-connection-33 -int-connection-330 -int-connection-331 -int-connection-332 -int-connection-333 -int-connection-334 -int-connection-335 -int-connection-336 -int-connection-337 -int-connection-338 -int-connection-339 -int-connection-34 -int-connection-340 -int-connection-341 -int-connection-342 -int-connection-343 -int-connection-344 -int-connection-345 -int-connection-346 -int-connection-347 -int-connection-348 -int-connection-349 -int-connection-35 -int-connection-350 -int-connection-351 -int-connection-352 -int-connection-353 -int-connection-354 -int-connection-355 -int-connection-356 -int-connection-357 -int-connection-358 -int-connection-359 -int-connection-36 -int-connection-360 -int-connection-361 -int-connection-362 -int-connection-363 -int-connection-364 -int-connection-365 -int-connection-366 -int-connection-367 -int-connection-368 -int-connection-369 -int-connection-37 -int-connection-370 -int-connection-371 -int-connection-372 -int-connection-373 -int-connection-374 -int-connection-375 -int-connection-376 -int-connection-377 -int-connection-378 -int-connection-379 -int-connection-38 -int-connection-380 -int-connection-381 -int-connection-382 -int-connection-383 -int-connection-384 -int-connection-385 -int-connection-386 -int-connection-387 -int-connection-388 -int-connection-389 -int-connection-39 -int-connection-390 -int-connection-391 -int-connection-392 -int-connection-393 -int-connection-394 -int-connection-395 -int-connection-396 -int-connection-397 -int-connection-398 -int-connection-399 -int-connection-4 -int-connection-40 -int-connection-400 -int-connection-401 -int-connection-402 -int-connection-403 -int-connection-404 -int-connection-405 -int-connection-406 -int-connection-407 -int-connection-408 -int-connection-409 -int-connection-41 -int-connection-410 -int-connection-411 -int-connection-412 -int-connection-413 -int-connection-414 -int-connection-415 -int-connection-416 -int-connection-417 -int-connection-418 -int-connection-419 -int-connection-42 -int-connection-420 -int-connection-421 -int-connection-422 -int-connection-423 -int-connection-424 -int-connection-425 -int-connection-426 -int-connection-427 -int-connection-428 -int-connection-43 -int-connection-44 -int-connection-45 -int-connection-46 -int-connection-47 -int-connection-48 -int-connection-49 -int-connection-5 -int-connection-50 -int-connection-51 -int-connection-52 -int-connection-53 -int-connection-54 -int-connection-55 -int-connection-56 -int-connection-57 -int-connection-58 -int-connection-59 -int-connection-6 -int-connection-60 -int-connection-61 -int-connection-62 -int-connection-63 -int-connection-64 -int-connection-65 -int-connection-66 -int-connection-67 -int-connection-68 -int-connection-69 -int-connection-7 -int-connection-70 -int-connection-71 -int-connection-72 -int-connection-73 -int-connection-74 -int-connection-75 -int-connection-76 -int-connection-77 -int-connection-78 -int-connection-79 -int-connection-8 -int-connection-80 -int-connection-81 -int-connection-82 -int-connection-83 -int-connection-84 -int-connection-85 -int-connection-86 -int-connection-87 -int-connection-88 -int-connection-89 -int-connection-9 -int-connection-90 -[2024-06-20 13:26:28,377] INFO:root:parameters {} -[2024-06-20 13:26:28,379] DEBUG:context.client.ContextClient:SetOpticalConfig request: {"config": "{}", "device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}} -[2024-06-20 13:26:28,399] DEBUG:context.client.ContextClient:SetOpticalConfig result: {"opticalconfig_uuid": ""} -[2024-06-20 13:26:28,400] DEBUG:device.service.OpenConfigServicer:ConfigureOpticalDevice reply: {} -[2024-06-20 13:26:28,493] DEBUG:device.service.OpenConfigServicer:ConfigureOpticalDevice request: {"config": "{\"channels\": [{\"name\": {\"index\": \"channel-3\"}, \"frequency\": 191600000, \"target-output-power\": \"100.0\", \"operational-mode\": 0}, {\"name\": {\"index\": \"channel-1\"}, \"frequency\": 192056250, \"target-output-power\": \"1.0\", \"operational-mode\": 8}, {\"name\": {\"index\": \"channel-4\"}, \"frequency\": 191600000, \"target-output-power\": \"100.0\", \"operational-mode\": 0}, {\"name\": {\"index\": \"channel-2\"}, \"frequency\": 191600000, \"target-output-power\": \"100.0\", \"operational-mode\": 0}], \"transceivers\": {\"transceiver\": [\"transceiver-1\", \"transceiver-2\", \"transceiver-3\", \"transceiver-4\"]}, \"interfaces\": {\"interface\": \"\"}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"device_name\": \"T1.1\", \"new_config\": {\"target-output-power\": \"1.0\", \"frequency\": 192056250, \"operational-mode\": 8, \"band\": 100000, \"flow_id\": 1, \"ob_id\": 1, \"band_type\": \"C_BAND\"}, \"is_opticalband\": false, \"flow\": [[\"0\", \"5eb4f156-7811-53f3-9172-8402127cf7b9\"]]}", "device_id": {"device_uuid": {"uuid": "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7"}}, "opticalconfig_id": {"opticalconfig_uuid": "660e2a2a-a893-5902-825b-4f856be2cb23"}} -[2024-06-20 13:26:28,494] INFO:device.service.OpenConfigServicer: config from openconfigservicer {'channels': [{'name': {'index': 'channel-3'}, 'frequency': 191600000, 'target-output-power': '100.0', 'operational-mode': 0}, {'name': {'index': 'channel-1'}, 'frequency': 192056250, 'target-output-power': '1.0', 'operational-mode': 8}, {'name': {'index': 'channel-4'}, 'frequency': 191600000, 'target-output-power': '100.0', 'operational-mode': 0}, {'name': {'index': 'channel-2'}, 'frequency': 191600000, 'target-output-power': '100.0', 'operational-mode': 0}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'interfaces': {'interface': ''}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'device_name': 'T1.1', 'new_config': {'target-output-power': '1.0', 'frequency': 192056250, 'operational-mode': 8, 'band': 100000, 'flow_id': 1, 'ob_id': 1, 'band_type': 'C_BAND'}, 'is_opticalband': False, 'flow': [['0', '5eb4f156-7811-53f3-9172-8402127cf7b9']]} -[2024-06-20 13:26:28,494] DEBUG:context.client.ContextClient:Creating channel to 10.152.183.195:1010... -[2024-06-20 13:26:28,495] DEBUG:context.client.ContextClient:Channel created -[2024-06-20 13:26:28,495] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7"}}]}, "include_components": false, "include_config_rules": false, "include_endpoints": true} -[2024-06-20 13:26:28,516] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": [{"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"}]} -[2024-06-20 13:26:28,516] INFO:device.service.OpenConfigServicer:device is device_id { - device_uuid { - uuid: "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7" - } -} -name: "T1.1" -device_type: "optical-transponder" -device_operational_status: DEVICEOPERATIONALSTATUS_ENABLED -device_drivers: DEVICEDRIVER_OC -device_endpoints { - endpoint_id { - 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" - } - } - name: "1" - endpoint_type: "port-1" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "8b59684b-f324-52cd-a050-f218730162c1" - } - } - name: "4" - endpoint_type: "port-4" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cfe606b4-11f1-534e-b5b6-ee45a0ebf616" - } - } - name: "3" - endpoint_type: "port-3" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "f713412b-aa6e-5c5d-9d0d-de80ad78438f" - } - } - name: "2" - endpoint_type: "port-2" - endpoint_location { - } -} -controller_id { -} - -[2024-06-20 13:26:28,517] INFO:device.service.OpenConfigServicer:from openconfigservicer [{'resource_key': 'channel_namespace', 'value': 'http://openconfig.net/yang/terminal-device'}, {'resource_key': 'add_transceiver', 'value': None}, {'resource_key': 'source_port', 'value': [None]}, {'resource_key': 'destination_port', 'value': ['1']}, {'resource_key': 'target-output-power', 'value': '1.0'}, {'resource_key': 'frequency', 'value': 192056250}, {'resource_key': 'operational-mode', 'value': 8}, {'resource_key': 'line-port', 'value': None}, {'resource_key': 'name', 'value': 'C_BAND'}, {'resource_key': 'optical-band-parent', 'value': 1}, {'resource_key': 'channel_name', 'value': None}, {'resource_key': 'lower-frequency', 'value': None}, {'resource_key': 'upper-frequency', 'value': None}] and conditions {'is_opticalband': False, 'edit_type': 'optical-channel'} -[2024-06-20 13:26:28,517] INFO:root:ports are {'source_port': [None], 'destination_port': ['1']} -[2024-06-20 13:26:28,518] INFO:ncclient.operations.rpc:[host 172.17.254.41 session-id 32] Requesting 'EditConfig' -[2024-06-20 13:26:28,519] DEBUG:ncclient.operations.rpc:[host 172.17.254.41 session-id 32] Sync request, will wait for timeout=120 -[2024-06-20 13:26:28,636] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:26:28,637] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 235 bytes -[2024-06-20 13:26:28,637] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:28,637] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=6 -[2024-06-20 13:26:28,637] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:26:28,637] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 225 bytes -[2024-06-20 13:26:28,637] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: appending 225 bytes -[2024-06-20 13:26:28,637] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: fragment = " -" -[2024-06-20 13:26:28,637] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 231 bytes from start of buffer -[2024-06-20 13:26:28,637] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=4 -[2024-06-20 13:26:28,637] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found end of message delimiter -[2024-06-20 13:26:28,638] DEBUG:ncclient.operations.rpc:[host 172.17.254.41 session-id 32] Delivering to -[2024-06-20 13:26:28,638] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: saving back rest of message after 235 bytes, original size 235 -[2024-06-20 13:26:28,638] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:26:28,638] INFO:root:resonse from edit - -[2024-06-20 13:26:28,638] INFO:device.service.OpenConfigServicer:resluts [True] and is_all_good True -[2024-06-20 13:26:28,639] INFO:ncclient.operations.rpc:[host 172.17.254.41 session-id 32] Requesting 'Get' -[2024-06-20 13:26:28,639] DEBUG:ncclient.operations.rpc:[host 172.17.254.41 session-id 32] Sync request, will wait for timeout=120 -[2024-06-20 13:26:28,777] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:26:28,778] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:26:28,778] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:28,778] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:28,778] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:26:28,778] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:28,778] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:26:28,778] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:26:28,779] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:26:28,779] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:26:28,779] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:26:28,779] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:28,780] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:28,780] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:26:28,780] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:28,780] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:26:28,780] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:26:28,780] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:26:28,781] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:26:28,781] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:26:28,781] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:28,781] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:28,781] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:26:28,781] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:28,781] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:26:28,782] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:26:28,782] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:26:28,782] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:26:28,782] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:26:28,782] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:28,782] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:28,782] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:26:28,782] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:28,783] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: appending 16376 bytes -[2024-06-20 13:26:28,783] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: fragment = " -falsefalsetruefalsefalsefalseeth0eth0truefalsetrue00
192.168.1.1192.168.1.124
DISABLEfalsetruefalse
falsefalsetrue1false
truechannel-1channel-1channel-1oc-opt-types:OPTICAL_CHANNEL1920562501.08transceiver-11920562501.08transceiver-110.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-2channel-2channel-2oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-21916000000.00transceiver-210.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-3channel-3channel-3oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-31916000000.00transceiver-310.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-4channel-4channel-4oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-41916000000.00transceiver-410.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00devicedeviceMellanoxSwitchoc-platform-types:OPERATING_SYSTEMSSSA-CNIT1.0.01.0.01.0.0610610port-1port-1port-1oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index1onos-index1channel-1channel-1channel-1port-2port-2port-2oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index2onos-index2channel-2channel-2channel-2port-3port-3port-3oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index3onos-index3channel-3channel-3channel-3port-4port-4port-4oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index4onos-index4channel-4channel-4channel-4transceiver-1transceiver-1transceiver-1oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-1transceiver-2transceiver-2transceiver-2oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-2transceiver-3transceiver-3transceiver-3oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHEREN" -[2024-06-20 13:26:28,783] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:26:28,783] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:26:28,800] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:26:28,801] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:26:28,801] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:28,801] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:28,801] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:26:28,801] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:28,802] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:26:28,802] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:26:28,802] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:26:28,802] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:26:28,803] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:26:28,803] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:28,803] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:28,803] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:26:28,803] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:28,803] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:26:28,803] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:26:28,803] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:26:28,804] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:26:28,804] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:26:28,804] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:28,804] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:28,805] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:26:28,805] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:28,805] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:26:28,805] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:26:28,806] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:26:28,806] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:26:28,807] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:26:28,807] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:28,807] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:28,808] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:26:28,808] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:28,808] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: appending 16376 bytes -[2024-06-20 13:26:28,808] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: fragment = "T_OPTICCisco400zr-QSFP-DD01156732111channel-3transceiver-4transceiver-4transceiver-4oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-4falsefalsetruefalsefalsefalse192.168.1.1192.168.1.188true65432179truefalseNONEfalse30903030falsefalsefalsetruefalsefalse0falsefalsefalsefalseREJECT_ROUTEREJECT_ROUTERFC2328_COMPATIBLE11Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONE1Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-1transceiver-111Optical channel assigned 100OPTICAL_CHANNELchannel-1100.01Optical channel assigned 100OPTICAL_CHANNELchannel-1100.022Logical channel 2DISABLEDoc-opt-types:PROT_OTNNONE2Logical channel 2DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-2transceiver-211Optical channel assigned 100OPTICAL_CHANNELchannel-2100.01Optical channel assigned 100OPTICAL_CHANNELchannel-2100.033Logical channel 3DISABLEDoc-opt-types:PROT_OTNNONE3Logical channel 3DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-3transceiver-311Optical channel assigned 100OPTICAL_CHANNELchannel-3100.01Optical channel assigned 100OPTICAL_CHANNELchannel-3100.044Logical channel 4DISABLEDoc-opt-types:PROT_OTNNONE4Logical channel 4DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-4transceiver-411Optical channel assigned 100OPTICAL_CHANNELchannel-4100.01Optical channel assigned 100OPTICAL_CHANNELchannel-4100.011FEC1Ericsson22FEC2Ericssonadmin9000100$1$MAUsMGRB$0QVLq8d0AZKgnyMHQHXGj./var/confd/homes/admin/.ssh/var/confd/homes/adminoper9003103$1$OuxlaJdk$U/2..0bsSRBOdB89X.V/B./var/confd/homes/oper/.ssh/var/confd/homes/operoptical9001101$1$.fTK5rN8$70SU3wMX3Ppun/0gE7wsA0/var/confd/homes/optical/.ssh/var/confd/homes/opticalpacket9002102$1$2Q0WT3GS$kHtMcIEPrKOjv5AIRaIRp./var/confd/homes/packet/.ssh/var/confd/homes/packetprivate9005103$1$kQyh8qdQ$M.AQv0IrSWDrKfW2RHAHj0/var/confd/homes/private/.ssh/var/confd/homes/privatepublic9004100$1$MGwjebs5$q/SznJWMzKIsd1aIb5UN.1/var/confd/homes/public/.ssh/var/confd/homes/public0\h> 15\h# exec0actionautowizardenableexithelpstartup15configure6.4falsestartediana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashianachietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesinetietf-interfaces2014-05-08urn:ietf:params:xml:ns:yang:ietf-interfacesifietf-netconf-acm2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-acmnacmietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringncmietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsncnietf-yang-library2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-libraryyanglibnetconfrestietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesyangnetconf_netmodurn:ietf:params:xml:ns:netmod:notificationnmnetconfopenconfig-alarm-types2018-01-16http://openconfig.net/yang/alarms/typesoc-alarm-typesopenconfig-bfd2022-06-28http://openconfig.net/yang/bfdoc-bfdopenconfig-bgp2022-05-21http://openconfig.net/yang/bgpoc-bgpopenconfig-bgp-types2021-08-06http://openconfig.net/yang/bgp-typesoc-bgp-typesopenconfig-evpn-types2021-06-21http://openconfig.net/yang/evpn-typesoc-evpn-typesopenconfig-if-ethernet2022-04-20http://openconfig.net/yang/interfaces/ethernetoc-ethopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipoc-ipopenconfig-inet-types2021-08-17http://openconfig.net/yang/types/inetoc-inetopenconfig-interfaces2021-04-06http://openconfig.net/yang/interfacesoc-ifopenconfig-lldp2018-11-21http://openconfig.net/yang/lldpoc-lldpopenconfig-lldp-types2018-11-21http://openconfig.net/yang/lldp/typesoc-lldp-typesopenconfig-mpls-types2021-12-01http://openconfig.net/yang/mpls-typesoc-mplstopenconfig-network-instance-types2021-07-14http://openconfig.net/yang/network-instance-typesoc-ni-typesopenconfig-ospf-types2018-11-21http://openconfig.net/yang/ospf-typesoc-ospf-typesNETCONFdefault NETCONF event streamfalsemellanoxNotifications regarding the transpondertrue2024-06-06T22:51:35.958749+00:00truepermitpermitpermittrue000adminadminprivateoperoperpublicoptopticalpckpacketany-group*get*/readpermittailf-aaa-authenticationtailf-aaa/aaa/authentication/users/user[name='$USER']read updatepermittailf-aaa-usertailf-aaa/user[name='$USER']create read update deletepermittailf-webui-usertailf-webui/webui/data-stores/user-profile[username='$USER']create read update deletepermitpacketpckvlanvlan/switched-vlanscreate read update deletepermitterminal-device*/terminal-devicecreate update deletedenycomponents*/componentscreate update deletedenyopticaloptterminal-device*/terminal-devicecreate read update deletepermitcomponents*/componentscreate read update deletepermitvlanvlan/switched-vlanscreate update deletedenyadminadminany-accesspermiturn:ietf:params:netconf:base:1.0urn:ietf:params:netconf:base:1.1urn:ietf:params:netconf:capability:writable-running:1.0urn:ietf:params:netconf:capability:xpath:1.0urn:ietf:params:netconf:capability:validate:1.0urn:ietf:params:netconf:capability:validate:1.1urn:ietf:params:netconf:capability:rollback-on-error:1.0urn:ietf:params:netconf:capability:notification:1.0urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all-taggedurn:ietf:params:netconf:capability:yang-library:1.0?revision=2016-06-21&module-set-id=f1285a0c7bf3c6c159ca5c87b160ec60http://tail-f.com/ns/netconf/extensionshttp://openconfig.net/yang/alarms/types?module=openconfig-alarm-types&revision=2018-01-16http://openconfig.net/yang/bfd?module=openconfig-bfd&revision=2022-06-28http://openconfig.net/yang/bgp?module=openconfig-bgp&revision=2022-05-21http://openconfig.net/yang/bgp-types?module=openconfig-bgp-types&revision=2021-08-06http://openconfig.net/yang/evpn-types?module=openconfig-evpn-types&revision=2021-06-21http://openconfig.net/yang/interfaces?module=openconfig-interfaces&revision=2021-04-06http://openconfig.net/yang/interfaces/ethernet?module=openconfig-if-ethernet&revision=2022-04-20http://openconfig.net/yang/interfaces/ip?module=openconfig-if-ip&revision=2019-01-08http://openconfig.net/yang/lldp?module=openconfig-lldp&revision=2018-11-21http://openconfig.net/yang/lldp/types?module=openconfig-lldp-types&revision=2018-11-21http://openconfig.net/yang/mpls-types?module=openconfig-mpls-types&revision=2021-12-01http://openconfig.net/yang/network-instance-types?module=openconfig-network-instance-types&revision=2021-07-14http://openconfig.net/yang/openconfig-types?module=openconfig-types&revision=2019-04-16http://openconfig.net/yang/ospf-types?module=openconfig-ospf-types&revision=2018-11-21http://openconfig.net/yang/ospfv2?module=openconfig-ospfv2&revision=2022-02-10http://openconfig.net/yang/platform?module=openconfig-platform&revision=2018-01-30http://openconfig.net/yang/platform-types?module=openconfig-platform-types&revision=2021-01-18http://openconfig.net/yang/platform/port?module=openconfig-platform-port&revision=2021-04-22http://openconfig.net/yang/platform/transceiver?module=openconfig-platform-transceiver&revision=2021-02-23http://openconfig.net/yang/policy-types?module=openconfig-policy-types&revision=2022-11-08http://openconfig.net/yang/protocols?module=openconfig-protocolshttp://openconfig.net/yang/rib/bgp?module=openconfig-rib-bgp&revision=2022-06-06http://openconfig.net/yang/rib/bgp-types?module=openconfig-rib-bgp-types&revision=2019-03-14http://openconfig.net/yang/routing-policy?module=openconfig-routing-policy&revision=2022-05-24http://openconfig.net/yang/segment-routing-types?module=openconfig-segment-routing-types&revision=2020-02-04http://openconfig.net/yang/telemetry?module=openconfig-telemetry&revision=2018-11-21http://openconfig.net/yang/telemetry-types?module=openconfig-telemetry-types&revision=2018-11-21http://openconfig.net/yang/terminal-device?module=openconfig-terminal-device&revision=2021-02-23http://openconfig.net/yang/transport-types?module=openconfig-transport-types&revision=2021-03-22http://openconfig.net/yang/types/inet?module=openconfig-inet-types&revision=2021-08-17http://openconfig.net/yang/types/yang?module=openconfig-yang-types&revision=2021-07-14http://sssup.it/yang/vlan?module=vlanhttp://tail-f.com/ns/aaa/1.1?module=tailf-aaa&revision=2015-06-16http://tail-f.com/ns/kicker?module=tailf-kicker&revision=2017-03-16http://tail-f.com/yang/acm?module=tailf-acm&revision=2013-03-07http://tail-f.com/yang/common-monitoring?module=tailf-common-monitoring&revision=2013-06-14http://tail-f.com/yang/confd-monitoring?module=tailf-confd-monitoring&revision=2013-06-14http://tail-f.com/yang/netconf-monitoring?module=tailf-netconf-monitoring&revision=2016-11-24urn:ietf:params:xml:ns:yang:iana-crypt-hash?module=iana-crypt-hash&revision=2014-08-06&features=crypt-hash-sha-512,crypt-hash-sha-256,crypt-hash-md5urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&revision=2013-07-15urn:ietf:params:xml:ns:yang:ietf-interfaces?module=ietf-interfaces&revision=2014-05-08&features=pre-provisioning,if-mib,arbitrary-namesurn:ietf:params:xml:ns:yang:ietf-netconf-acm?module=ietf-netconf-acm&revision=2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&revision=2010-10-04urn:ietf:params:xml:ns:yang:ietf-" -[2024-06-20 13:26:28,839] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:26:28,839] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:26:28,857] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:26:28,857] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:26:28,857] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:28,857] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:28,857] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:26:28,857] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:28,857] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:26:28,857] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:26:28,857] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:26:28,857] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:26:28,858] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:26:28,858] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:28,858] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:28,858] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:26:28,858] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:28,858] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:26:28,858] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:26:28,858] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:26:28,859] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:26:28,859] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:26:28,859] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:28,859] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:28,859] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:26:28,859] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:28,859] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:26:28,859] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:26:28,859] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:26:28,859] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: starting -[2024-06-20 13:26:28,860] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:26:28,860] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:28,860] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:28,860] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:26:28,860] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:28,860] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: appending 16376 bytes -[2024-06-20 13:26:28,860] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: fragment = "netconf-notifications?module=ietf-netconf-notifications&revision=2012-02-06urn:ietf:params:xml:ns:yang:ietf-yang-library?module=ietf-yang-library&revision=2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&revision=2013-07-15urn:ietf:params:xml:ns:netconf:base:1.0?module=ietf-netconf&revision=2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?module=ietf-netconf-with-defaults&revision=2011-06-01running1717-750544-743311iana-crypt-hash2014-08-06yangurn:ietf:params:xml:ns:yang:iana-crypt-hashNETCONFietf-inet-types2013-07-15yangurn:ietf:params:xml:ns:yang:ietf-inet-typesNETCONFietf-interfaces2014-05-08yangurn:ietf:params:xml:ns:yang:ietf-interfacesNETCONFietf-netconf2011-06-01yangurn:ietf:params:xml:ns:netconf:base:1.0NETCONFietf-netconf-acm2012-02-22yangurn:ietf:params:xml:ns:yang:ietf-netconf-acmNETCONFietf-netconf-monitoring2010-10-04yangurn:ietf:params:xml:ns:yang:ietf-netconf-monitoringNETCONFietf-netconf-notifications2012-02-06yangurn:ietf:params:xml:ns:yang:ietf-netconf-notificationsNETCONFietf-netconf-with-defaults2011-06-01yangurn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsNETCONFietf-yang-library2016-06-21yangurn:ietf:params:xml:ns:yang:ietf-yang-libraryNETCONFietf-yang-types2013-07-15yangurn:ietf:params:xml:ns:yang:ietf-yang-typesNETCONFopenconfig-alarm-types2018-01-16yanghttp://openconfig.net/yang/alarms/typesNETCONFopenconfig-bfd2022-06-28yanghttp://openconfig.net/yang/bfdNETCONFopenconfig-bgp2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common-multiprotocol2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common-structure2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-errors2021-08-06yanghttp://openconfig.net/yang/bgp-typesNETCONFopenconfig-bgp-global2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-neighbor2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-peer-group2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-types2021-08-06yanghttp://openconfig.net/yang/bgp-typesNETCONFopenconfig-evpn-types2021-06-21yanghttp://openconfig.net/yang/evpn-typesNETCONFopenconfig-if-ethernet2022-04-20yanghttp://openconfig.net/yang/interfaces/ethernetNETCONFopenconfig-if-ip2019-01-08yanghttp://openconfig.net/yang/interfaces/ipNETCONFopenconfig-inet-types2021-08-17yanghttp://openconfig.net/yang/types/inetNETCONFopenconfig-interfaces2021-04-06yanghttp://openconfig.net/yang/interfacesNETCONFopenconfig-lldp2018-11-21yanghttp://openconfig.net/yang/lldpNETCONFopenconfig-lldp-types2018-11-21yanghttp://openconfig.net/yang/lldp/typesNETCONFopenconfig-mpls-types2021-12-01yanghttp://openconfig.net/yang/mpls-typesNETCONFopenconfig-network-instance-types2021-07-14yanghttp://openconfig.net/yang/network-instance-typesNETCONFopenconfig-ospf-types2018-11-21yanghttp://openconfig.net/yang/ospf-typesNETCONFopenconfig-ospfv22022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-area2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-area-interface2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-common2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-global2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-lsdb2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-platform2018-01-30yanghttp://openconfig.net/yang/platformNETCONFopenconfig-platform-port2021-04-22yanghttp://openconfig.net/yang/platform/portNETCONFopenconfig-platform-transceiver2021-02-23yanghttp://openconfig.net/yang/platform/transceiverNETCONFopenconfig-platform-types2021-01-18yanghttp://openconfig.net/yang/platform-typesNETCONFopenconfig-policy-types2022-11-08yanghttp://openconfig.net/yang/policy-typesNETCONFopenconfig-protocolsyanghttp://openconfig.net/yang/protocolsNETCONFopenconfig-rib-bgp2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-shared-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-table-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-tables2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-types2019-03-14yanghttp://openconfig.net/yang/rib/bgp-typesNETCONFopenconfig-routing-policy2022-05-24yanghttp://openconfig.net/yang/routing-policyNETCONFopenconfig-segment-routing-types2020-02-04yanghttp://openconfig.net/yang/segment-routing-typesNETCONFopenconfig-telemetry2018-11-21yanghttp://openconfig.net/yang/telemetryNETCONFopenconfig-telemetry-types2018-11-21yanghttp://openconfig.net/yang/telemetry-typesNETCONFopenconfig-terminal-device2021-02-23yanghttp://openconfig.net/yang/terminal-deviceNETCONFopenconfig-transport-types2021-03-22yanghttp://openconfig.net/yang/transport-typesNETCONFopenconfig-types2019-04-16yanghttp://openconfig.net/yang/openconfig-typesNETCONFopenconfig-yang-types2021-07-14yanghttp://openconfig.net/yang/types/yangNETCONFtailf-aaa2015-06-16yanghttp://tail-f.com/ns/aaa/1.1NETCONFtailf-acm2013-03-07yanghttp://tail-f.com/yang/acmNETCONFtailf-common-monitoring2013-06-14yanghttp://tail-f.com/yang/common-monitoringNETCONFtailf-confd-monitoring2013-06-14yanghttp://tail-f.com/yang/confd-monitoringNETCONFtailf-kicker2017-03-16yanghttp://tail-f.com/ns/kickerNETCONFtailf-netconf-monitoring2016-11-24yanghttp://tail-f.com/yang/netconf-monitoringNETCONFvlanyanghttp://sssup.it/yang/vlanNETCONF29netconf-sshadmin10.30.2.2062024-06-06T23:11:11+00:00400030netconf-sshadmin10.30.2.2062024-06-06T23:11:20+00:00200031netconf-sshadmin10.30.2.2062024-06-06T23:11:29+00:00200032netconf-sshadmin10.30.2.2082024-06-20T13:23:47+00:00400033netconf-sshadmin10.30.2.2082024-06-20T13:23:53+00:00200034netconf-sshadmin10.30.2.2082024-06-20T13:24:00+00:0020002024-06-06T22:51:35+00:0006016000NETCONFdefault NETCONF event streamfalsemellanoxNotifications regarding the transpondertrue2024-06-06T22:51:35.958749+00:00f1285a0c7bf3c6c159ca5c87b160ec60iana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashcrypt-hash-sha-512crypt-hash-sha-256crypt-hash-md5importietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesimportietf-interfaces2014-05-08urn:ietf:params:xml:ns:yang:ietf-interfacespre-provisioningif-mibarbitrary-namesimplementietf-netconf2011-06-01urn:ietf:params:xml:ns:netconf:base:1.0implementietf-netconf-acm2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-acmimplementietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringimplementietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsimplementietf-netconf-with-defaults2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsimplementietf-yang-library2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-libraryimplementietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesimportopenconfig-alarm-types2018-01-16http://openconfig.net/yang/alarms/typesimportopenconfig-bfd2022-06-28http://openconfig.net/yang/bfdimplementopenconfig-bgp2022-05-21http://openconfig.net/yang/bgpimplementopenconfig-bgp-common2022-05-21openconfig-bgp-common-structure2022-05-21openconfig-bgp-global2022-05-21openconfig-bgp-neighbor2022-05-21openconfig-bgp-peer-group2022-05-21openconfig-bgp-common-multiprotocol2022-05-21openconfig-bgp-types2021-08-06http://openconfig.net/yang/bgp-typesimportopenconfig-bgp-errors2021-08-06openconfig-evpn-types2021-06-21http://openconfig.net/yang/evpn-typesimportopenconfig-if-ethernet2022-04-20http://openconfig.net/yang/interfaces/ethernetimplementopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipimplementopenconfig-inet-types2021-08-17http://openconfig.net/yang/types/inetimportopenconfig-interfaces2021-04-06http://openconfig.net/yang/interfacesimplementopenconfig-lldp2018-11-21http://openconfig.net/yang/lldpimplementopenconfig-lldp-types2018-11-21http://openconfig.net/yang/lldp/typesimportopenconfig-mpls-types2021-12-01http://openconfig.net/yang/mpls-typesimportopenconfig-ospf-types2018-11-21http://openconfig.net/yang/ospf-typesimportopenconfig-ospfv22022-02-10http://openconfig.net/yang/ospfv2importopenconfig-ospfv2-area2022-02-10openconfig-ospfv2-common2022-02-10openconfig-ospfv2-global2022-02-10openconfig-ospfv2-lsdb2022-02-10openconfig-ospfv2-area-interface2022-02-10openconfig-platform2018-01-30http://openconfig.net/yang/platformimplementopenconfig-platform-port2021-04-22http://openconfig.net/yang/platform/portimplementopenconfig-platform-transceiver2021-02-23http://openconfig.net/yang/platform/transceiverimplementopenconfig-platform-types2021-01-18http://openconfig.net/yang/platform-typesimportopenconfig-policy-types2022-11-08http://openconfig.net/yang/policy-typesimportopenconfig-protocolshttp://openconfig.net/yang/protocolsimplementopenconfig-rib-bgp2022-06-06http://openconfig.net/yang/rib/bgpimportopenconfig-rib-bgp-attributes2022-06-06openconfig-rib-bgp-tables2022-06-06openconfig-rib-bgp-table-attributes2022-06-06openconfig-rib-bgp-shared-attributes2022-06-06openconfig-rib-bgp-types2019-03-14http://openconfig.net/yang/rib/bgp-typesimportopenconfig-routing-policy2022-05-24http://openconfig.net/yang/routing-policyimplementopenconfig-telemetry2018-11-21http://openconfig.net/yang/telemetryimplementopenconfig-telemetry-types2018-11-21http://openconfig.net/yang/telemetry-typesimportopenconfig-terminal-device2021-02-23http://openconfig.net/yang/terminal-deviceimplementopenconfig-transport-types2021-03-22http://openconfig.net/yang/transport-typesimportopenconfig-types2019-04-16http://openconfig.net/yang/openconfig-typesimportopenconfig-yang-types2021-07-14http://openconfig.net/yang/types/yangimporttailf-aaa2015-06-16http://tail-f.com/ns/aaa/1.1implementtailf-acm2013-03-07http://tail-f.com/yang/acmimplementtailf-common-monitoring2013-06-14http://tail-f.com/yang/common-monitoringimporttailf-confd-monitoring2013-06-14http://tail-f.com/yang/confd-monitoringimplementtailf-kicker2017-03-16http://tail-f.com/ns/kickerimplementtailf-netconf-monitoring2016-11-24http://tail-f.com/yang/netconf-monitoringimplementvlanhttp://sssup.it/yang/vlanimplementopenconfig-segment-routing-types2020-02-04http://openconfig.net/yang/segment-routing-typesimportopenconfig-network-instance-types2021-07-14http://openconfig.net/yang/network-instance-typesimport
" -[2024-06-20 13:26:28,870] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: matching from 10855 bytes from start of buffer -[2024-06-20 13:26:28,870] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: regular expression start=0, end=4 -[2024-06-20 13:26:28,870] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: found end of message delimiter -[2024-06-20 13:26:28,871] DEBUG:ncclient.operations.rpc:[host 172.17.254.41 session-id 32] Delivering to -[2024-06-20 13:26:28,871] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: saving back rest of message after 10859 bytes, original size 10859 -[2024-06-20 13:26:28,872] DEBUG:ncclient.transport.parser:[host 172.17.254.41 session-id 32] _parse11: ending -[2024-06-20 13:26:28,883] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:28,885] INFO:root:dic {'frequency': '192056250'} -[2024-06-20 13:26:28,886] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:28,888] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0'} -[2024-06-20 13:26:28,888] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:28,890] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8'} -[2024-06-20 13:26:28,891] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:28,893] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1'} -[2024-06-20 13:26:28,893] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:28,895] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:26:28,895] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:28,897] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:26:28,898] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:28,900] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:26:28,900] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:28,902] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-06-20 13:26:28,903] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:28,905] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:26:28,905] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:28,907] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:26:28,908] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:28,910] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:26:28,910] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:28,912] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-06-20 13:26:28,913] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:28,915] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:26:28,915] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:28,917] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:26:28,917] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:28,920] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:26:28,920] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:28,922] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-06-20 13:26:28,925] INFO:root:parameters {'channels': [{'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1', 'name': {'index': 'channel-1'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2', 'name': {'index': 'channel-2'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3', 'name': {'index': 'channel-3'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4', 'name': {'index': 'channel-4'}}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'ports': [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})]} -[2024-06-20 13:26:28,926] DEBUG:context.client.ContextClient:SetOpticalConfig request: {"config": "{\"channels\": [{\"frequency\": \"192056250\", \"target-output-power\": \"1.0\", \"operational-mode\": \"8\", \"line-port\": \"transceiver-1\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": [\"transceiver-1\", \"transceiver-2\", \"transceiver-3\", \"transceiver-4\"]}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}", "device_id": {"device_uuid": {"uuid": "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7"}}} -[2024-06-20 13:26:28,951] DEBUG:context.client.ContextClient:SetOpticalConfig result: {"opticalconfig_uuid": ""} -[2024-06-20 13:26:28,951] DEBUG:device.service.OpenConfigServicer:ConfigureOpticalDevice reply: {} -[2024-06-20 13:26:28,974] DEBUG:device.service.OpenConfigServicer:ConfigureOpticalDevice request: {"config": "{\"channels\": [], \"transceivers\": {\"transceiver\": []}, \"interfaces\": {\"interface\": \"\"}, \"channel_namespace\": null, \"endpoints\": [], \"device_name\": \"R1\", \"new_config\": {\"target-output-power\": \"1.0\", \"frequency\": 192056250, \"operational-mode\": 8, \"band\": 100000, \"flow_id\": 1, \"ob_id\": 1, \"band_type\": \"C_BAND\"}, \"is_opticalband\": false, \"flow\": [[\"0b1c4d0e-5140-5085-ab66-2def390b650f\", \"77df46fd-6d6e-5726-9960-ca439c925dea\"]]}", "device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "opticalconfig_id": {"opticalconfig_uuid": "8e7fd0ea-e9de-54a3-a3bd-bf3ae86efbf3"}} -[2024-06-20 13:26:28,974] INFO:device.service.OpenConfigServicer: config from openconfigservicer {'channels': [], 'transceivers': {'transceiver': []}, 'interfaces': {'interface': ''}, 'channel_namespace': None, 'endpoints': [], 'device_name': 'R1', 'new_config': {'target-output-power': '1.0', 'frequency': 192056250, 'operational-mode': 8, 'band': 100000, 'flow_id': 1, 'ob_id': 1, 'band_type': 'C_BAND'}, 'is_opticalband': False, 'flow': [['0b1c4d0e-5140-5085-ab66-2def390b650f', '77df46fd-6d6e-5726-9960-ca439c925dea']]} -[2024-06-20 13:26:28,974] DEBUG:context.client.ContextClient:Creating channel to 10.152.183.195:1010... -[2024-06-20 13:26:28,975] DEBUG:context.client.ContextClient:Channel created -[2024-06-20 13:26:28,975] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}]}, "include_components": false, "include_config_rules": false, "include_endpoints": true} -[2024-06-20 13:26:29,022] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": [{"components": [], "controller_id": {}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "02c19f3c-73ac-55b9-b4c2-7def7e7df9fe"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-48-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "0332be2a-9b4e-52d7-ac7b-3ea58bf00375"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-12-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "08da1aa7-9253-5e92-bf2c-6e66ffe7a4ff"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-38-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "0b1c4d0e-5140-5085-ab66-2def390b650f"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-33-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "12b4419f-9ae9-5839-ad52-9684b1f30878"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-34-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "188af412-9ac2-588f-8f00-a956aa6b2ae5"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-43-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "18a51dcf-905d-5104-9ef1-f24740fd6d78"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-12-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "1e02e33d-4b14-502d-9806-988f64cccb5d"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-43-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "21b8ccaa-9f7b-5bc5-9fc0-6f32025eb8a6"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-41-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "22d287ab-7935-55cb-b681-944a064726a9"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-11-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "28666b3c-4b96-5cb6-8006-eba13ca8ab6e"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-9-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "29e8b36f-6989-5651-99fe-b3cb2ee5b4b8"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-40-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "2b646bf7-3120-5254-a4fb-748294c61a71"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-2-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "35aaee89-81a3-56b1-b1ba-33f972d0af49"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-36-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "385bc8da-171b-574c-9d4f-d9b08f29c469"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-40-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "38f57fc2-4b25-5b8e-8ab0-e2676594b652"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-39-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "3972ab17-4386-5a0c-92db-fc8096433068"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-38-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "3a49ceb2-fd5b-59e2-975a-b065c4e127a4"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-7-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "3b1551b2-3c17-54f6-8990-308ee42b421d"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-15-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "3f8b1948-619c-5130-a158-b7beb838434c"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-14-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "435a198b-cd6f-5d29-a72d-ea4f04cb658a"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-35-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "436bb32a-c8a0-5718-bbdb-382c79d96587"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-1-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "4b197fb8-d26e-59fb-a96c-d347ba017b28"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-46-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "53e3c997-d487-5d96-a6c4-998a562dcb96"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-5-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "55684f06-7aab-5061-aa0d-2e37b45e5ec7"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-2-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "56c81904-047c-5d7c-a765-79b9e4b7abf2"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-3-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "59871dc1-872d-5df1-9392-2537a591c86c"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-45-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "59fcacb0-1840-5dd3-9dfa-a07cf4f91bd2"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-3-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "5ac999c3-3df8-53c4-8f4a-52e5943f5c4c"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-14-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "62099377-4f4f-5ffb-aa37-6dec3319a21e"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-13-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "6a6dc5d4-567c-5104-b50d-6820768d2699"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-46-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "77df46fd-6d6e-5726-9960-ca439c925dea"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-1-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "7be48ef0-2357-55fa-aca6-a1aeeeb3267a"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-42-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "7ce13dc8-d5f1-5233-beec-1d99416c9164"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-44-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "883609be-6125-5bbf-91ac-2a30e75a7d1e"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-16-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "8d0c4ac4-c522-5992-a206-45e8bf8389c6"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-7-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "904c4b18-10a6-512b-9bb2-8ec81e74fda4"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-34-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "91492a21-2f88-5acc-a427-2a57230eb2ea"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-15-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "927b0db8-602b-54d5-acd9-c1cd6395425f"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-39-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "a18a7eb1-811d-5d27-be08-db212d83f25e"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-45-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "a7058178-97da-5b95-b969-abe5ab7a8e6f"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-42-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "a7d33ece-9565-59ec-999f-4c995d142f83"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-4-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "a9061634-e9a7-5d13-bc96-09fbf31cd610"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-41-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "b5354091-162e-5073-aeb2-ec5debcfcf9f"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-16-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "b9fbeed8-e304-5bd5-90e1-3e43c6af5a16"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-35-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "c31537c8-13df-503d-bf91-64e860e6b573"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-48-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "ca4f5f60-37ba-567b-a474-ff8951033342"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-47-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "cc197d41-625f-50d1-94d8-c6c63a31ccfb"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-8-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "ccb07637-f7d6-5b4a-9fc6-8510ef694cd9"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-4-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "cd539095-12a6-5460-8b07-481ec1901c9a"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-33-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "cfe60fca-3fe5-5747-ace8-ca7913e26d81"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-13-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "dda83a5d-29b7-5f96-9b0a-bd1f39e1db2f"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-37-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "e2500678-0f36-555a-9133-7cd04d3ad63a"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-6-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "e5265cb0-2e80-5ea1-80d8-333749bb7f14"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-5-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "e9d0dac3-11f2-5b84-9125-d0300ccd8eeb"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-37-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "e9d4bff3-76ac-5490-b897-a30b9a42a8b1"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-44-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "ea73d8c4-1077-55c9-87f1-9c377cee196f"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-9-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "eb38e3cd-e42a-54b2-846c-82207a95e8e3"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-10-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "ebfe571c-77b2-5f66-9efe-25583cc1f587"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-36-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "ee4df110-8657-571c-aa20-a70ec79db01f"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-47-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "f206246e-cb90-56b4-b908-1dc3daa7ac3f"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-11-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "f7052fb4-fab8-5821-95e0-d407043742d8"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-8-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "f8bd2b7e-6d37-5bbc-92f4-9b9b2e0ce22c"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-10-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "endpoint_uuid": {"uuid": "ff51524f-7b51-5efd-af6b-6bc8541d3716"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-6-out"}], "device_id": {"device_uuid": {"uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-roadm", "name": "R1"}]} -[2024-06-20 13:26:29,023] INFO:device.service.OpenConfigServicer:device is device_id { - device_uuid { - uuid: "68741528-2e94-5274-ab3c-fddcd8dc05ef" - } -} -name: "R1" -device_type: "optical-roadm" -device_operational_status: DEVICEOPERATIONALSTATUS_ENABLED -device_drivers: DEVICEDRIVER_OC -device_endpoints { - endpoint_id { - 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: "02c19f3c-73ac-55b9-b4c2-7def7e7df9fe" - } - } - name: "port-48-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0332be2a-9b4e-52d7-ac7b-3ea58bf00375" - } - } - name: "port-12-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "08da1aa7-9253-5e92-bf2c-6e66ffe7a4ff" - } - } - name: "port-38-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0b1c4d0e-5140-5085-ab66-2def390b650f" - } - } - name: "port-33-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "12b4419f-9ae9-5839-ad52-9684b1f30878" - } - } - name: "port-34-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "188af412-9ac2-588f-8f00-a956aa6b2ae5" - } - } - name: "port-43-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "18a51dcf-905d-5104-9ef1-f24740fd6d78" - } - } - name: "port-12-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "1e02e33d-4b14-502d-9806-988f64cccb5d" - } - } - name: "port-43-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "21b8ccaa-9f7b-5bc5-9fc0-6f32025eb8a6" - } - } - name: "port-41-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "22d287ab-7935-55cb-b681-944a064726a9" - } - } - name: "port-11-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "28666b3c-4b96-5cb6-8006-eba13ca8ab6e" - } - } - name: "port-9-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "29e8b36f-6989-5651-99fe-b3cb2ee5b4b8" - } - } - name: "port-40-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "2b646bf7-3120-5254-a4fb-748294c61a71" - } - } - name: "port-2-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "35aaee89-81a3-56b1-b1ba-33f972d0af49" - } - } - name: "port-36-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "385bc8da-171b-574c-9d4f-d9b08f29c469" - } - } - name: "port-40-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "38f57fc2-4b25-5b8e-8ab0-e2676594b652" - } - } - name: "port-39-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3972ab17-4386-5a0c-92db-fc8096433068" - } - } - name: "port-38-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3a49ceb2-fd5b-59e2-975a-b065c4e127a4" - } - } - name: "port-7-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3b1551b2-3c17-54f6-8990-308ee42b421d" - } - } - name: "port-15-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3f8b1948-619c-5130-a158-b7beb838434c" - } - } - name: "port-14-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "435a198b-cd6f-5d29-a72d-ea4f04cb658a" - } - } - name: "port-35-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "436bb32a-c8a0-5718-bbdb-382c79d96587" - } - } - name: "port-1-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "4b197fb8-d26e-59fb-a96c-d347ba017b28" - } - } - name: "port-46-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "53e3c997-d487-5d96-a6c4-998a562dcb96" - } - } - name: "port-5-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "55684f06-7aab-5061-aa0d-2e37b45e5ec7" - } - } - name: "port-2-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "56c81904-047c-5d7c-a765-79b9e4b7abf2" - } - } - name: "port-3-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "59871dc1-872d-5df1-9392-2537a591c86c" - } - } - name: "port-45-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "59fcacb0-1840-5dd3-9dfa-a07cf4f91bd2" - } - } - name: "port-3-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5ac999c3-3df8-53c4-8f4a-52e5943f5c4c" - } - } - name: "port-14-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "62099377-4f4f-5ffb-aa37-6dec3319a21e" - } - } - name: "port-13-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "6a6dc5d4-567c-5104-b50d-6820768d2699" - } - } - name: "port-46-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "77df46fd-6d6e-5726-9960-ca439c925dea" - } - } - name: "port-1-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "7be48ef0-2357-55fa-aca6-a1aeeeb3267a" - } - } - name: "port-42-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "7ce13dc8-d5f1-5233-beec-1d99416c9164" - } - } - name: "port-44-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "883609be-6125-5bbf-91ac-2a30e75a7d1e" - } - } - name: "port-16-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "8d0c4ac4-c522-5992-a206-45e8bf8389c6" - } - } - name: "port-7-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "904c4b18-10a6-512b-9bb2-8ec81e74fda4" - } - } - name: "port-34-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "91492a21-2f88-5acc-a427-2a57230eb2ea" - } - } - name: "port-15-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "927b0db8-602b-54d5-acd9-c1cd6395425f" - } - } - name: "port-39-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a18a7eb1-811d-5d27-be08-db212d83f25e" - } - } - name: "port-45-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a7058178-97da-5b95-b969-abe5ab7a8e6f" - } - } - name: "port-42-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a7d33ece-9565-59ec-999f-4c995d142f83" - } - } - name: "port-4-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a9061634-e9a7-5d13-bc96-09fbf31cd610" - } - } - name: "port-41-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b5354091-162e-5073-aeb2-ec5debcfcf9f" - } - } - name: "port-16-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b9fbeed8-e304-5bd5-90e1-3e43c6af5a16" - } - } - name: "port-35-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c31537c8-13df-503d-bf91-64e860e6b573" - } - } - name: "port-48-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ca4f5f60-37ba-567b-a474-ff8951033342" - } - } - name: "port-47-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cc197d41-625f-50d1-94d8-c6c63a31ccfb" - } - } - name: "port-8-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ccb07637-f7d6-5b4a-9fc6-8510ef694cd9" - } - } - name: "port-4-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cd539095-12a6-5460-8b07-481ec1901c9a" - } - } - name: "port-33-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cfe60fca-3fe5-5747-ace8-ca7913e26d81" - } - } - name: "port-13-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "dda83a5d-29b7-5f96-9b0a-bd1f39e1db2f" - } - } - name: "port-37-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e2500678-0f36-555a-9133-7cd04d3ad63a" - } - } - name: "port-6-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e5265cb0-2e80-5ea1-80d8-333749bb7f14" - } - } - name: "port-5-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e9d0dac3-11f2-5b84-9125-d0300ccd8eeb" - } - } - name: "port-37-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e9d4bff3-76ac-5490-b897-a30b9a42a8b1" - } - } - name: "port-44-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ea73d8c4-1077-55c9-87f1-9c377cee196f" - } - } - name: "port-9-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "eb38e3cd-e42a-54b2-846c-82207a95e8e3" - } - } - name: "port-10-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ebfe571c-77b2-5f66-9efe-25583cc1f587" - } - } - name: "port-36-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ee4df110-8657-571c-aa20-a70ec79db01f" - } - } - name: "port-47-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "f206246e-cb90-56b4-b908-1dc3daa7ac3f" - } - } - name: "port-11-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "f7052fb4-fab8-5821-95e0-d407043742d8" - } - } - name: "port-8-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "f8bd2b7e-6d37-5bbc-92f4-9b9b2e0ce22c" - } - } - name: "port-10-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ff51524f-7b51-5efd-af6b-6bc8541d3716" - } - } - name: "port-6-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -controller_id { -} - -[2024-06-20 13:26:29,024] INFO:device.service.OpenConfigServicer:from openconfigservicer [{'resource_key': 'channel_namespace', 'value': None}, {'resource_key': 'add_transceiver', 'value': None}, {'resource_key': 'source_port', 'value': ['port-33-in']}, {'resource_key': 'destination_port', 'value': ['port-1-out']}, {'resource_key': 'target-output-power', 'value': '1.0'}, {'resource_key': 'frequency', 'value': 192056250}, {'resource_key': 'operational-mode', 'value': 8}, {'resource_key': 'line-port', 'value': None}, {'resource_key': 'name', 'value': 'C_BAND'}, {'resource_key': 'optical-band-parent', 'value': 1}, {'resource_key': 'channel_name', 'value': None}, {'resource_key': 'lower-frequency', 'value': None}, {'resource_key': 'upper-frequency', 'value': None}] and conditions {'is_opticalband': False, 'edit_type': 'optical-channel'} -[2024-06-20 13:26:29,025] INFO:root:ports are {'source_port': ['port-33-in'], 'destination_port': ['port-1-out']} -[2024-06-20 13:26:29,025] INFO:device.service.OpenConfigServicer:error in configuring xml/html attributes should be passed as strings, ints or floats. Got None (type ) instead. -[2024-06-20 13:26:29,026] DEBUG:device.service.OpenConfigServicer:ConfigureOpticalDevice reply: {} -[2024-06-20 13:26:29,040] DEBUG:device.service.OpenConfigServicer:ConfigureOpticalDevice request: {"config": "{\"channels\": [], \"transceivers\": {\"transceiver\": []}, \"interfaces\": {\"interface\": \"\"}, \"channel_namespace\": null, \"endpoints\": [], \"device_name\": \"R2\", \"new_config\": {\"target-output-power\": \"1.0\", \"frequency\": 192056250, \"operational-mode\": 8, \"band\": 100000, \"flow_id\": 1, \"ob_id\": 1, \"band_type\": \"C_BAND\"}, \"is_opticalband\": false, \"flow\": [[\"bcfb768c-e8fb-5e0b-9559-821d120b5410\", \"76d3c064-04eb-5edf-95ac-645cb6348b61\"]]}", "device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "opticalconfig_id": {"opticalconfig_uuid": "338f26c4-1443-5e19-b7ea-6d395a3f2366"}} -[2024-06-20 13:26:29,040] INFO:device.service.OpenConfigServicer: config from openconfigservicer {'channels': [], 'transceivers': {'transceiver': []}, 'interfaces': {'interface': ''}, 'channel_namespace': None, 'endpoints': [], 'device_name': 'R2', 'new_config': {'target-output-power': '1.0', 'frequency': 192056250, 'operational-mode': 8, 'band': 100000, 'flow_id': 1, 'ob_id': 1, 'band_type': 'C_BAND'}, 'is_opticalband': False, 'flow': [['bcfb768c-e8fb-5e0b-9559-821d120b5410', '76d3c064-04eb-5edf-95ac-645cb6348b61']]} -[2024-06-20 13:26:29,040] DEBUG:context.client.ContextClient:Creating channel to 10.152.183.195:1010... -[2024-06-20 13:26:29,041] DEBUG:context.client.ContextClient:Channel created -[2024-06-20 13:26:29,041] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}]}, "include_components": false, "include_config_rules": false, "include_endpoints": true} -[2024-06-20 13:26:29,079] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": [{"components": [], "controller_id": {}, "device_drivers": ["DEVICEDRIVER_OC"], "device_endpoints": [{"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "053a62f6-2760-562a-b285-15a9b159c2c5"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-46-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "0a9b56db-32f8-5c60-83af-7ceaa39c618e"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-2-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "0d103312-7c8c-5e8a-980f-f6863b42d0d3"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-10-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "0ee5d330-9700-5684-92c1-bcb6c4c8a3bc"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-8-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "115ed444-0128-53f1-aa1a-ce8129a55f67"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-9-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "12ea85fc-4388-59c1-9cb9-b480ee06e01a"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-45-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "14bb0e42-db22-5dfb-b618-4caa72a8e8cc"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-42-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "18a7b3b1-d4a3-590a-a5a9-b7db5293ac61"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-48-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "19041fc0-6807-5b8f-9b26-7e7eed556980"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-6-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "1950275c-e218-5190-8ca5-6a2228c4a87b"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-10-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "21db5850-b53e-57de-ba2a-bf578bffb1ea"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-46-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "261a53b4-d257-5f35-bf5b-b2f975d7d2ed"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-35-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "266dc3a1-0892-5454-a917-3fa62190c6c2"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-8-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "2e4f4523-3fb0-5704-9a47-1cf467d70bc8"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-13-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "2f6d500b-2407-516f-9468-4f059b218f4b"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-43-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "3062d499-cf08-5f02-94c6-8906ebdf756b"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-41-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "31060d00-8617-55c3-92f2-f42b876478c1"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-4-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "399d3645-5565-502b-bfc8-3ea9cf68a83b"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-36-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "3ba5f6db-ffde-59d9-a7ae-af06e96a9674"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-40-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "3e17084e-d2b4-5cb2-b31a-7f6d80feb60e"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-5-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "3e74aa2a-cf0d-51ce-b406-dcf1b96ae5d5"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-11-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "3efedbc2-7363-53cf-a0b9-fc4a2bcbd245"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-1-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "48a917ad-12d8-5ec4-aaab-84b35337abfe"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-14-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "5047aede-f784-58ab-b80a-454386a43c64"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-12-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "50b41e11-e2f7-5720-b2b0-bc2a43eb7b95"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-38-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "5aeb719f-e322-5185-be08-a2f837992a4f"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-44-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "5cfa4f91-cbce-5721-b612-e6b5eaa76721"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-35-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "5d5cb9d0-e675-55b7-8a76-5649f4c95c81"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-39-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "5dd55ad7-b980-562e-b579-d724a3655d31"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-34-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "5eba7909-6f11-5154-b6e9-e2a2bbc75bb0"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-48-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "625560d9-4809-5f40-b3cf-23ec59efe71a"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-38-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "630a400f-dd0c-51d0-8049-c281881190b0"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-3-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "6a2d629b-9dfe-58af-bc5b-96277a127512"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-41-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "6e621543-9616-57bf-806c-2564047f234b"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-15-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "6e9b83ef-b9a4-5898-9495-38c45635aac7"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-34-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "72fabf2f-0121-5198-a4bf-ab82034d7da9"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-16-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "743daf39-41eb-500c-b61b-d7b473249022"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-47-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "76d3c064-04eb-5edf-95ac-645cb6348b61"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-33-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "77d8c722-2ad2-5a7c-8669-fb900f1166e1"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-45-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "8657516b-33f4-5d1c-839d-51acbc6fb93d"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-36-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "86f6b3e0-3e7e-5db2-bb71-6e05229c97eb"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-3-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "922a952b-50b6-5985-bf44-3afeb53f396e"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-44-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "94ae7ec2-0cba-55ea-a36f-2143b205ed64"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-43-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "994c45dd-b2b8-53c4-957d-4834f45e0e1f"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-13-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "a08ab669-238c-5e9e-9e86-780d39111595"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-40-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "a751a510-e108-5819-bafb-3d3e6881b4eb"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-12-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "b22d517e-2d36-518b-9e3e-c75c625f06ef"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-7-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "b3ab2b45-ed47-5c14-801d-b1104dd9d619"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-6-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "b71a78da-69db-5260-8a15-8de81d02a20d"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-9-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "bc82f789-cbb1-5f3e-b989-88dab185ea0d"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-37-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "bcfb768c-e8fb-5e0b-9559-821d120b5410"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-1-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "bd08db44-134e-5902-bb24-b2453bf21db4"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-5-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "be1b3bb0-8aed-569a-be91-e888b0c0985d"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-33-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "c027a391-2cf6-5b96-bba3-051e01c63f43"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-7-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "c2d5ac50-2faf-5608-a6ae-7c023bceb289"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-39-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "c4568f02-d291-5c95-b9bc-846278862db9"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-4-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "c559fb60-6495-5992-b339-ac7a590e337c"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-16-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "cace07d7-0ca3-51be-bef1-b58db0ccba6f"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-2-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "caf865b8-df54-5601-9163-1cdbe8f7a599"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-47-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "cc5064c4-bc42-5c50-b5b0-9b2ad1405bd8"}, "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_MEDIACHANNEL_INPUT", "kpi_sample_types": [], "name": "port-42-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "e650eba7-019d-5c4f-9d75-14d47a711f2f"}, "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_WAVEBAND_OUTPUT", "kpi_sample_types": [], "name": "port-14-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "e7566eac-9fa0-5137-929a-7cf2485babea"}, "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_MEDIACHANNEL_OUTPUT", "kpi_sample_types": [], "name": "port-37-out"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "ea7812b2-db7c-5504-a415-6b4299ae090f"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-11-in"}, {"endpoint_id": {"device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "endpoint_uuid": {"uuid": "fd4d5404-baf3-5f5f-b7b7-a825c90e5f2a"}, "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_WAVEBAND_INPUT", "kpi_sample_types": [], "name": "port-15-in"}], "device_id": {"device_uuid": {"uuid": "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_type": "optical-roadm", "name": "R2"}]} -[2024-06-20 13:26:29,080] INFO:device.service.OpenConfigServicer:device is device_id { - device_uuid { - uuid: "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6" - } -} -name: "R2" -device_type: "optical-roadm" -device_operational_status: DEVICEOPERATIONALSTATUS_ENABLED -device_drivers: DEVICEDRIVER_OC -device_endpoints { - endpoint_id { - 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: "053a62f6-2760-562a-b285-15a9b159c2c5" - } - } - name: "port-46-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0a9b56db-32f8-5c60-83af-7ceaa39c618e" - } - } - name: "port-2-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0d103312-7c8c-5e8a-980f-f6863b42d0d3" - } - } - name: "port-10-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0ee5d330-9700-5684-92c1-bcb6c4c8a3bc" - } - } - name: "port-8-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "115ed444-0128-53f1-aa1a-ce8129a55f67" - } - } - name: "port-9-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "12ea85fc-4388-59c1-9cb9-b480ee06e01a" - } - } - name: "port-45-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "14bb0e42-db22-5dfb-b618-4caa72a8e8cc" - } - } - name: "port-42-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "18a7b3b1-d4a3-590a-a5a9-b7db5293ac61" - } - } - name: "port-48-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "19041fc0-6807-5b8f-9b26-7e7eed556980" - } - } - name: "port-6-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "1950275c-e218-5190-8ca5-6a2228c4a87b" - } - } - name: "port-10-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "21db5850-b53e-57de-ba2a-bf578bffb1ea" - } - } - name: "port-46-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "261a53b4-d257-5f35-bf5b-b2f975d7d2ed" - } - } - name: "port-35-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "266dc3a1-0892-5454-a917-3fa62190c6c2" - } - } - name: "port-8-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "2e4f4523-3fb0-5704-9a47-1cf467d70bc8" - } - } - name: "port-13-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "2f6d500b-2407-516f-9468-4f059b218f4b" - } - } - name: "port-43-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3062d499-cf08-5f02-94c6-8906ebdf756b" - } - } - name: "port-41-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "31060d00-8617-55c3-92f2-f42b876478c1" - } - } - name: "port-4-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "399d3645-5565-502b-bfc8-3ea9cf68a83b" - } - } - name: "port-36-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3ba5f6db-ffde-59d9-a7ae-af06e96a9674" - } - } - name: "port-40-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3e17084e-d2b4-5cb2-b31a-7f6d80feb60e" - } - } - name: "port-5-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3e74aa2a-cf0d-51ce-b406-dcf1b96ae5d5" - } - } - name: "port-11-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3efedbc2-7363-53cf-a0b9-fc4a2bcbd245" - } - } - name: "port-1-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "48a917ad-12d8-5ec4-aaab-84b35337abfe" - } - } - name: "port-14-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5047aede-f784-58ab-b80a-454386a43c64" - } - } - name: "port-12-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "50b41e11-e2f7-5720-b2b0-bc2a43eb7b95" - } - } - name: "port-38-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5aeb719f-e322-5185-be08-a2f837992a4f" - } - } - name: "port-44-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5cfa4f91-cbce-5721-b612-e6b5eaa76721" - } - } - name: "port-35-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5d5cb9d0-e675-55b7-8a76-5649f4c95c81" - } - } - name: "port-39-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5dd55ad7-b980-562e-b579-d724a3655d31" - } - } - name: "port-34-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5eba7909-6f11-5154-b6e9-e2a2bbc75bb0" - } - } - name: "port-48-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "625560d9-4809-5f40-b3cf-23ec59efe71a" - } - } - name: "port-38-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "630a400f-dd0c-51d0-8049-c281881190b0" - } - } - name: "port-3-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "6a2d629b-9dfe-58af-bc5b-96277a127512" - } - } - name: "port-41-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "6e621543-9616-57bf-806c-2564047f234b" - } - } - name: "port-15-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "6e9b83ef-b9a4-5898-9495-38c45635aac7" - } - } - name: "port-34-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "72fabf2f-0121-5198-a4bf-ab82034d7da9" - } - } - name: "port-16-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "743daf39-41eb-500c-b61b-d7b473249022" - } - } - name: "port-47-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "76d3c064-04eb-5edf-95ac-645cb6348b61" - } - } - name: "port-33-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "77d8c722-2ad2-5a7c-8669-fb900f1166e1" - } - } - name: "port-45-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "8657516b-33f4-5d1c-839d-51acbc6fb93d" - } - } - name: "port-36-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "86f6b3e0-3e7e-5db2-bb71-6e05229c97eb" - } - } - name: "port-3-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "922a952b-50b6-5985-bf44-3afeb53f396e" - } - } - name: "port-44-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "94ae7ec2-0cba-55ea-a36f-2143b205ed64" - } - } - name: "port-43-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "994c45dd-b2b8-53c4-957d-4834f45e0e1f" - } - } - name: "port-13-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a08ab669-238c-5e9e-9e86-780d39111595" - } - } - name: "port-40-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a751a510-e108-5819-bafb-3d3e6881b4eb" - } - } - name: "port-12-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b22d517e-2d36-518b-9e3e-c75c625f06ef" - } - } - name: "port-7-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b3ab2b45-ed47-5c14-801d-b1104dd9d619" - } - } - name: "port-6-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b71a78da-69db-5260-8a15-8de81d02a20d" - } - } - name: "port-9-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "bc82f789-cbb1-5f3e-b989-88dab185ea0d" - } - } - name: "port-37-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "bcfb768c-e8fb-5e0b-9559-821d120b5410" - } - } - name: "port-1-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "bd08db44-134e-5902-bb24-b2453bf21db4" - } - } - name: "port-5-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "be1b3bb0-8aed-569a-be91-e888b0c0985d" - } - } - name: "port-33-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c027a391-2cf6-5b96-bba3-051e01c63f43" - } - } - name: "port-7-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c2d5ac50-2faf-5608-a6ae-7c023bceb289" - } - } - name: "port-39-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c4568f02-d291-5c95-b9bc-846278862db9" - } - } - name: "port-4-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c559fb60-6495-5992-b339-ac7a590e337c" - } - } - name: "port-16-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cace07d7-0ca3-51be-bef1-b58db0ccba6f" - } - } - name: "port-2-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "caf865b8-df54-5601-9163-1cdbe8f7a599" - } - } - name: "port-47-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cc5064c4-bc42-5c50-b5b0-9b2ad1405bd8" - } - } - name: "port-42-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e650eba7-019d-5c4f-9d75-14d47a711f2f" - } - } - name: "port-14-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e7566eac-9fa0-5137-929a-7cf2485babea" - } - } - name: "port-37-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL_OUTPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ea7812b2-db7c-5504-a415-6b4299ae090f" - } - } - name: "port-11-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "fd4d5404-baf3-5f5f-b7b7-a825c90e5f2a" - } - } - name: "port-15-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND_INPUT" - endpoint_location { - } -} -controller_id { -} - -[2024-06-20 13:26:29,081] INFO:device.service.OpenConfigServicer:from openconfigservicer [{'resource_key': 'channel_namespace', 'value': None}, {'resource_key': 'add_transceiver', 'value': None}, {'resource_key': 'source_port', 'value': ['port-1-in']}, {'resource_key': 'destination_port', 'value': ['port-33-out']}, {'resource_key': 'target-output-power', 'value': '1.0'}, {'resource_key': 'frequency', 'value': 192056250}, {'resource_key': 'operational-mode', 'value': 8}, {'resource_key': 'line-port', 'value': None}, {'resource_key': 'name', 'value': 'C_BAND'}, {'resource_key': 'optical-band-parent', 'value': 1}, {'resource_key': 'channel_name', 'value': None}, {'resource_key': 'lower-frequency', 'value': None}, {'resource_key': 'upper-frequency', 'value': None}] and conditions {'is_opticalband': False, 'edit_type': 'optical-channel'} -[2024-06-20 13:26:29,081] INFO:root:ports are {'source_port': ['port-1-in'], 'destination_port': ['port-33-out']} -[2024-06-20 13:26:29,081] INFO:device.service.OpenConfigServicer:error in configuring xml/html attributes should be passed as strings, ints or floats. Got None (type ) instead. -[2024-06-20 13:26:29,081] DEBUG:device.service.OpenConfigServicer:ConfigureOpticalDevice reply: {} -[2024-06-20 13:26:29,101] DEBUG:device.service.OpenConfigServicer:ConfigureOpticalDevice request: {"config": "{\"channels\": [{\"name\": {\"index\": \"channel-3\"}, \"frequency\": 191600000, \"target-output-power\": \"100.0\", \"operational-mode\": 0}, {\"name\": {\"index\": \"channel-1\"}, \"frequency\": 192056250, \"target-output-power\": \"1.0\", \"operational-mode\": 8}, {\"name\": {\"index\": \"channel-4\"}, \"frequency\": 191600000, \"target-output-power\": \"100.0\", \"operational-mode\": 0}, {\"name\": {\"index\": \"channel-2\"}, \"frequency\": 191600000, \"target-output-power\": \"100.0\", \"operational-mode\": 0}], \"transceivers\": {\"transceiver\": [\"transceiver-1\", \"transceiver-2\", \"transceiver-3\", \"transceiver-4\"]}, \"interfaces\": {\"interface\": \"\"}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"device_name\": \"T2.1\", \"new_config\": {\"target-output-power\": \"1.0\", \"frequency\": 192056250, \"operational-mode\": 8, \"band\": 100000, \"flow_id\": 1, \"ob_id\": 1, \"band_type\": \"C_BAND\"}, \"is_opticalband\": false, \"flow\": [[\"2a307a8e-d326-5ea2-9437-b0320fb4c2a6\", \"0\"]]}", "device_id": {"device_uuid": {"uuid": "87d74166-65e3-595e-b643-122b4fd0303f"}}, "opticalconfig_id": {"opticalconfig_uuid": "47483eb2-dc16-5d95-915a-69ef836dd7e7"}} -[2024-06-20 13:26:29,102] INFO:device.service.OpenConfigServicer: config from openconfigservicer {'channels': [{'name': {'index': 'channel-3'}, 'frequency': 191600000, 'target-output-power': '100.0', 'operational-mode': 0}, {'name': {'index': 'channel-1'}, 'frequency': 192056250, 'target-output-power': '1.0', 'operational-mode': 8}, {'name': {'index': 'channel-4'}, 'frequency': 191600000, 'target-output-power': '100.0', 'operational-mode': 0}, {'name': {'index': 'channel-2'}, 'frequency': 191600000, 'target-output-power': '100.0', 'operational-mode': 0}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'interfaces': {'interface': ''}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'device_name': 'T2.1', 'new_config': {'target-output-power': '1.0', 'frequency': 192056250, 'operational-mode': 8, 'band': 100000, 'flow_id': 1, 'ob_id': 1, 'band_type': 'C_BAND'}, 'is_opticalband': False, 'flow': [['2a307a8e-d326-5ea2-9437-b0320fb4c2a6', '0']]} -[2024-06-20 13:26:29,102] DEBUG:context.client.ContextClient:Creating channel to 10.152.183.195:1010... -[2024-06-20 13:26:29,103] DEBUG:context.client.ContextClient:Channel created -[2024-06-20 13:26:29,103] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "87d74166-65e3-595e-b643-122b4fd0303f"}}]}, "include_components": false, "include_config_rules": false, "include_endpoints": true} -[2024-06-20 13:26:29,120] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": [{"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"}]} -[2024-06-20 13:26:29,121] INFO:device.service.OpenConfigServicer:device is device_id { - device_uuid { - uuid: "87d74166-65e3-595e-b643-122b4fd0303f" - } -} -name: "T2.1" -device_type: "optical-transponder" -device_operational_status: DEVICEOPERATIONALSTATUS_ENABLED -device_drivers: DEVICEDRIVER_OC -device_endpoints { - endpoint_id { - 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: "0329c3cb-7e98-504b-9a08-67a5480eb0a0" - } - } - name: "4" - endpoint_type: "port-4" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "274a5fa6-0915-5a53-ba0e-996fc25d0aa2" - } - } - name: "2" - endpoint_type: "port-2" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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" - } - } - name: "1" - endpoint_type: "port-1" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "70d6a261-98fe-5953-8f28-3379a9f626ab" - } - } - name: "3" - endpoint_type: "port-3" - endpoint_location { - } -} -controller_id { -} - -[2024-06-20 13:26:29,121] INFO:device.service.OpenConfigServicer:from openconfigservicer [{'resource_key': 'channel_namespace', 'value': 'http://openconfig.net/yang/terminal-device'}, {'resource_key': 'add_transceiver', 'value': None}, {'resource_key': 'source_port', 'value': ['1']}, {'resource_key': 'destination_port', 'value': [None]}, {'resource_key': 'target-output-power', 'value': '1.0'}, {'resource_key': 'frequency', 'value': 192056250}, {'resource_key': 'operational-mode', 'value': 8}, {'resource_key': 'line-port', 'value': None}, {'resource_key': 'name', 'value': 'C_BAND'}, {'resource_key': 'optical-band-parent', 'value': 1}, {'resource_key': 'channel_name', 'value': None}, {'resource_key': 'lower-frequency', 'value': None}, {'resource_key': 'upper-frequency', 'value': None}] and conditions {'is_opticalband': False, 'edit_type': 'optical-channel'} -[2024-06-20 13:26:29,121] INFO:root:ports are {'source_port': ['1'], 'destination_port': [None]} -[2024-06-20 13:26:29,123] INFO:ncclient.operations.rpc:[host 172.17.254.42 session-id 32] Requesting 'EditConfig' -[2024-06-20 13:26:29,123] DEBUG:ncclient.operations.rpc:[host 172.17.254.42 session-id 32] Sync request, will wait for timeout=120 -[2024-06-20 13:26:29,207] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:26:29,207] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 235 bytes -[2024-06-20 13:26:29,207] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:29,207] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=6 -[2024-06-20 13:26:29,207] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:26:29,207] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 225 bytes -[2024-06-20 13:26:29,207] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: appending 225 bytes -[2024-06-20 13:26:29,208] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: fragment = " -" -[2024-06-20 13:26:29,208] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 231 bytes from start of buffer -[2024-06-20 13:26:29,208] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=4 -[2024-06-20 13:26:29,208] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found end of message delimiter -[2024-06-20 13:26:29,208] DEBUG:ncclient.operations.rpc:[host 172.17.254.42 session-id 32] Delivering to -[2024-06-20 13:26:29,208] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: saving back rest of message after 235 bytes, original size 235 -[2024-06-20 13:26:29,209] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:26:29,209] INFO:root:resonse from edit - -[2024-06-20 13:26:29,209] INFO:device.service.OpenConfigServicer:resluts [True] and is_all_good True -[2024-06-20 13:26:29,211] INFO:ncclient.operations.rpc:[host 172.17.254.42 session-id 32] Requesting 'Get' -[2024-06-20 13:26:29,211] DEBUG:ncclient.operations.rpc:[host 172.17.254.42 session-id 32] Sync request, will wait for timeout=120 -[2024-06-20 13:26:29,349] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:26:29,350] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:26:29,350] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:29,350] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:29,350] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:26:29,350] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:29,350] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:26:29,350] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:26:29,350] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:26:29,350] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:26:29,350] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:26:29,350] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:29,351] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:29,351] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:26:29,351] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:29,351] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:26:29,351] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:26:29,351] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:26:29,351] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:26:29,351] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:26:29,351] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:29,352] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:29,352] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:26:29,352] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:29,352] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:26:29,352] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:26:29,352] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:26:29,352] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:26:29,352] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:26:29,352] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:29,352] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:29,352] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:26:29,353] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:29,353] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: appending 16376 bytes -[2024-06-20 13:26:29,353] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: fragment = " -falsefalsetruefalsefalsefalseeth0eth0truefalsetrue00
192.168.1.1192.168.1.124
DISABLEfalsetruefalse
falsefalsetrue1false
truechannel-1channel-1channel-1oc-opt-types:OPTICAL_CHANNEL1920562501.08transceiver-11920562501.08transceiver-110.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-2channel-2channel-2oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-21916000000.00transceiver-210.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-3channel-3channel-3oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-31916000000.00transceiver-310.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00channel-4channel-4channel-4oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-41916000000.00transceiver-410.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00devicedeviceMellanoxSwitchoc-platform-types:OPERATING_SYSTEMSSSA-CNIT1.0.01.0.01.0.0610610port-1port-1port-1oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index1onos-index1channel-1channel-1channel-1port-2port-2port-2oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index2onos-index2channel-2channel-2channel-2port-3port-3port-3oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index3onos-index3channel-3channel-3channel-3port-4port-4port-4oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index4onos-index4channel-4channel-4channel-4transceiver-1transceiver-1transceiver-1oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-1transceiver-2transceiver-2transceiver-2oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-2transceiver-3transceiver-3transceiver-3oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHEREN" -[2024-06-20 13:26:29,353] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:26:29,353] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:26:29,371] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:26:29,371] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:26:29,372] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:29,372] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:29,372] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:26:29,372] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:29,372] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:26:29,372] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:26:29,372] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:26:29,372] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:26:29,372] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:26:29,372] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:29,373] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:29,373] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:26:29,373] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:29,373] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:26:29,373] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:26:29,373] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:26:29,373] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:26:29,373] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:26:29,373] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:29,373] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:29,373] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:26:29,374] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:29,374] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:26:29,374] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:26:29,374] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:26:29,374] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:26:29,374] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:26:29,374] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:29,374] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:29,374] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:26:29,374] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:29,375] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: appending 16376 bytes -[2024-06-20 13:26:29,375] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: fragment = "T_OPTICCisco400zr-QSFP-DD01156732111channel-3transceiver-4transceiver-4transceiver-4oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-4falsefalsetruefalsefalsefalse192.168.1.1192.168.1.188true65432179truefalseNONEfalse30903030falsefalsefalsetruefalsefalse0falsefalsefalsefalseREJECT_ROUTEREJECT_ROUTERFC2328_COMPATIBLE11Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONE1Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-1transceiver-111Optical channel assigned 100OPTICAL_CHANNELchannel-1100.01Optical channel assigned 100OPTICAL_CHANNELchannel-1100.022Logical channel 2DISABLEDoc-opt-types:PROT_OTNNONE2Logical channel 2DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-2transceiver-211Optical channel assigned 100OPTICAL_CHANNELchannel-2100.01Optical channel assigned 100OPTICAL_CHANNELchannel-2100.033Logical channel 3DISABLEDoc-opt-types:PROT_OTNNONE3Logical channel 3DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-3transceiver-311Optical channel assigned 100OPTICAL_CHANNELchannel-3100.01Optical channel assigned 100OPTICAL_CHANNELchannel-3100.044Logical channel 4DISABLEDoc-opt-types:PROT_OTNNONE4Logical channel 4DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-4transceiver-411Optical channel assigned 100OPTICAL_CHANNELchannel-4100.01Optical channel assigned 100OPTICAL_CHANNELchannel-4100.011FEC1Ericsson22FEC2Ericssonadmin9000100$1$lPNyHD3D$t9eLr07hXOEy1983ReE8k0/var/confd/homes/admin/.ssh/var/confd/homes/adminoper9003103$1$gflBsGcV$PdW1/SBjHWGBRlZuBfdva//var/confd/homes/oper/.ssh/var/confd/homes/operoptical9001101$1$HCxex4ow$jHGQxsbMB1dWNK97ydKv20/var/confd/homes/optical/.ssh/var/confd/homes/opticalpacket9002102$1$2CYgcCNT$bV6L4CxgDPQP9EMyZ4Rsc1/var/confd/homes/packet/.ssh/var/confd/homes/packetprivate9005103$1$2MXxtlsM$qZfOcm4WXD2c8duQXzdru0/var/confd/homes/private/.ssh/var/confd/homes/privatepublic9004100$1$1tOWUHZV$iad9vZD8aF68c6x21nhHo//var/confd/homes/public/.ssh/var/confd/homes/public0\h> 15\h# exec0actionautowizardenableexithelpstartup15configure6.4falsestartediana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashianachietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesinetietf-interfaces2014-05-08urn:ietf:params:xml:ns:yang:ietf-interfacesifietf-netconf-acm2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-acmnacmietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringncmietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsncnietf-yang-library2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-libraryyanglibnetconfrestietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesyangnetconf_netmodurn:ietf:params:xml:ns:netmod:notificationnmnetconfopenconfig-alarm-types2018-01-16http://openconfig.net/yang/alarms/typesoc-alarm-typesopenconfig-bfd2022-06-28http://openconfig.net/yang/bfdoc-bfdopenconfig-bgp2022-05-21http://openconfig.net/yang/bgpoc-bgpopenconfig-bgp-types2021-08-06http://openconfig.net/yang/bgp-typesoc-bgp-typesopenconfig-evpn-types2021-06-21http://openconfig.net/yang/evpn-typesoc-evpn-typesopenconfig-if-ethernet2022-04-20http://openconfig.net/yang/interfaces/ethernetoc-ethopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipoc-ipopenconfig-inet-types2021-08-17http://openconfig.net/yang/types/inetoc-inetopenconfig-interfaces2021-04-06http://openconfig.net/yang/interfacesoc-ifopenconfig-lldp2018-11-21http://openconfig.net/yang/lldpoc-lldpopenconfig-lldp-types2018-11-21http://openconfig.net/yang/lldp/typesoc-lldp-typesopenconfig-mpls-types2021-12-01http://openconfig.net/yang/mpls-typesoc-mplstopenconfig-network-instance-types2021-07-14http://openconfig.net/yang/network-instance-typesoc-ni-typesopenconfig-ospf-types2018-11-21http://openconfig.net/yang/ospf-typesoc-ospf-typesNETCONFdefault NETCONF event streamfalsemellanoxNotifications regarding the transpondertrue2024-06-06T22:51:42.135613+00:00truepermitpermitpermittrue000adminadminprivateoperoperpublicoptopticalpckpacketany-group*get*/readpermittailf-aaa-authenticationtailf-aaa/aaa/authentication/users/user[name='$USER']read updatepermittailf-aaa-usertailf-aaa/user[name='$USER']create read update deletepermittailf-webui-usertailf-webui/webui/data-stores/user-profile[username='$USER']create read update deletepermitpacketpckvlanvlan/switched-vlanscreate read update deletepermitterminal-device*/terminal-devicecreate update deletedenycomponents*/componentscreate update deletedenyopticaloptterminal-device*/terminal-devicecreate read update deletepermitcomponents*/componentscreate read update deletepermitvlanvlan/switched-vlanscreate update deletedenyadminadminany-accesspermiturn:ietf:params:netconf:base:1.0urn:ietf:params:netconf:base:1.1urn:ietf:params:netconf:capability:writable-running:1.0urn:ietf:params:netconf:capability:xpath:1.0urn:ietf:params:netconf:capability:validate:1.0urn:ietf:params:netconf:capability:validate:1.1urn:ietf:params:netconf:capability:rollback-on-error:1.0urn:ietf:params:netconf:capability:notification:1.0urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all-taggedurn:ietf:params:netconf:capability:yang-library:1.0?revision=2016-06-21&module-set-id=f1285a0c7bf3c6c159ca5c87b160ec60http://tail-f.com/ns/netconf/extensionshttp://openconfig.net/yang/alarms/types?module=openconfig-alarm-types&revision=2018-01-16http://openconfig.net/yang/bfd?module=openconfig-bfd&revision=2022-06-28http://openconfig.net/yang/bgp?module=openconfig-bgp&revision=2022-05-21http://openconfig.net/yang/bgp-types?module=openconfig-bgp-types&revision=2021-08-06http://openconfig.net/yang/evpn-types?module=openconfig-evpn-types&revision=2021-06-21http://openconfig.net/yang/interfaces?module=openconfig-interfaces&revision=2021-04-06http://openconfig.net/yang/interfaces/ethernet?module=openconfig-if-ethernet&revision=2022-04-20http://openconfig.net/yang/interfaces/ip?module=openconfig-if-ip&revision=2019-01-08http://openconfig.net/yang/lldp?module=openconfig-lldp&revision=2018-11-21http://openconfig.net/yang/lldp/types?module=openconfig-lldp-types&revision=2018-11-21http://openconfig.net/yang/mpls-types?module=openconfig-mpls-types&revision=2021-12-01http://openconfig.net/yang/network-instance-types?module=openconfig-network-instance-types&revision=2021-07-14http://openconfig.net/yang/openconfig-types?module=openconfig-types&revision=2019-04-16http://openconfig.net/yang/ospf-types?module=openconfig-ospf-types&revision=2018-11-21http://openconfig.net/yang/ospfv2?module=openconfig-ospfv2&revision=2022-02-10http://openconfig.net/yang/platform?module=openconfig-platform&revision=2018-01-30http://openconfig.net/yang/platform-types?module=openconfig-platform-types&revision=2021-01-18http://openconfig.net/yang/platform/port?module=openconfig-platform-port&revision=2021-04-22http://openconfig.net/yang/platform/transceiver?module=openconfig-platform-transceiver&revision=2021-02-23http://openconfig.net/yang/policy-types?module=openconfig-policy-types&revision=2022-11-08http://openconfig.net/yang/protocols?module=openconfig-protocolshttp://openconfig.net/yang/rib/bgp?module=openconfig-rib-bgp&revision=2022-06-06http://openconfig.net/yang/rib/bgp-types?module=openconfig-rib-bgp-types&revision=2019-03-14http://openconfig.net/yang/routing-policy?module=openconfig-routing-policy&revision=2022-05-24http://openconfig.net/yang/segment-routing-types?module=openconfig-segment-routing-types&revision=2020-02-04http://openconfig.net/yang/telemetry?module=openconfig-telemetry&revision=2018-11-21http://openconfig.net/yang/telemetry-types?module=openconfig-telemetry-types&revision=2018-11-21http://openconfig.net/yang/terminal-device?module=openconfig-terminal-device&revision=2021-02-23http://openconfig.net/yang/transport-types?module=openconfig-transport-types&revision=2021-03-22http://openconfig.net/yang/types/inet?module=openconfig-inet-types&revision=2021-08-17http://openconfig.net/yang/types/yang?module=openconfig-yang-types&revision=2021-07-14http://sssup.it/yang/vlan?module=vlanhttp://tail-f.com/ns/aaa/1.1?module=tailf-aaa&revision=2015-06-16http://tail-f.com/ns/kicker?module=tailf-kicker&revision=2017-03-16http://tail-f.com/yang/acm?module=tailf-acm&revision=2013-03-07http://tail-f.com/yang/common-monitoring?module=tailf-common-monitoring&revision=2013-06-14http://tail-f.com/yang/confd-monitoring?module=tailf-confd-monitoring&revision=2013-06-14http://tail-f.com/yang/netconf-monitoring?module=tailf-netconf-monitoring&revision=2016-11-24urn:ietf:params:xml:ns:yang:iana-crypt-hash?module=iana-crypt-hash&revision=2014-08-06&features=crypt-hash-sha-512,crypt-hash-sha-256,crypt-hash-md5urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&revision=2013-07-15urn:ietf:params:xml:ns:yang:ietf-interfaces?module=ietf-interfaces&revision=2014-05-08&features=pre-provisioning,if-mib,arbitrary-namesurn:ietf:params:xml:ns:yang:ietf-netconf-acm?module=ietf-netconf-acm&revision=2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&revision=2010-10-04urn:ietf:params:xml:ns:yang:ietf-" -[2024-06-20 13:26:29,416] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: saving back rest of message after 16384 bytes, original size 16384 -[2024-06-20 13:26:29,416] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:26:29,434] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:26:29,434] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 4096 bytes -[2024-06-20 13:26:29,434] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:29,435] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:29,435] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:26:29,435] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:29,435] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:26:29,435] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:26:29,435] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:26:29,435] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:26:29,435] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 8192 bytes -[2024-06-20 13:26:29,435] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:29,435] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:29,436] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:26:29,436] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:29,436] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:26:29,436] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:26:29,436] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:26:29,436] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:26:29,436] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 12288 bytes -[2024-06-20 13:26:29,436] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:29,436] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:29,437] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:26:29,437] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:29,437] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: not enough data for chunk yet -[2024-06-20 13:26:29,437] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: setting start to 0 -[2024-06-20 13:26:29,437] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:26:29,437] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: starting -[2024-06-20 13:26:29,437] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: working with buffer of 16384 bytes -[2024-06-20 13:26:29,437] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 0 bytes from start of buffer -[2024-06-20 13:26:29,437] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=8 -[2024-06-20 13:26:29,437] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found chunk delimiter -[2024-06-20 13:26:29,437] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: chunk size 16376 bytes -[2024-06-20 13:26:29,438] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: appending 16376 bytes -[2024-06-20 13:26:29,438] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: fragment = "netconf-notifications?module=ietf-netconf-notifications&revision=2012-02-06urn:ietf:params:xml:ns:yang:ietf-yang-library?module=ietf-yang-library&revision=2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&revision=2013-07-15urn:ietf:params:xml:ns:netconf:base:1.0?module=ietf-netconf&revision=2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?module=ietf-netconf-with-defaults&revision=2011-06-01running1717-750545-631285iana-crypt-hash2014-08-06yangurn:ietf:params:xml:ns:yang:iana-crypt-hashNETCONFietf-inet-types2013-07-15yangurn:ietf:params:xml:ns:yang:ietf-inet-typesNETCONFietf-interfaces2014-05-08yangurn:ietf:params:xml:ns:yang:ietf-interfacesNETCONFietf-netconf2011-06-01yangurn:ietf:params:xml:ns:netconf:base:1.0NETCONFietf-netconf-acm2012-02-22yangurn:ietf:params:xml:ns:yang:ietf-netconf-acmNETCONFietf-netconf-monitoring2010-10-04yangurn:ietf:params:xml:ns:yang:ietf-netconf-monitoringNETCONFietf-netconf-notifications2012-02-06yangurn:ietf:params:xml:ns:yang:ietf-netconf-notificationsNETCONFietf-netconf-with-defaults2011-06-01yangurn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsNETCONFietf-yang-library2016-06-21yangurn:ietf:params:xml:ns:yang:ietf-yang-libraryNETCONFietf-yang-types2013-07-15yangurn:ietf:params:xml:ns:yang:ietf-yang-typesNETCONFopenconfig-alarm-types2018-01-16yanghttp://openconfig.net/yang/alarms/typesNETCONFopenconfig-bfd2022-06-28yanghttp://openconfig.net/yang/bfdNETCONFopenconfig-bgp2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common-multiprotocol2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-common-structure2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-errors2021-08-06yanghttp://openconfig.net/yang/bgp-typesNETCONFopenconfig-bgp-global2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-neighbor2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-peer-group2022-05-21yanghttp://openconfig.net/yang/bgpNETCONFopenconfig-bgp-types2021-08-06yanghttp://openconfig.net/yang/bgp-typesNETCONFopenconfig-evpn-types2021-06-21yanghttp://openconfig.net/yang/evpn-typesNETCONFopenconfig-if-ethernet2022-04-20yanghttp://openconfig.net/yang/interfaces/ethernetNETCONFopenconfig-if-ip2019-01-08yanghttp://openconfig.net/yang/interfaces/ipNETCONFopenconfig-inet-types2021-08-17yanghttp://openconfig.net/yang/types/inetNETCONFopenconfig-interfaces2021-04-06yanghttp://openconfig.net/yang/interfacesNETCONFopenconfig-lldp2018-11-21yanghttp://openconfig.net/yang/lldpNETCONFopenconfig-lldp-types2018-11-21yanghttp://openconfig.net/yang/lldp/typesNETCONFopenconfig-mpls-types2021-12-01yanghttp://openconfig.net/yang/mpls-typesNETCONFopenconfig-network-instance-types2021-07-14yanghttp://openconfig.net/yang/network-instance-typesNETCONFopenconfig-ospf-types2018-11-21yanghttp://openconfig.net/yang/ospf-typesNETCONFopenconfig-ospfv22022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-area2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-area-interface2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-common2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-global2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-ospfv2-lsdb2022-02-10yanghttp://openconfig.net/yang/ospfv2NETCONFopenconfig-platform2018-01-30yanghttp://openconfig.net/yang/platformNETCONFopenconfig-platform-port2021-04-22yanghttp://openconfig.net/yang/platform/portNETCONFopenconfig-platform-transceiver2021-02-23yanghttp://openconfig.net/yang/platform/transceiverNETCONFopenconfig-platform-types2021-01-18yanghttp://openconfig.net/yang/platform-typesNETCONFopenconfig-policy-types2022-11-08yanghttp://openconfig.net/yang/policy-typesNETCONFopenconfig-protocolsyanghttp://openconfig.net/yang/protocolsNETCONFopenconfig-rib-bgp2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-shared-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-table-attributes2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-tables2022-06-06yanghttp://openconfig.net/yang/rib/bgpNETCONFopenconfig-rib-bgp-types2019-03-14yanghttp://openconfig.net/yang/rib/bgp-typesNETCONFopenconfig-routing-policy2022-05-24yanghttp://openconfig.net/yang/routing-policyNETCONFopenconfig-segment-routing-types2020-02-04yanghttp://openconfig.net/yang/segment-routing-typesNETCONFopenconfig-telemetry2018-11-21yanghttp://openconfig.net/yang/telemetryNETCONFopenconfig-telemetry-types2018-11-21yanghttp://openconfig.net/yang/telemetry-typesNETCONFopenconfig-terminal-device2021-02-23yanghttp://openconfig.net/yang/terminal-deviceNETCONFopenconfig-transport-types2021-03-22yanghttp://openconfig.net/yang/transport-typesNETCONFopenconfig-types2019-04-16yanghttp://openconfig.net/yang/openconfig-typesNETCONFopenconfig-yang-types2021-07-14yanghttp://openconfig.net/yang/types/yangNETCONFtailf-aaa2015-06-16yanghttp://tail-f.com/ns/aaa/1.1NETCONFtailf-acm2013-03-07yanghttp://tail-f.com/yang/acmNETCONFtailf-common-monitoring2013-06-14yanghttp://tail-f.com/yang/common-monitoringNETCONFtailf-confd-monitoring2013-06-14yanghttp://tail-f.com/yang/confd-monitoringNETCONFtailf-kicker2017-03-16yanghttp://tail-f.com/ns/kickerNETCONFtailf-netconf-monitoring2016-11-24yanghttp://tail-f.com/yang/netconf-monitoringNETCONFvlanyanghttp://sssup.it/yang/vlanNETCONF29netconf-sshadmin10.30.2.2062024-06-06T23:11:47+00:00200030netconf-sshadmin10.30.2.2062024-06-06T23:11:57+00:00400031netconf-sshadmin10.30.2.2062024-06-06T23:12:08+00:00200032netconf-sshadmin10.30.2.2082024-06-20T13:24:11+00:00400033netconf-sshadmin10.30.2.2082024-06-20T13:24:16+00:00200034netconf-sshadmin10.30.2.2082024-06-20T13:24:22+00:0020002024-06-06T22:51:41+00:0006016000NETCONFdefault NETCONF event streamfalsemellanoxNotifications regarding the transpondertrue2024-06-06T22:51:42.135613+00:00f1285a0c7bf3c6c159ca5c87b160ec60iana-crypt-hash2014-08-06urn:ietf:params:xml:ns:yang:iana-crypt-hashcrypt-hash-sha-512crypt-hash-sha-256crypt-hash-md5importietf-inet-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-inet-typesimportietf-interfaces2014-05-08urn:ietf:params:xml:ns:yang:ietf-interfacespre-provisioningif-mibarbitrary-namesimplementietf-netconf2011-06-01urn:ietf:params:xml:ns:netconf:base:1.0implementietf-netconf-acm2012-02-22urn:ietf:params:xml:ns:yang:ietf-netconf-acmimplementietf-netconf-monitoring2010-10-04urn:ietf:params:xml:ns:yang:ietf-netconf-monitoringimplementietf-netconf-notifications2012-02-06urn:ietf:params:xml:ns:yang:ietf-netconf-notificationsimplementietf-netconf-with-defaults2011-06-01urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaultsimplementietf-yang-library2016-06-21urn:ietf:params:xml:ns:yang:ietf-yang-libraryimplementietf-yang-types2013-07-15urn:ietf:params:xml:ns:yang:ietf-yang-typesimportopenconfig-alarm-types2018-01-16http://openconfig.net/yang/alarms/typesimportopenconfig-bfd2022-06-28http://openconfig.net/yang/bfdimplementopenconfig-bgp2022-05-21http://openconfig.net/yang/bgpimplementopenconfig-bgp-common2022-05-21openconfig-bgp-common-structure2022-05-21openconfig-bgp-global2022-05-21openconfig-bgp-neighbor2022-05-21openconfig-bgp-peer-group2022-05-21openconfig-bgp-common-multiprotocol2022-05-21openconfig-bgp-types2021-08-06http://openconfig.net/yang/bgp-typesimportopenconfig-bgp-errors2021-08-06openconfig-evpn-types2021-06-21http://openconfig.net/yang/evpn-typesimportopenconfig-if-ethernet2022-04-20http://openconfig.net/yang/interfaces/ethernetimplementopenconfig-if-ip2019-01-08http://openconfig.net/yang/interfaces/ipimplementopenconfig-inet-types2021-08-17http://openconfig.net/yang/types/inetimportopenconfig-interfaces2021-04-06http://openconfig.net/yang/interfacesimplementopenconfig-lldp2018-11-21http://openconfig.net/yang/lldpimplementopenconfig-lldp-types2018-11-21http://openconfig.net/yang/lldp/typesimportopenconfig-mpls-types2021-12-01http://openconfig.net/yang/mpls-typesimportopenconfig-ospf-types2018-11-21http://openconfig.net/yang/ospf-typesimportopenconfig-ospfv22022-02-10http://openconfig.net/yang/ospfv2importopenconfig-ospfv2-area2022-02-10openconfig-ospfv2-common2022-02-10openconfig-ospfv2-global2022-02-10openconfig-ospfv2-lsdb2022-02-10openconfig-ospfv2-area-interface2022-02-10openconfig-platform2018-01-30http://openconfig.net/yang/platformimplementopenconfig-platform-port2021-04-22http://openconfig.net/yang/platform/portimplementopenconfig-platform-transceiver2021-02-23http://openconfig.net/yang/platform/transceiverimplementopenconfig-platform-types2021-01-18http://openconfig.net/yang/platform-typesimportopenconfig-policy-types2022-11-08http://openconfig.net/yang/policy-typesimportopenconfig-protocolshttp://openconfig.net/yang/protocolsimplementopenconfig-rib-bgp2022-06-06http://openconfig.net/yang/rib/bgpimportopenconfig-rib-bgp-attributes2022-06-06openconfig-rib-bgp-tables2022-06-06openconfig-rib-bgp-table-attributes2022-06-06openconfig-rib-bgp-shared-attributes2022-06-06openconfig-rib-bgp-types2019-03-14http://openconfig.net/yang/rib/bgp-typesimportopenconfig-routing-policy2022-05-24http://openconfig.net/yang/routing-policyimplementopenconfig-telemetry2018-11-21http://openconfig.net/yang/telemetryimplementopenconfig-telemetry-types2018-11-21http://openconfig.net/yang/telemetry-typesimportopenconfig-terminal-device2021-02-23http://openconfig.net/yang/terminal-deviceimplementopenconfig-transport-types2021-03-22http://openconfig.net/yang/transport-typesimportopenconfig-types2019-04-16http://openconfig.net/yang/openconfig-typesimportopenconfig-yang-types2021-07-14http://openconfig.net/yang/types/yangimporttailf-aaa2015-06-16http://tail-f.com/ns/aaa/1.1implementtailf-acm2013-03-07http://tail-f.com/yang/acmimplementtailf-common-monitoring2013-06-14http://tail-f.com/yang/common-monitoringimporttailf-confd-monitoring2013-06-14http://tail-f.com/yang/confd-monitoringimplementtailf-kicker2017-03-16http://tail-f.com/ns/kickerimplementtailf-netconf-monitoring2016-11-24http://tail-f.com/yang/netconf-monitoringimplementvlanhttp://sssup.it/yang/vlanimplementopenconfig-segment-routing-types2020-02-04http://openconfig.net/yang/segment-routing-typesimportopenconfig-network-instance-types2021-07-14http://openconfig.net/yang/network-instance-typesimport
" -[2024-06-20 13:26:29,445] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: matching from 10855 bytes from start of buffer -[2024-06-20 13:26:29,445] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: regular expression start=0, end=4 -[2024-06-20 13:26:29,445] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: found end of message delimiter -[2024-06-20 13:26:29,446] DEBUG:ncclient.operations.rpc:[host 172.17.254.42 session-id 32] Delivering to -[2024-06-20 13:26:29,446] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: saving back rest of message after 10859 bytes, original size 10859 -[2024-06-20 13:26:29,447] DEBUG:ncclient.transport.parser:[host 172.17.254.42 session-id 32] _parse11: ending -[2024-06-20 13:26:29,454] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:29,455] INFO:root:dic {'frequency': '192056250'} -[2024-06-20 13:26:29,456] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:29,457] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0'} -[2024-06-20 13:26:29,457] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:29,458] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8'} -[2024-06-20 13:26:29,459] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:29,460] INFO:root:dic {'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1'} -[2024-06-20 13:26:29,461] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:29,462] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:26:29,462] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:29,463] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:26:29,464] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:29,465] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:26:29,465] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:29,466] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-06-20 13:26:29,467] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:29,468] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:26:29,468] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:29,469] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:26:29,470] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:29,471] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:26:29,471] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:29,473] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-06-20 13:26:29,473] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:29,474] INFO:root:dic {'frequency': '191600000'} -[2024-06-20 13:26:29,475] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:29,476] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-06-20 13:26:29,476] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:29,478] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-06-20 13:26:29,478] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-06-20 13:26:29,479] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-06-20 13:26:29,481] INFO:root:parameters {'channels': [{'frequency': '192056250', 'target-output-power': '1.0', 'operational-mode': '8', 'line-port': 'transceiver-1', 'name': {'index': 'channel-1'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2', 'name': {'index': 'channel-2'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3', 'name': {'index': 'channel-3'}}, {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4', 'name': {'index': 'channel-4'}}], 'transceivers': {'transceiver': ['transceiver-1', 'transceiver-2', 'transceiver-3', 'transceiver-4']}, 'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'ports': [('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})]} -[2024-06-20 13:26:29,481] DEBUG:context.client.ContextClient:SetOpticalConfig request: {"config": "{\"channels\": [{\"frequency\": \"192056250\", \"target-output-power\": \"1.0\", \"operational-mode\": \"8\", \"line-port\": \"transceiver-1\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": [\"transceiver-1\", \"transceiver-2\", \"transceiver-3\", \"transceiver-4\"]}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}", "device_id": {"device_uuid": {"uuid": "87d74166-65e3-595e-b643-122b4fd0303f"}}} -[2024-06-20 13:26:29,504] DEBUG:context.client.ContextClient:SetOpticalConfig result: {"opticalconfig_uuid": ""} -[2024-06-20 13:26:29,505] DEBUG:device.service.OpenConfigServicer:ConfigureOpticalDevice reply: {} diff --git a/bands.json b/bands.json deleted file mode 100644 index 59851eb21cbd17f41db74231593cf1e9e09d17a3..0000000000000000000000000000000000000000 --- a/bands.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "1": { - "optical_band_id": 1, - "bidir": 0, - "src": "R1", - "dst": "R2", - "flows": { - "R1": { - "f": { - "in": "0", - "out": "101" - }, - "b": {} - }, - "R2": { - "f": { - "in": "111", - "out": "0" - }, - "b": {} - } - }, - "band_type": "c_slots", - "fiber_forward": {}, - "fiber_backward": {}, - "op-mode": 0, - "n_slots": 16, - "links": [ - "R1-R2" - ], - "path": [ - "R1", - "R2" - ], - "band": 200000, - "freq": 192106250, - "is_active": false, - "src_port": "101", - "dst_port": "111", - "rev_dst_port": "111", - "rev_src_port": "101", - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1 - }, - "served_lightpaths": [] - } -} \ No newline at end of file diff --git a/config.lo b/config.lo deleted file mode 100644 index f35fe4763ffa0233959525adae65a37f75f22865..0000000000000000000000000000000000000000 --- a/config.lo +++ /dev/null @@ -1 +0,0 @@ -eth0eth0true
192.168.1.1192.168.1.124
channel-1channel-1channel-1oc-opt-types:OPTICAL_CHANNEL191600000100.00transceiver-11916000000.00transceiver-110.00.00.00.000.00.00.00.000.00.00.00.000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00devicedeviceMellanoxSwitchoc-platform-types:OPERATING_SYSTEMSSSA-CNIT1.0.01.0.01.0.0610610port-1port-1port-1oc-platform-types:PORTodtn-port-typeodtn-port-typelineodtn-port-typelineonos-indexonos-index4onos-index4channel-1channel-1channel-1transceiver-1transceiver-1transceiver-1oc-platform-types:TRANSCEIVERtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICtrueoc-opt-types:QSFP56_DD_TYPE1oc-opt-types:ETH_400GBASE_ZRoc-platform-types:FEC_AUTOoc-opt-types:TYPE_DIGITAL_COHERENT_OPTICCisco400zr-QSFP-DD01156732111channel-1192.168.1.1192.168.1.188true6543211Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONE1Logical channel 1DISABLEDoc-opt-types:PROT_OTNNONEUPtransceiver-1transceiver-111Optical channel assigned 100OPTICAL_CHANNELchannel-1100.01Optical channel assigned 100OPTICAL_CHANNELchannel-1100.011FEC1Ericsson22FEC2Ericssonadmin9000100$1$HWfCFyTg$TOxt04aLi5ONWrSB8X94U./var/confd/homes/admin/.ssh/var/confd/homes/adminoper9003103$1$D8R6MYXb$ah52S1b/zOYSlbVU9MS/21/var/confd/homes/oper/.ssh/var/confd/homes/operoptical9001101$1$qJM5YOJZ$Y1ECCKsRIgMFJBk.hrjkv1/var/confd/homes/optical/.ssh/var/confd/homes/opticalpacket9002102$1$Fmz.hLNd$8yG5nYZhSPNPjinrCWId8./var/confd/homes/packet/.ssh/var/confd/homes/packetprivate9005103$1$4uQVo9HU$xjyOZc8JhotXBtfcFV7MX./var/confd/homes/private/.ssh/var/confd/homes/privatepublic9004100$1$YhqvvCDs$LAGH/GQUMGMbqTUMWpapD1/var/confd/homes/public/.ssh/var/confd/homes/public0\h> 15\h# exec0actionautowizardenableexithelpstartup15configuretruepermitpermitpermittrueadminadminprivateoperoperpublicoptopticalpckpacketany-group*get*/readpermittailf-aaa-authenticationtailf-aaa/aaa/authentication/users/user[name='$USER']read updatepermittailf-aaa-usertailf-aaa/user[name='$USER']create read update deletepermittailf-webui-usertailf-webui/webui/data-stores/user-profile[username='$USER']create read update deletepermitpacketpckvlanvlan/switched-vlanscreate read update deletepermitterminal-device*/terminal-devicecreate update deletedenycomponents*/componentscreate update deletedenyopticaloptterminal-device*/terminal-devicecreate read update deletepermitcomponents*/componentscreate read update deletepermitvlanvlan/switched-vlanscreate update deletedenyadminadminany-accesspermit
diff --git a/deploy/crdb.sh b/deploy/crdb.sh index 3e80b6350e66ec30a725c45acb7cf954ac3009c8..42b49fe984d08c8fb2cae14e68f0a6d2a7a726dd 100755 --- a/deploy/crdb.sh +++ b/deploy/crdb.sh @@ -154,8 +154,8 @@ function crdb_undeploy_single() { echo } -function crdb_drop_database_single() { - echo "Drop database if exists" +function crdb_drop_databases_single() { + echo "Drop TFS databases, if exist" if [[ -z "${GITLAB_CI}" ]]; then #kubectl --namespace ${CRDB_NAMESPACE} get service cockroachdb-public -o yaml @@ -168,9 +168,21 @@ function crdb_drop_database_single() { CRDB_CLIENT_URL="postgresql://${CRDB_USERNAME}:${CRDB_PASSWORD}@${CRDB_HOST}:${CRDB_PORT}/defaultdb?sslmode=require" echo "CRDB_CLIENT_URL=${CRDB_CLIENT_URL}" - kubectl exec -i --namespace ${CRDB_NAMESPACE} cockroachdb-0 -- \ - ./cockroach sql --certs-dir=/cockroach/cockroach-certs --url=${CRDB_CLIENT_URL} \ - --execute "DROP DATABASE IF EXISTS ${CRDB_DATABASE};" + + DATABASES=$( + kubectl exec -i --namespace ${CRDB_NAMESPACE} cockroachdb-0 -- \ + ./cockroach sql --certs-dir=/cockroach/cockroach-certs --url=${CRDB_CLIENT_URL} \ + --execute "SHOW DATABASES;" --format=tsv | awk '{print $1}' | grep "^tfs" + ) + echo "Found TFS databases: ${DATABASES}" | tr '\n' ' ' + echo + + for DB_NAME in $DATABASES; do + echo "Dropping TFS database: $DB_NAME" + kubectl exec -i --namespace ${CRDB_NAMESPACE} cockroachdb-0 -- \ + ./cockroach sql --certs-dir=/cockroach/cockroach-certs --url=${CRDB_CLIENT_URL} \ + --execute="DROP DATABASE IF EXISTS $DB_NAME CASCADE;" + done echo } @@ -349,11 +361,23 @@ function crdb_undeploy_cluster() { echo } -function crdb_drop_database_cluster() { - echo "Drop database if exists" - kubectl exec -i --namespace ${CRDB_NAMESPACE} cockroachdb-client-secure -- \ - ./cockroach sql --certs-dir=/cockroach/cockroach-certs --host=cockroachdb-public --execute \ - "DROP DATABASE IF EXISTS ${CRDB_DATABASE};" +function crdb_drop_databases_cluster() { + echo "Drop TFS databases, if exist" + + DATABASES=$( + kubectl exec -i --namespace ${CRDB_NAMESPACE} cockroachdb-client-secure -- \ + ./cockroach sql --certs-dir=/cockroach/cockroach-certs --host=cockroachdb-public \ + --execute "SHOW DATABASES;" --format=tsv | awk '{print $1}' | grep "^tfs" + ) + echo "Found TFS databases: ${DATABASES}" | tr '\n' ' ' + echo + + for DB_NAME in $DATABASES; do + echo "Dropping TFS database: $DB_NAME" + kubectl exec -i --namespace ${CRDB_NAMESPACE} cockroachdb-client-secure -- \ + ./cockroach sql --certs-dir=/cockroach/cockroach-certs --host=cockroachdb-public \ + --execute="DROP DATABASE IF EXISTS $DB_NAME CASCADE;" + done echo } @@ -365,7 +389,7 @@ if [ "$CRDB_DEPLOY_MODE" == "single" ]; then crdb_deploy_single if [ "$CRDB_DROP_DATABASE_IF_EXISTS" == "YES" ]; then - crdb_drop_database_single + crdb_drop_databases_single fi elif [ "$CRDB_DEPLOY_MODE" == "cluster" ]; then if [ "$CRDB_REDEPLOY" == "YES" ]; then @@ -375,7 +399,7 @@ elif [ "$CRDB_DEPLOY_MODE" == "cluster" ]; then crdb_deploy_cluster if [ "$CRDB_DROP_DATABASE_IF_EXISTS" == "YES" ]; then - crdb_drop_database_cluster + crdb_drop_databases_cluster fi else echo "Unsupported value: CRDB_DEPLOY_MODE=$CRDB_DEPLOY_MODE" diff --git a/deploy/kafka.sh b/deploy/kafka.sh index 0483bce153b457800c6f7db2ef66685e90118111..4cbcdb7014c983eeda9bab1d6655fa042751b931 100755 --- a/deploy/kafka.sh +++ b/deploy/kafka.sh @@ -47,10 +47,10 @@ function kafka_deploy() { cp "${KFK_MANIFESTS_PATH}/${KFK_MANIFEST}" "${TMP_MANIFESTS_FOLDER}/${KFK_MANIFEST}" # echo "Apache Kafka Namespace" - echo ">>> Delete Apache Kafka Namespace" + echo "Delete Apache Kafka Namespace" kubectl delete namespace ${KFK_NAMESPACE} --ignore-not-found - echo ">>> Create Apache Kafka Namespace" + echo "Create Apache Kafka Namespace" kubectl create namespace ${KFK_NAMESPACE} # echo ">>> Deplying Apache Kafka Zookeeper" @@ -76,15 +76,15 @@ function kafka_deploy() { # fi } -echo "Apache Kafka" -echo ">>> Checking if Apache Kafka is deployed ... " +echo ">>> Apache Kafka" +echo "Checking if Apache Kafka is deployed ... " if [ "$KFK_REDEPLOY" == "YES" ]; then - echo ">>> Redeploying kafka namespace" + echo "Redeploying kafka namespace" kafka_deploy elif kubectl get namespace "${KFK_NAMESPACE}" &> /dev/null; then - echo ">>> Apache Kafka already present; skipping step." + echo "Apache Kafka already present; skipping step." else - echo ">>> Kafka namespace doesn't exists. Deploying kafka namespace" + echo "Kafka namespace doesn't exists. Deploying kafka namespace" kafka_deploy fi echo diff --git a/deploy/tfs.sh b/deploy/tfs.sh index da078a4f3d9b4c441085a9ae0b8c532ca1f66032..6c0ddcb63e71abd2e713e4809aeb7795b43053fa 100755 --- a/deploy/tfs.sh +++ b/deploy/tfs.sh @@ -146,55 +146,17 @@ kubectl create namespace $TFS_K8S_NAMESPACE sleep 2 printf "\n" -echo "Create secret with CockroachDB data" +echo ">>> Create Secret with CockroachDB data..." CRDB_SQL_PORT=$(kubectl --namespace ${CRDB_NAMESPACE} get service cockroachdb-public -o 'jsonpath={.spec.ports[?(@.name=="sql")].port}') -CRDB_DATABASE_CONTEXT=${CRDB_DATABASE} # TODO: change by specific configurable environment variable kubectl create secret generic crdb-data --namespace ${TFS_K8S_NAMESPACE} --type='Opaque' \ --from-literal=CRDB_NAMESPACE=${CRDB_NAMESPACE} \ --from-literal=CRDB_SQL_PORT=${CRDB_SQL_PORT} \ - --from-literal=CRDB_DATABASE=${CRDB_DATABASE_CONTEXT} \ --from-literal=CRDB_USERNAME=${CRDB_USERNAME} \ --from-literal=CRDB_PASSWORD=${CRDB_PASSWORD} \ --from-literal=CRDB_SSLMODE=require printf "\n" -echo "Create secret with CockroachDB data for KPI Management microservices" -CRDB_SQL_PORT=$(kubectl --namespace ${CRDB_NAMESPACE} get service cockroachdb-public -o 'jsonpath={.spec.ports[?(@.name=="sql")].port}') -CRDB_DATABASE_KPI_MGMT="tfs_kpi_mgmt" # TODO: change by specific configurable environment variable -kubectl create secret generic crdb-kpi-data --namespace ${TFS_K8S_NAMESPACE} --type='Opaque' \ - --from-literal=CRDB_NAMESPACE=${CRDB_NAMESPACE} \ - --from-literal=CRDB_SQL_PORT=${CRDB_SQL_PORT} \ - --from-literal=CRDB_DATABASE=${CRDB_DATABASE_KPI_MGMT} \ - --from-literal=CRDB_USERNAME=${CRDB_USERNAME} \ - --from-literal=CRDB_PASSWORD=${CRDB_PASSWORD} \ - --from-literal=CRDB_SSLMODE=require -printf "\n" - -echo "Create secret with CockroachDB data for Telemetry microservices" -CRDB_SQL_PORT=$(kubectl --namespace ${CRDB_NAMESPACE} get service cockroachdb-public -o 'jsonpath={.spec.ports[?(@.name=="sql")].port}') -CRDB_DATABASE_TELEMETRY="tfs_telemetry" # TODO: change by specific configurable environment variable -kubectl create secret generic crdb-telemetry --namespace ${TFS_K8S_NAMESPACE} --type='Opaque' \ - --from-literal=CRDB_NAMESPACE=${CRDB_NAMESPACE} \ - --from-literal=CRDB_SQL_PORT=${CRDB_SQL_PORT} \ - --from-literal=CRDB_DATABASE=${CRDB_DATABASE_TELEMETRY} \ - --from-literal=CRDB_USERNAME=${CRDB_USERNAME} \ - --from-literal=CRDB_PASSWORD=${CRDB_PASSWORD} \ - --from-literal=CRDB_SSLMODE=require -printf "\n" - -echo "Create secret with CockroachDB data for Analytics microservices" -CRDB_SQL_PORT=$(kubectl --namespace ${CRDB_NAMESPACE} get service cockroachdb-public -o 'jsonpath={.spec.ports[?(@.name=="sql")].port}') -CRDB_DATABASE_ANALYTICS="tfs_analytics" # TODO: change by specific configurable environment variable -kubectl create secret generic crdb-analytics --namespace ${TFS_K8S_NAMESPACE} --type='Opaque' \ - --from-literal=CRDB_NAMESPACE=${CRDB_NAMESPACE} \ - --from-literal=CRDB_SQL_PORT=${CRDB_SQL_PORT} \ - --from-literal=CRDB_DATABASE=${CRDB_DATABASE_ANALYTICS} \ - --from-literal=CRDB_USERNAME=${CRDB_USERNAME} \ - --from-literal=CRDB_PASSWORD=${CRDB_PASSWORD} \ - --from-literal=CRDB_SSLMODE=require -printf "\n" - -echo "Create secret with Apache Kafka data for KPI, Telemetry and Analytics microservices" +echo ">>> Create Secret with Apache Kakfa..." KFK_SERVER_PORT=$(kubectl --namespace ${KFK_NAMESPACE} get service kafka-service -o 'jsonpath={.spec.ports[0].port}') kubectl create secret generic kfk-kpi-data --namespace ${TFS_K8S_NAMESPACE} --type='Opaque' \ --from-literal=KFK_NAMESPACE=${KFK_NAMESPACE} \ @@ -382,11 +344,10 @@ for COMPONENT in $TFS_COMPONENTS; do VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}-gateway:" "$MANIFEST" | cut -d ":" -f4) sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT-gateway:${VERSION}#image: $IMAGE_URL#g" "$MANIFEST" else + VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}:" "$MANIFEST" | cut -d ":" -f4) if [ "$TFS_SKIP_BUILD" != "YES" ]; then IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') - VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}:" "$MANIFEST" | cut -d ":" -f4) else - VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}:" "$MANIFEST" | cut -d ":" -f4) IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT:$VERSION" | sed 's,//,/,g' | sed 's,http:/,,g') fi sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT:${VERSION}#image: $IMAGE_URL#g" "$MANIFEST" diff --git a/dev.logs b/dev.logs deleted file mode 100644 index 67d2890be09e3fdbe9718e9e236777004211cb8c..0000000000000000000000000000000000000000 --- a/dev.logs +++ /dev/null @@ -1,557 +0,0 @@ -[2024-09-13 12:09:42,326] INFO:__main__:Starting... -[2024-09-13 12:09:42,328] INFO:device.service.DeviceService:Starting Service (tentative endpoint: 0.0.0.0:2020, max_workers: 200)... -[2024-09-13 12:09:42,334] INFO:device.service.DeviceService:Listening on 0.0.0.0:2020... -[2024-09-13 12:09:42,336] INFO:__main__:Pre-loading drivers... -[2024-09-13 12:09:50,349] INFO:common.tools.client.RetryDecorator:Retry 1/15 after 5.000000 seconds... -[2024-09-13 12:13:00,367] INFO:device.service.DeviceServiceServicerImpl:connection_config_rules {'address': '172.17.254.41', 'port': '2022', 'settings': '{\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}'} -[2024-09-13 12:13:00,367] INFO:device.service.DeviceServiceServicerImpl:lenght of connection_config_rules 3 -[2024-09-13 12:13:00,370] INFO:device.service.DeviceServiceServicerImpl:connection_config_rules {'address': '172.17.254.41', 'port': '2022', 'settings': '{\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}'} -[2024-09-13 12:13:00,370] INFO:device.service.DeviceServiceServicerImpl:lenght of connection_config_rules 3 -[2024-09-13 12:13:00,372] INFO:device.service.DeviceServiceServicerImpl:connection_config_rules {'address': '172.17.254.41', 'port': '2022', 'settings': '{\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}'} -[2024-09-13 12:13:00,372] INFO:device.service.DeviceServiceServicerImpl:lenght of connection_config_rules 3 -[2024-09-13 12:13:00,376] INFO:device.service.DeviceServiceServicerImpl:connection_config_rules {'address': '172.17.254.42', 'port': '2022', 'settings': '{\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}'} -[2024-09-13 12:13:00,377] INFO:device.service.DeviceServiceServicerImpl:connection_config_rules {'address': '172.17.254.42', 'port': '2022', 'settings': '{\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}'} -[2024-09-13 12:13:00,381] INFO:device.service.DeviceServiceServicerImpl:connection_config_rules {'address': '172.17.254.42', 'port': '2022', 'settings': '{\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}'} -[2024-09-13 12:13:00,383] INFO:device.service.DeviceServiceServicerImpl:lenght of connection_config_rules 3 -[2024-09-13 12:13:00,383] INFO:device.service.DeviceServiceServicerImpl:lenght of connection_config_rules 3 -[2024-09-13 12:13:00,383] INFO:device.service.DeviceServiceServicerImpl:lenght of connection_config_rules 3 -[2024-09-13 12:13:00,385] INFO:device.service.DeviceServiceServicerImpl:connection_config_rules {'address': '172.17.254.21', 'port': '2022', 'settings': '{\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}'} -[2024-09-13 12:13:00,386] INFO:device.service.DeviceServiceServicerImpl:connection_config_rules {'address': '172.17.254.22', 'port': '2022', 'settings': '{\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}'} -[2024-09-13 12:13:00,390] INFO:device.service.DeviceServiceServicerImpl:lenght of connection_config_rules 3 -[2024-09-13 12:13:00,390] INFO:device.service.DeviceServiceServicerImpl:lenght of connection_config_rules 3 -[2024-09-13 12:13:00,567] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(68741528-2e94-5274-ab3c-fddcd8dc05ef) with filter_fields({'device_type': 'optical-roadm', 'driver': [11]})... -[2024-09-13 12:13:00,567] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(68741528-2e94-5274-ab3c-fddcd8dc05ef) with filter_fields({'device_type': 'optical-roadm', 'driver': [11]})... -[2024-09-13 12:13:00,686] INFO:root:setting ocdriver address 172.17.254.21 and 2022 {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-roadm', 'username': 'admin'} -[2024-09-13 12:13:01,705] ERROR:ncclient.transport.ssh:Exception (client): Error reading SSH protocol banner -[2024-09-13 12:13:01,716] ERROR:ncclient.transport.ssh:Traceback (most recent call last): -[2024-09-13 12:13:01,717] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner -[2024-09-13 12:13:01,717] ERROR:ncclient.transport.ssh: buf = self.packetizer.readline(timeout) -[2024-09-13 12:13:01,717] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 380, in readline -[2024-09-13 12:13:01,717] ERROR:ncclient.transport.ssh: buf += self._read_timeout(timeout) -[2024-09-13 12:13:01,717] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 609, in _read_timeout -[2024-09-13 12:13:01,717] ERROR:ncclient.transport.ssh: raise EOFError() -[2024-09-13 12:13:01,717] ERROR:ncclient.transport.ssh:EOFError -[2024-09-13 12:13:01,718] ERROR:ncclient.transport.ssh: -[2024-09-13 12:13:01,718] ERROR:ncclient.transport.ssh:During handling of the above exception, another exception occurred: -[2024-09-13 12:13:01,718] ERROR:ncclient.transport.ssh: -[2024-09-13 12:13:01,718] ERROR:ncclient.transport.ssh:Traceback (most recent call last): -[2024-09-13 12:13:01,718] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run -[2024-09-13 12:13:01,718] ERROR:ncclient.transport.ssh: self._check_banner() -[2024-09-13 12:13:01,718] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner -[2024-09-13 12:13:01,718] ERROR:ncclient.transport.ssh: raise SSHException( -[2024-09-13 12:13:01,719] ERROR:ncclient.transport.ssh:paramiko.ssh_exception.SSHException: Error reading SSH protocol banner -[2024-09-13 12:13:01,719] ERROR:ncclient.transport.ssh: -[2024-09-13 12:13:01,719] ERROR:device.service.DeviceServiceServicerImpl:AddDevice exception -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner - buf = self.packetizer.readline(timeout) - File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 380, in readline - buf += self._read_timeout(timeout) - File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 609, in _read_timeout - raise EOFError() -EOFError - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/ncclient/transport/ssh.py", line 331, in connect - self._transport.start_client() - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 698, in start_client - raise e - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run - self._check_banner() - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner - raise SSHException( -paramiko.ssh_exception.SSHException: Error reading SSH protocol banner - -During handling of the above exception, another exception occurred: - -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/device/service/DeviceServiceServicerImpl.py", line 102, in AddDevice - driver : _Driver = get_driver(self.driver_instance_cache, device) - File "/var/teraflow/device/service/driver_api/DriverInstanceCache.py", line 105, in get_driver - driver : _Driver = driver_instance_cache.get( - File "/var/teraflow/device/service/driver_api/DriverInstanceCache.py", line 57, in get - driver_instance : _Driver = driver_class(address, port, device_uuid=device_uuid, **settings) - File "/var/teraflow/device/service/drivers/oc_driver/OCDriver.py", line 234, in __init__ - self.Connect() - File "/var/teraflow/device/service/drivers/oc_driver/OCDriver.py", line 240, in Connect - self.__netconf_handler.connect() - File "/var/teraflow/device/service/drivers/oc_driver/OCDriver.py", line 92, in connect - self.__manager = connect_ssh( - File "/usr/local/lib/python3.9/site-packages/ncclient/manager.py", line 143, in connect_ssh - session.connect(*args, **kwds) - File "/usr/local/lib/python3.9/site-packages/ncclient/transport/ssh.py", line 333, in connect - raise SSHError('Negotiation failed: %s' % e) -ncclient.transport.errors.SSHError: Negotiation failed: Error reading SSH protocol banner -[2024-09-13 12:13:01,722] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(87d74166-65e3-595e-b643-122b4fd0303f) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-09-13 12:13:01,723] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(87d74166-65e3-595e-b643-122b4fd0303f) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-09-13 12:13:01,724] INFO:root:setting ocdriver address 172.17.254.42 and 2022 {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-09-13 12:13:02,726] ERROR:ncclient.transport.ssh:Exception (client): Error reading SSH protocol banner -[2024-09-13 12:13:02,727] ERROR:ncclient.transport.ssh:Traceback (most recent call last): -[2024-09-13 12:13:02,727] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner -[2024-09-13 12:13:02,727] ERROR:ncclient.transport.ssh: buf = self.packetizer.readline(timeout) -[2024-09-13 12:13:02,727] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 380, in readline -[2024-09-13 12:13:02,727] ERROR:ncclient.transport.ssh: buf += self._read_timeout(timeout) -[2024-09-13 12:13:02,727] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 609, in _read_timeout -[2024-09-13 12:13:02,727] ERROR:ncclient.transport.ssh: raise EOFError() -[2024-09-13 12:13:02,727] ERROR:ncclient.transport.ssh:EOFError -[2024-09-13 12:13:02,727] ERROR:ncclient.transport.ssh: -[2024-09-13 12:13:02,727] ERROR:ncclient.transport.ssh:During handling of the above exception, another exception occurred: -[2024-09-13 12:13:02,728] ERROR:ncclient.transport.ssh: -[2024-09-13 12:13:02,728] ERROR:ncclient.transport.ssh:Traceback (most recent call last): -[2024-09-13 12:13:02,728] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run -[2024-09-13 12:13:02,728] ERROR:ncclient.transport.ssh: self._check_banner() -[2024-09-13 12:13:02,728] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner -[2024-09-13 12:13:02,728] ERROR:ncclient.transport.ssh: raise SSHException( -[2024-09-13 12:13:02,728] ERROR:ncclient.transport.ssh:paramiko.ssh_exception.SSHException: Error reading SSH protocol banner -[2024-09-13 12:13:02,728] ERROR:ncclient.transport.ssh: -[2024-09-13 12:13:02,728] ERROR:device.service.DeviceServiceServicerImpl:AddDevice exception -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner - buf = self.packetizer.readline(timeout) - File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 380, in readline - buf += self._read_timeout(timeout) - File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 609, in _read_timeout - raise EOFError() -EOFError - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/ncclient/transport/ssh.py", line 331, in connect - self._transport.start_client() - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 698, in start_client - raise e - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run - self._check_banner() - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner - raise SSHException( -paramiko.ssh_exception.SSHException: Error reading SSH protocol banner - -During handling of the above exception, another exception occurred: - -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/device/service/DeviceServiceServicerImpl.py", line 102, in AddDevice - driver : _Driver = get_driver(self.driver_instance_cache, device) - File "/var/teraflow/device/service/driver_api/DriverInstanceCache.py", line 105, in get_driver - driver : _Driver = driver_instance_cache.get( - File "/var/teraflow/device/service/driver_api/DriverInstanceCache.py", line 57, in get - driver_instance : _Driver = driver_class(address, port, device_uuid=device_uuid, **settings) - File "/var/teraflow/device/service/drivers/oc_driver/OCDriver.py", line 234, in __init__ - self.Connect() - File "/var/teraflow/device/service/drivers/oc_driver/OCDriver.py", line 240, in Connect - self.__netconf_handler.connect() - File "/var/teraflow/device/service/drivers/oc_driver/OCDriver.py", line 92, in connect - self.__manager = connect_ssh( - File "/usr/local/lib/python3.9/site-packages/ncclient/manager.py", line 143, in connect_ssh - session.connect(*args, **kwds) - File "/usr/local/lib/python3.9/site-packages/ncclient/transport/ssh.py", line 333, in connect - raise SSHError('Negotiation failed: %s' % e) -ncclient.transport.errors.SSHError: Negotiation failed: Error reading SSH protocol banner -[2024-09-13 12:13:02,729] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(012c4e67-0024-5f30-b527-55ec6daf2639) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-09-13 12:13:02,729] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(012c4e67-0024-5f30-b527-55ec6daf2639) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-09-13 12:13:02,730] INFO:root:setting ocdriver address 172.17.254.42 and 2022 {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-09-13 12:13:03,732] ERROR:ncclient.transport.ssh:Exception (client): Error reading SSH protocol banner -[2024-09-13 12:13:03,733] ERROR:ncclient.transport.ssh:Traceback (most recent call last): -[2024-09-13 12:13:03,733] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner -[2024-09-13 12:13:03,733] ERROR:ncclient.transport.ssh: buf = self.packetizer.readline(timeout) -[2024-09-13 12:13:03,733] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 380, in readline -[2024-09-13 12:13:03,733] ERROR:ncclient.transport.ssh: buf += self._read_timeout(timeout) -[2024-09-13 12:13:03,733] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 609, in _read_timeout -[2024-09-13 12:13:03,733] ERROR:ncclient.transport.ssh: raise EOFError() -[2024-09-13 12:13:03,733] ERROR:ncclient.transport.ssh:EOFError -[2024-09-13 12:13:03,733] ERROR:ncclient.transport.ssh: -[2024-09-13 12:13:03,733] ERROR:ncclient.transport.ssh:During handling of the above exception, another exception occurred: -[2024-09-13 12:13:03,733] ERROR:ncclient.transport.ssh: -[2024-09-13 12:13:03,733] ERROR:ncclient.transport.ssh:Traceback (most recent call last): -[2024-09-13 12:13:03,733] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run -[2024-09-13 12:13:03,733] ERROR:ncclient.transport.ssh: self._check_banner() -[2024-09-13 12:13:03,734] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner -[2024-09-13 12:13:03,734] ERROR:ncclient.transport.ssh: raise SSHException( -[2024-09-13 12:13:03,734] ERROR:ncclient.transport.ssh:paramiko.ssh_exception.SSHException: Error reading SSH protocol banner -[2024-09-13 12:13:03,734] ERROR:ncclient.transport.ssh: -[2024-09-13 12:13:03,737] ERROR:device.service.DeviceServiceServicerImpl:AddDevice exception -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner - buf = self.packetizer.readline(timeout) - File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 380, in readline - buf += self._read_timeout(timeout) - File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 609, in _read_timeout - raise EOFError() -EOFError - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/ncclient/transport/ssh.py", line 331, in connect - self._transport.start_client() - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 698, in start_client - raise e - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run - self._check_banner() - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner - raise SSHException( -paramiko.ssh_exception.SSHException: Error reading SSH protocol banner - -During handling of the above exception, another exception occurred: - -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/device/service/DeviceServiceServicerImpl.py", line 102, in AddDevice - driver : _Driver = get_driver(self.driver_instance_cache, device) - File "/var/teraflow/device/service/driver_api/DriverInstanceCache.py", line 105, in get_driver - driver : _Driver = driver_instance_cache.get( - File "/var/teraflow/device/service/driver_api/DriverInstanceCache.py", line 57, in get - driver_instance : _Driver = driver_class(address, port, device_uuid=device_uuid, **settings) - File "/var/teraflow/device/service/drivers/oc_driver/OCDriver.py", line 234, in __init__ - self.Connect() - File "/var/teraflow/device/service/drivers/oc_driver/OCDriver.py", line 240, in Connect - self.__netconf_handler.connect() - File "/var/teraflow/device/service/drivers/oc_driver/OCDriver.py", line 92, in connect - self.__manager = connect_ssh( - File "/usr/local/lib/python3.9/site-packages/ncclient/manager.py", line 143, in connect_ssh - session.connect(*args, **kwds) - File "/usr/local/lib/python3.9/site-packages/ncclient/transport/ssh.py", line 333, in connect - raise SSHError('Negotiation failed: %s' % e) -ncclient.transport.errors.SSHError: Negotiation failed: Error reading SSH protocol banner -[2024-09-13 12:13:03,737] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(4dbdc2d8-cbde-5e48-a3c0-5161387a58c7) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-09-13 12:13:03,738] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(4dbdc2d8-cbde-5e48-a3c0-5161387a58c7) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-09-13 12:13:03,739] INFO:root:setting ocdriver address 172.17.254.41 and 2022 {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-09-13 12:13:04,742] ERROR:ncclient.transport.ssh:Exception (client): Error reading SSH protocol banner -[2024-09-13 12:13:04,743] ERROR:ncclient.transport.ssh:Traceback (most recent call last): -[2024-09-13 12:13:04,743] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner -[2024-09-13 12:13:04,743] ERROR:ncclient.transport.ssh: buf = self.packetizer.readline(timeout) -[2024-09-13 12:13:04,743] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 380, in readline -[2024-09-13 12:13:04,743] ERROR:ncclient.transport.ssh: buf += self._read_timeout(timeout) -[2024-09-13 12:13:04,743] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 609, in _read_timeout -[2024-09-13 12:13:04,743] ERROR:ncclient.transport.ssh: raise EOFError() -[2024-09-13 12:13:04,743] ERROR:ncclient.transport.ssh:EOFError -[2024-09-13 12:13:04,743] ERROR:ncclient.transport.ssh: -[2024-09-13 12:13:04,743] ERROR:ncclient.transport.ssh:During handling of the above exception, another exception occurred: -[2024-09-13 12:13:04,743] ERROR:ncclient.transport.ssh: -[2024-09-13 12:13:04,743] ERROR:ncclient.transport.ssh:Traceback (most recent call last): -[2024-09-13 12:13:04,744] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run -[2024-09-13 12:13:04,744] ERROR:ncclient.transport.ssh: self._check_banner() -[2024-09-13 12:13:04,744] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner -[2024-09-13 12:13:04,744] ERROR:ncclient.transport.ssh: raise SSHException( -[2024-09-13 12:13:04,744] ERROR:ncclient.transport.ssh:paramiko.ssh_exception.SSHException: Error reading SSH protocol banner -[2024-09-13 12:13:04,744] ERROR:ncclient.transport.ssh: -[2024-09-13 12:13:04,744] ERROR:device.service.DeviceServiceServicerImpl:AddDevice exception -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner - buf = self.packetizer.readline(timeout) - File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 380, in readline - buf += self._read_timeout(timeout) - File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 609, in _read_timeout - raise EOFError() -EOFError - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/ncclient/transport/ssh.py", line 331, in connect - self._transport.start_client() - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 698, in start_client - raise e - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run - self._check_banner() - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner - raise SSHException( -paramiko.ssh_exception.SSHException: Error reading SSH protocol banner - -During handling of the above exception, another exception occurred: - -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/device/service/DeviceServiceServicerImpl.py", line 102, in AddDevice - driver : _Driver = get_driver(self.driver_instance_cache, device) - File "/var/teraflow/device/service/driver_api/DriverInstanceCache.py", line 105, in get_driver - driver : _Driver = driver_instance_cache.get( - File "/var/teraflow/device/service/driver_api/DriverInstanceCache.py", line 57, in get - driver_instance : _Driver = driver_class(address, port, device_uuid=device_uuid, **settings) - File "/var/teraflow/device/service/drivers/oc_driver/OCDriver.py", line 234, in __init__ - self.Connect() - File "/var/teraflow/device/service/drivers/oc_driver/OCDriver.py", line 240, in Connect - self.__netconf_handler.connect() - File "/var/teraflow/device/service/drivers/oc_driver/OCDriver.py", line 92, in connect - self.__manager = connect_ssh( - File "/usr/local/lib/python3.9/site-packages/ncclient/manager.py", line 143, in connect_ssh - session.connect(*args, **kwds) - File "/usr/local/lib/python3.9/site-packages/ncclient/transport/ssh.py", line 333, in connect - raise SSHError('Negotiation failed: %s' % e) -ncclient.transport.errors.SSHError: Negotiation failed: Error reading SSH protocol banner -[2024-09-13 12:13:04,744] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(cf618e18-c0a1-58c4-9827-943a2c0523d6) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-09-13 12:13:04,745] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(cf618e18-c0a1-58c4-9827-943a2c0523d6) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-09-13 12:13:04,746] INFO:root:setting ocdriver address 172.17.254.41 and 2022 {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-09-13 12:13:05,748] ERROR:ncclient.transport.ssh:Exception (client): Error reading SSH protocol banner -[2024-09-13 12:13:05,748] ERROR:ncclient.transport.ssh:Traceback (most recent call last): -[2024-09-13 12:13:05,748] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner -[2024-09-13 12:13:05,748] ERROR:ncclient.transport.ssh: buf = self.packetizer.readline(timeout) -[2024-09-13 12:13:05,749] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 380, in readline -[2024-09-13 12:13:05,749] ERROR:ncclient.transport.ssh: buf += self._read_timeout(timeout) -[2024-09-13 12:13:05,749] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 609, in _read_timeout -[2024-09-13 12:13:05,749] ERROR:ncclient.transport.ssh: raise EOFError() -[2024-09-13 12:13:05,749] ERROR:ncclient.transport.ssh:EOFError -[2024-09-13 12:13:05,749] ERROR:ncclient.transport.ssh: -[2024-09-13 12:13:05,750] ERROR:ncclient.transport.ssh:During handling of the above exception, another exception occurred: -[2024-09-13 12:13:05,750] ERROR:ncclient.transport.ssh: -[2024-09-13 12:13:05,750] ERROR:ncclient.transport.ssh:Traceback (most recent call last): -[2024-09-13 12:13:05,750] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run -[2024-09-13 12:13:05,750] ERROR:ncclient.transport.ssh: self._check_banner() -[2024-09-13 12:13:05,751] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner -[2024-09-13 12:13:05,751] ERROR:ncclient.transport.ssh: raise SSHException( -[2024-09-13 12:13:05,751] ERROR:ncclient.transport.ssh:paramiko.ssh_exception.SSHException: Error reading SSH protocol banner -[2024-09-13 12:13:05,751] ERROR:ncclient.transport.ssh: -[2024-09-13 12:13:05,752] ERROR:device.service.DeviceServiceServicerImpl:AddDevice exception -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner - buf = self.packetizer.readline(timeout) - File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 380, in readline - buf += self._read_timeout(timeout) - File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 609, in _read_timeout - raise EOFError() -EOFError - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/ncclient/transport/ssh.py", line 331, in connect - self._transport.start_client() - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 698, in start_client - raise e - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run - self._check_banner() - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner - raise SSHException( -paramiko.ssh_exception.SSHException: Error reading SSH protocol banner - -During handling of the above exception, another exception occurred: - -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/device/service/DeviceServiceServicerImpl.py", line 102, in AddDevice - driver : _Driver = get_driver(self.driver_instance_cache, device) - File "/var/teraflow/device/service/driver_api/DriverInstanceCache.py", line 105, in get_driver - driver : _Driver = driver_instance_cache.get( - File "/var/teraflow/device/service/driver_api/DriverInstanceCache.py", line 57, in get - driver_instance : _Driver = driver_class(address, port, device_uuid=device_uuid, **settings) - File "/var/teraflow/device/service/drivers/oc_driver/OCDriver.py", line 234, in __init__ - self.Connect() - File "/var/teraflow/device/service/drivers/oc_driver/OCDriver.py", line 240, in Connect - self.__netconf_handler.connect() - File "/var/teraflow/device/service/drivers/oc_driver/OCDriver.py", line 92, in connect - self.__manager = connect_ssh( - File "/usr/local/lib/python3.9/site-packages/ncclient/manager.py", line 143, in connect_ssh - session.connect(*args, **kwds) - File "/usr/local/lib/python3.9/site-packages/ncclient/transport/ssh.py", line 333, in connect - raise SSHError('Negotiation failed: %s' % e) -ncclient.transport.errors.SSHError: Negotiation failed: Error reading SSH protocol banner -[2024-09-13 12:13:05,752] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(27c2ed23-e74a-518f-820d-ae2c8ae23086) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-09-13 12:13:05,753] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(27c2ed23-e74a-518f-820d-ae2c8ae23086) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-09-13 12:13:05,754] INFO:root:setting ocdriver address 172.17.254.41 and 2022 {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-09-13 12:13:06,756] ERROR:ncclient.transport.ssh:Exception (client): Error reading SSH protocol banner -[2024-09-13 12:13:06,756] ERROR:ncclient.transport.ssh:Traceback (most recent call last): -[2024-09-13 12:13:06,756] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner -[2024-09-13 12:13:06,757] ERROR:ncclient.transport.ssh: buf = self.packetizer.readline(timeout) -[2024-09-13 12:13:06,757] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 380, in readline -[2024-09-13 12:13:06,757] ERROR:ncclient.transport.ssh: buf += self._read_timeout(timeout) -[2024-09-13 12:13:06,757] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 609, in _read_timeout -[2024-09-13 12:13:06,757] ERROR:ncclient.transport.ssh: raise EOFError() -[2024-09-13 12:13:06,757] ERROR:ncclient.transport.ssh:EOFError -[2024-09-13 12:13:06,757] ERROR:ncclient.transport.ssh: -[2024-09-13 12:13:06,757] ERROR:ncclient.transport.ssh:During handling of the above exception, another exception occurred: -[2024-09-13 12:13:06,758] ERROR:ncclient.transport.ssh: -[2024-09-13 12:13:06,758] ERROR:ncclient.transport.ssh:Traceback (most recent call last): -[2024-09-13 12:13:06,758] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run -[2024-09-13 12:13:06,758] ERROR:ncclient.transport.ssh: self._check_banner() -[2024-09-13 12:13:06,758] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner -[2024-09-13 12:13:06,758] ERROR:ncclient.transport.ssh: raise SSHException( -[2024-09-13 12:13:06,758] ERROR:ncclient.transport.ssh:paramiko.ssh_exception.SSHException: Error reading SSH protocol banner -[2024-09-13 12:13:06,758] ERROR:ncclient.transport.ssh: -[2024-09-13 12:13:06,759] ERROR:device.service.DeviceServiceServicerImpl:AddDevice exception -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner - buf = self.packetizer.readline(timeout) - File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 380, in readline - buf += self._read_timeout(timeout) - File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 609, in _read_timeout - raise EOFError() -EOFError - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/ncclient/transport/ssh.py", line 331, in connect - self._transport.start_client() - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 698, in start_client - raise e - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run - self._check_banner() - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner - raise SSHException( -paramiko.ssh_exception.SSHException: Error reading SSH protocol banner - -During handling of the above exception, another exception occurred: - -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/device/service/DeviceServiceServicerImpl.py", line 102, in AddDevice - driver : _Driver = get_driver(self.driver_instance_cache, device) - File "/var/teraflow/device/service/driver_api/DriverInstanceCache.py", line 105, in get_driver - driver : _Driver = driver_instance_cache.get( - File "/var/teraflow/device/service/driver_api/DriverInstanceCache.py", line 57, in get - driver_instance : _Driver = driver_class(address, port, device_uuid=device_uuid, **settings) - File "/var/teraflow/device/service/drivers/oc_driver/OCDriver.py", line 234, in __init__ - self.Connect() - File "/var/teraflow/device/service/drivers/oc_driver/OCDriver.py", line 240, in Connect - self.__netconf_handler.connect() - File "/var/teraflow/device/service/drivers/oc_driver/OCDriver.py", line 92, in connect - self.__manager = connect_ssh( - File "/usr/local/lib/python3.9/site-packages/ncclient/manager.py", line 143, in connect_ssh - session.connect(*args, **kwds) - File "/usr/local/lib/python3.9/site-packages/ncclient/transport/ssh.py", line 333, in connect - raise SSHError('Negotiation failed: %s' % e) -ncclient.transport.errors.SSHError: Negotiation failed: Error reading SSH protocol banner -[2024-09-13 12:13:06,759] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(c944aaeb-bbdf-5f2d-b31c-8cc8903045b6) with filter_fields({'device_type': 'optical-roadm', 'driver': [11]})... -[2024-09-13 12:13:06,760] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(c944aaeb-bbdf-5f2d-b31c-8cc8903045b6) with filter_fields({'device_type': 'optical-roadm', 'driver': [11]})... -[2024-09-13 12:13:06,760] INFO:root:setting ocdriver address 172.17.254.22 and 2022 {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-roadm', 'username': 'admin'} -[2024-09-13 12:13:07,763] ERROR:ncclient.transport.ssh:Exception (client): Error reading SSH protocol banner -[2024-09-13 12:13:07,764] ERROR:ncclient.transport.ssh:Traceback (most recent call last): -[2024-09-13 12:13:07,764] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner -[2024-09-13 12:13:07,764] ERROR:ncclient.transport.ssh: buf = self.packetizer.readline(timeout) -[2024-09-13 12:13:07,764] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 380, in readline -[2024-09-13 12:13:07,764] ERROR:ncclient.transport.ssh: buf += self._read_timeout(timeout) -[2024-09-13 12:13:07,764] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 609, in _read_timeout -[2024-09-13 12:13:07,764] ERROR:ncclient.transport.ssh: raise EOFError() -[2024-09-13 12:13:07,764] ERROR:ncclient.transport.ssh:EOFError -[2024-09-13 12:13:07,764] ERROR:ncclient.transport.ssh: -[2024-09-13 12:13:07,765] ERROR:ncclient.transport.ssh:During handling of the above exception, another exception occurred: -[2024-09-13 12:13:07,765] ERROR:ncclient.transport.ssh: -[2024-09-13 12:13:07,765] ERROR:ncclient.transport.ssh:Traceback (most recent call last): -[2024-09-13 12:13:07,765] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run -[2024-09-13 12:13:07,765] ERROR:ncclient.transport.ssh: self._check_banner() -[2024-09-13 12:13:07,765] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner -[2024-09-13 12:13:07,765] ERROR:ncclient.transport.ssh: raise SSHException( -[2024-09-13 12:13:07,765] ERROR:ncclient.transport.ssh:paramiko.ssh_exception.SSHException: Error reading SSH protocol banner -[2024-09-13 12:13:07,765] ERROR:ncclient.transport.ssh: -[2024-09-13 12:13:07,765] ERROR:device.service.DeviceServiceServicerImpl:AddDevice exception -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner - buf = self.packetizer.readline(timeout) - File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 380, in readline - buf += self._read_timeout(timeout) - File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 609, in _read_timeout - raise EOFError() -EOFError - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/ncclient/transport/ssh.py", line 331, in connect - self._transport.start_client() - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 698, in start_client - raise e - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run - self._check_banner() - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner - raise SSHException( -paramiko.ssh_exception.SSHException: Error reading SSH protocol banner - -During handling of the above exception, another exception occurred: - -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/device/service/DeviceServiceServicerImpl.py", line 102, in AddDevice - driver : _Driver = get_driver(self.driver_instance_cache, device) - File "/var/teraflow/device/service/driver_api/DriverInstanceCache.py", line 105, in get_driver - driver : _Driver = driver_instance_cache.get( - File "/var/teraflow/device/service/driver_api/DriverInstanceCache.py", line 57, in get - driver_instance : _Driver = driver_class(address, port, device_uuid=device_uuid, **settings) - File "/var/teraflow/device/service/drivers/oc_driver/OCDriver.py", line 234, in __init__ - self.Connect() - File "/var/teraflow/device/service/drivers/oc_driver/OCDriver.py", line 240, in Connect - self.__netconf_handler.connect() - File "/var/teraflow/device/service/drivers/oc_driver/OCDriver.py", line 92, in connect - self.__manager = connect_ssh( - File "/usr/local/lib/python3.9/site-packages/ncclient/manager.py", line 143, in connect_ssh - session.connect(*args, **kwds) - File "/usr/local/lib/python3.9/site-packages/ncclient/transport/ssh.py", line 333, in connect - raise SSHError('Negotiation failed: %s' % e) -ncclient.transport.errors.SSHError: Negotiation failed: Error reading SSH protocol banner -[2024-09-13 12:13:07,766] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(ce0cdfdd-2182-5027-8177-676ca3244f9d) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-09-13 12:13:07,766] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(ce0cdfdd-2182-5027-8177-676ca3244f9d) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-09-13 12:13:07,767] INFO:root:setting ocdriver address 172.17.254.42 and 2022 {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-09-13 12:13:08,769] ERROR:ncclient.transport.ssh:Exception (client): Error reading SSH protocol banner -[2024-09-13 12:13:08,769] ERROR:ncclient.transport.ssh:Traceback (most recent call last): -[2024-09-13 12:13:08,770] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner -[2024-09-13 12:13:08,770] ERROR:ncclient.transport.ssh: buf = self.packetizer.readline(timeout) -[2024-09-13 12:13:08,770] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 380, in readline -[2024-09-13 12:13:08,770] ERROR:ncclient.transport.ssh: buf += self._read_timeout(timeout) -[2024-09-13 12:13:08,770] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 609, in _read_timeout -[2024-09-13 12:13:08,770] ERROR:ncclient.transport.ssh: raise EOFError() -[2024-09-13 12:13:08,770] ERROR:ncclient.transport.ssh:EOFError -[2024-09-13 12:13:08,770] ERROR:ncclient.transport.ssh: -[2024-09-13 12:13:08,770] ERROR:ncclient.transport.ssh:During handling of the above exception, another exception occurred: -[2024-09-13 12:13:08,770] ERROR:ncclient.transport.ssh: -[2024-09-13 12:13:08,770] ERROR:ncclient.transport.ssh:Traceback (most recent call last): -[2024-09-13 12:13:08,770] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run -[2024-09-13 12:13:08,770] ERROR:ncclient.transport.ssh: self._check_banner() -[2024-09-13 12:13:08,771] ERROR:ncclient.transport.ssh: File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner -[2024-09-13 12:13:08,771] ERROR:ncclient.transport.ssh: raise SSHException( -[2024-09-13 12:13:08,771] ERROR:ncclient.transport.ssh:paramiko.ssh_exception.SSHException: Error reading SSH protocol banner -[2024-09-13 12:13:08,771] ERROR:ncclient.transport.ssh: -[2024-09-13 12:13:08,771] ERROR:device.service.DeviceServiceServicerImpl:AddDevice exception -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner - buf = self.packetizer.readline(timeout) - File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 380, in readline - buf += self._read_timeout(timeout) - File "/usr/local/lib/python3.9/site-packages/paramiko/packet.py", line 609, in _read_timeout - raise EOFError() -EOFError - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/ncclient/transport/ssh.py", line 331, in connect - self._transport.start_client() - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 698, in start_client - raise e - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run - self._check_banner() - File "/usr/local/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner - raise SSHException( -paramiko.ssh_exception.SSHException: Error reading SSH protocol banner - -During handling of the above exception, another exception occurred: - -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/device/service/DeviceServiceServicerImpl.py", line 102, in AddDevice - driver : _Driver = get_driver(self.driver_instance_cache, device) - File "/var/teraflow/device/service/driver_api/DriverInstanceCache.py", line 105, in get_driver - driver : _Driver = driver_instance_cache.get( - File "/var/teraflow/device/service/driver_api/DriverInstanceCache.py", line 57, in get - driver_instance : _Driver = driver_class(address, port, device_uuid=device_uuid, **settings) - File "/var/teraflow/device/service/drivers/oc_driver/OCDriver.py", line 234, in __init__ - self.Connect() - File "/var/teraflow/device/service/drivers/oc_driver/OCDriver.py", line 240, in Connect - self.__netconf_handler.connect() - File "/var/teraflow/device/service/drivers/oc_driver/OCDriver.py", line 92, in connect - self.__manager = connect_ssh( - File "/usr/local/lib/python3.9/site-packages/ncclient/manager.py", line 143, in connect_ssh - session.connect(*args, **kwds) - File "/usr/local/lib/python3.9/site-packages/ncclient/transport/ssh.py", line 333, in connect - raise SSHError('Negotiation failed: %s' % e) -ncclient.transport.errors.SSHError: Negotiation failed: Error reading SSH protocol banner diff --git a/device b/device deleted file mode 100644 index ee73e7803b5af09156b1ab7969dfd67d7c454837..0000000000000000000000000000000000000000 --- a/device +++ /dev/null @@ -1,10754 +0,0 @@ -[2024-07-23 07:52:22,478] INFO:__main__:Starting... -[2024-07-23 07:52:22,513] INFO:device.service.DeviceService:Starting Service (tentative endpoint: 0.0.0.0:2020, max_workers: 200)... -[2024-07-23 07:52:22,628] INFO:device.service.DeviceService:Listening on 0.0.0.0:2020... -[2024-07-23 07:52:22,648] INFO:__main__:Pre-loading drivers... -[2024-07-23 07:53:39,977] INFO:device.service.DeviceServiceServicerImpl:connection_config_rules {'address': '172.17.254.41', 'port': '2022', 'settings': '{\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}'} -[2024-07-23 07:53:39,977] INFO:device.service.DeviceServiceServicerImpl:lenght of connection_config_rules 3 -[2024-07-23 07:53:39,980] INFO:device.service.DeviceServiceServicerImpl:connection_config_rules {'address': '172.17.254.41', 'port': '2022', 'settings': '{\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}'} -[2024-07-23 07:53:39,980] INFO:device.service.DeviceServiceServicerImpl:lenght of connection_config_rules 3 -[2024-07-23 07:53:39,982] INFO:device.service.DeviceServiceServicerImpl:connection_config_rules {'address': '172.17.254.41', 'port': '2022', 'settings': '{\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}'} -[2024-07-23 07:53:39,982] INFO:device.service.DeviceServiceServicerImpl:lenght of connection_config_rules 3 -[2024-07-23 07:53:39,985] INFO:device.service.DeviceServiceServicerImpl:connection_config_rules {'address': '172.17.254.42', 'port': '2022', 'settings': '{\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}'} -[2024-07-23 07:53:39,985] INFO:device.service.DeviceServiceServicerImpl:lenght of connection_config_rules 3 -[2024-07-23 07:53:39,993] INFO:device.service.DeviceServiceServicerImpl:connection_config_rules {'address': '172.17.254.22', 'port': '2022', 'settings': '{\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}'} -[2024-07-23 07:53:39,993] INFO:device.service.DeviceServiceServicerImpl:lenght of connection_config_rules 3 -[2024-07-23 07:53:39,994] INFO:device.service.DeviceServiceServicerImpl:connection_config_rules {'address': '172.17.254.22', 'port': '2022', 'settings': '{\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}'} -[2024-07-23 07:53:39,995] INFO:device.service.DeviceServiceServicerImpl:lenght of connection_config_rules 3 -[2024-07-23 07:53:39,997] INFO:device.service.DeviceServiceServicerImpl:connection_config_rules {'address': '172.17.254.42', 'port': '2022', 'settings': '{\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}'} -[2024-07-23 07:53:39,997] INFO:device.service.DeviceServiceServicerImpl:lenght of connection_config_rules 3 -[2024-07-23 07:53:39,999] INFO:device.service.DeviceServiceServicerImpl:connection_config_rules {'address': '172.17.254.42', 'port': '2022', 'settings': '{\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}'} -[2024-07-23 07:53:39,999] INFO:device.service.DeviceServiceServicerImpl:lenght of connection_config_rules 3 -[2024-07-23 07:53:41,991] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(cf618e18-c0a1-58c4-9827-943a2c0523d6) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-07-23 07:53:41,991] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(cf618e18-c0a1-58c4-9827-943a2c0523d6) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-07-23 07:53:42,112] INFO:root:setting ocdriver address 172.17.254.41 and 2022 {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-07-23 07:53:42,481] INFO:root:settings {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-07-23 07:53:42,482] INFO:ncclient.operations.rpc:[host 172.17.254.41 session-id 29] Requesting 'Get' -[2024-07-23 07:53:42,483] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(68741528-2e94-5274-ab3c-fddcd8dc05ef) with filter_fields({'device_type': 'optical-roadm', 'driver': [11]})... -[2024-07-23 07:53:42,483] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(68741528-2e94-5274-ab3c-fddcd8dc05ef) with filter_fields({'device_type': 'optical-roadm', 'driver': [11]})... -[2024-07-23 07:53:42,483] INFO:root:setting ocdriver address 172.17.254.22 and 2022 {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-roadm', 'username': 'admin'} -[2024-07-23 07:53:42,600] INFO:root:settings {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-roadm', 'username': 'admin'} -[2024-07-23 07:53:42,601] INFO:ncclient.operations.rpc:[host 172.17.254.22 session-id 85] Requesting 'Get' -[2024-07-23 07:53:42,601] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(4dbdc2d8-cbde-5e48-a3c0-5161387a58c7) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-07-23 07:53:42,601] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(4dbdc2d8-cbde-5e48-a3c0-5161387a58c7) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-07-23 07:53:42,602] INFO:root:setting ocdriver address 172.17.254.41 and 2022 {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-07-23 07:53:42,833] INFO:root:settings {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-07-23 07:53:42,834] INFO:ncclient.operations.rpc:[host 172.17.254.41 session-id 30] Requesting 'Get' -[2024-07-23 07:53:42,835] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(87d74166-65e3-595e-b643-122b4fd0303f) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-07-23 07:53:42,836] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(87d74166-65e3-595e-b643-122b4fd0303f) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-07-23 07:53:42,837] INFO:root:setting ocdriver address 172.17.254.42 and 2022 {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-07-23 07:53:42,862] INFO:root:type optical-transponder -[2024-07-23 07:53:42,866] INFO:root:channel_names [{'index': 'channel-1'}, {'index': 'channel-2'}, {'index': 'channel-3'}, {'index': 'channel-4'}] -[2024-07-23 07:53:42,868] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:42,870] INFO:root:dic {'frequency': '191600000'} -[2024-07-23 07:53:42,870] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:42,871] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-07-23 07:53:42,872] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:42,915] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-07-23 07:53:42,916] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:42,918] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1'} -[2024-07-23 07:53:42,920] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:42,921] INFO:root:dic {'frequency': '191600000'} -[2024-07-23 07:53:42,921] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:42,922] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-07-23 07:53:42,923] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:42,924] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-07-23 07:53:42,924] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:42,925] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-07-23 07:53:42,927] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:42,928] INFO:root:dic {'frequency': '191600000'} -[2024-07-23 07:53:42,929] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:42,930] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-07-23 07:53:42,930] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:42,976] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-07-23 07:53:42,978] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:42,982] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-07-23 07:53:42,984] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:42,986] INFO:root:dic {'frequency': '191600000'} -[2024-07-23 07:53:42,987] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:42,988] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-07-23 07:53:42,989] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:42,990] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-07-23 07:53:42,990] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:42,991] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-07-23 07:53:42,993] INFO:root:from OCDriver [('/opticalconfigs/opticalconfig/cf618e18-c0a1-58c4-9827-943a2c0523d6', {'opticalconfig': config: "{\"type\": \"optical-transponder\", \"channels\": [{\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-1\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": []}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}" -device_id { - device_uuid { - uuid: "cf618e18-c0a1-58c4-9827-943a2c0523d6" - } -} -}), ('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-07-23 07:53:42,994] INFO:device.service.Tools:results_getconfig = [('/opticalconfigs/opticalconfig/cf618e18-c0a1-58c4-9827-943a2c0523d6', {'opticalconfig': config: "{\"type\": \"optical-transponder\", \"channels\": [{\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-1\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": []}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}" -device_id { - device_uuid { - uuid: "cf618e18-c0a1-58c4-9827-943a2c0523d6" - } -} -}), ('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-07-23 07:53:42,994] INFO:device.service.DeviceServiceServicerImpl:add_device {'new_optical_config': {'opticalconfig': config: "{\"type\": \"optical-transponder\", \"channels\": [{\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-1\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": []}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}" -device_id { - device_uuid { - uuid: "cf618e18-c0a1-58c4-9827-943a2c0523d6" - } -} -}} -[2024-07-23 07:53:43,052] INFO:root:settings {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-07-23 07:53:43,052] INFO:ncclient.operations.rpc:[host 172.17.254.42 session-id 29] Requesting 'Get' -[2024-07-23 07:53:43,053] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(27c2ed23-e74a-518f-820d-ae2c8ae23086) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-07-23 07:53:43,053] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(27c2ed23-e74a-518f-820d-ae2c8ae23086) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-07-23 07:53:43,054] INFO:root:setting ocdriver address 172.17.254.41 and 2022 {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-07-23 07:53:43,153] INFO:root:type optical-transponder -[2024-07-23 07:53:43,157] INFO:root:channel_names [{'index': 'channel-1'}, {'index': 'channel-2'}, {'index': 'channel-3'}, {'index': 'channel-4'}] -[2024-07-23 07:53:43,158] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,160] INFO:root:dic {'frequency': '191600000'} -[2024-07-23 07:53:43,160] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,161] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-07-23 07:53:43,161] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,162] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-07-23 07:53:43,163] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,164] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1'} -[2024-07-23 07:53:43,166] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,167] INFO:root:dic {'frequency': '191600000'} -[2024-07-23 07:53:43,167] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,168] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-07-23 07:53:43,169] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,170] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-07-23 07:53:43,170] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,171] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-07-23 07:53:43,173] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,175] INFO:root:dic {'frequency': '191600000'} -[2024-07-23 07:53:43,175] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,176] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-07-23 07:53:43,177] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,178] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-07-23 07:53:43,178] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,179] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-07-23 07:53:43,181] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,182] INFO:root:dic {'frequency': '191600000'} -[2024-07-23 07:53:43,182] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,184] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-07-23 07:53:43,184] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,185] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-07-23 07:53:43,185] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,186] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-07-23 07:53:43,188] INFO:root:from OCDriver [('/opticalconfigs/opticalconfig/4dbdc2d8-cbde-5e48-a3c0-5161387a58c7', {'opticalconfig': config: "{\"type\": \"optical-transponder\", \"channels\": [{\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-1\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": []}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}" -device_id { - device_uuid { - uuid: "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7" - } -} -}), ('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-07-23 07:53:43,189] INFO:device.service.Tools:results_getconfig = [('/opticalconfigs/opticalconfig/4dbdc2d8-cbde-5e48-a3c0-5161387a58c7', {'opticalconfig': config: "{\"type\": \"optical-transponder\", \"channels\": [{\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-1\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": []}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}" -device_id { - device_uuid { - uuid: "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7" - } -} -}), ('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-07-23 07:53:43,189] INFO:device.service.DeviceServiceServicerImpl:add_device {'new_optical_config': {'opticalconfig': config: "{\"type\": \"optical-transponder\", \"channels\": [{\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-1\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": []}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}" -device_id { - device_uuid { - uuid: "4dbdc2d8-cbde-5e48-a3c0-5161387a58c7" - } -} -}} -[2024-07-23 07:53:43,201] INFO:root:settings {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-07-23 07:53:43,201] INFO:ncclient.operations.rpc:[host 172.17.254.41 session-id 31] Requesting 'Get' -[2024-07-23 07:53:43,201] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(c944aaeb-bbdf-5f2d-b31c-8cc8903045b6) with filter_fields({'device_type': 'optical-roadm', 'driver': [11]})... -[2024-07-23 07:53:43,202] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(c944aaeb-bbdf-5f2d-b31c-8cc8903045b6) with filter_fields({'device_type': 'optical-roadm', 'driver': [11]})... -[2024-07-23 07:53:43,202] INFO:root:setting ocdriver address 172.17.254.22 and 2022 {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-roadm', 'username': 'admin'} -[2024-07-23 07:53:43,313] INFO:root:settings {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-roadm', 'username': 'admin'} -[2024-07-23 07:53:43,313] INFO:ncclient.operations.rpc:[host 172.17.254.22 session-id 87] Requesting 'Get' -[2024-07-23 07:53:43,313] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(ce0cdfdd-2182-5027-8177-676ca3244f9d) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-07-23 07:53:43,314] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(ce0cdfdd-2182-5027-8177-676ca3244f9d) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-07-23 07:53:43,314] INFO:root:setting ocdriver address 172.17.254.42 and 2022 {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-07-23 07:53:43,510] INFO:root:type optical-transponder -[2024-07-23 07:53:43,518] INFO:root:channel_names [{'index': 'channel-1'}, {'index': 'channel-2'}, {'index': 'channel-3'}, {'index': 'channel-4'}] -[2024-07-23 07:53:43,522] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,524] INFO:root:dic {'frequency': '191600000'} -[2024-07-23 07:53:43,525] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,528] INFO:root:type optical-transponder -[2024-07-23 07:53:43,540] INFO:root:channel_names [{'index': 'channel-1'}, {'index': 'channel-2'}, {'index': 'channel-3'}, {'index': 'channel-4'}] -[2024-07-23 07:53:43,544] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-07-23 07:53:43,545] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,547] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,551] INFO:root:settings {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-07-23 07:53:43,553] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-07-23 07:53:43,557] INFO:ncclient.operations.rpc:[host 172.17.254.42 session-id 30] Requesting 'Get' -[2024-07-23 07:53:43,558] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,562] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1'} -[2024-07-23 07:53:43,563] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(012c4e67-0024-5f30-b527-55ec6daf2639) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-07-23 07:53:43,563] INFO:device.service.driver_api.DriverInstanceCache:Driver(OCDriver) selected for device(012c4e67-0024-5f30-b527-55ec6daf2639) with filter_fields({'device_type': 'optical-transponder', 'driver': [11]})... -[2024-07-23 07:53:43,564] INFO:root:setting ocdriver address 172.17.254.42 and 2022 {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-07-23 07:53:43,565] INFO:root:dic {'frequency': '191600000'} -[2024-07-23 07:53:43,565] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,567] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,569] INFO:root:dic {'frequency': '191600000'} -[2024-07-23 07:53:43,571] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,573] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-07-23 07:53:43,574] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,577] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-07-23 07:53:43,578] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,579] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-07-23 07:53:43,580] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,582] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-07-23 07:53:43,583] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,584] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-07-23 07:53:43,585] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1'} -[2024-07-23 07:53:43,587] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,588] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,590] INFO:root:dic {'frequency': '191600000'} -[2024-07-23 07:53:43,590] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,593] INFO:root:dic {'frequency': '191600000'} -[2024-07-23 07:53:43,594] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,593] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-07-23 07:53:43,595] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,596] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-07-23 07:53:43,597] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,598] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-07-23 07:53:43,598] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,599] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-07-23 07:53:43,599] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,600] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-07-23 07:53:43,601] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-07-23 07:53:43,602] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,603] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,604] INFO:root:dic {'frequency': '191600000'} -[2024-07-23 07:53:43,605] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,606] INFO:root:dic {'frequency': '191600000'} -[2024-07-23 07:53:43,606] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,607] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-07-23 07:53:43,608] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,609] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-07-23 07:53:43,610] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,609] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-07-23 07:53:43,610] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,611] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-07-23 07:53:43,611] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,613] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-07-23 07:53:43,616] INFO:root:from OCDriver [('/opticalconfigs/opticalconfig/87d74166-65e3-595e-b643-122b4fd0303f', {'opticalconfig': config: "{\"type\": \"optical-transponder\", \"channels\": [{\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-1\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": []}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}" -device_id { - device_uuid { - uuid: "87d74166-65e3-595e-b643-122b4fd0303f" - } -} -}), ('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-07-23 07:53:43,616] INFO:device.service.Tools:results_getconfig = [('/opticalconfigs/opticalconfig/87d74166-65e3-595e-b643-122b4fd0303f', {'opticalconfig': config: "{\"type\": \"optical-transponder\", \"channels\": [{\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-1\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": []}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}" -device_id { - device_uuid { - uuid: "87d74166-65e3-595e-b643-122b4fd0303f" - } -} -}), ('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-07-23 07:53:43,617] INFO:device.service.DeviceServiceServicerImpl:add_device {'new_optical_config': {'opticalconfig': config: "{\"type\": \"optical-transponder\", \"channels\": [{\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-1\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": []}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}" -device_id { - device_uuid { - uuid: "87d74166-65e3-595e-b643-122b4fd0303f" - } -} -}} -[2024-07-23 07:53:43,617] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-07-23 07:53:43,619] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,620] INFO:root:dic {'frequency': '191600000'} -[2024-07-23 07:53:43,621] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,623] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-07-23 07:53:43,623] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,624] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-07-23 07:53:43,629] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,698] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-07-23 07:53:43,702] INFO:root:from OCDriver [('/opticalconfigs/opticalconfig/27c2ed23-e74a-518f-820d-ae2c8ae23086', {'opticalconfig': config: "{\"type\": \"optical-transponder\", \"channels\": [{\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-1\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": []}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}" -device_id { - device_uuid { - uuid: "27c2ed23-e74a-518f-820d-ae2c8ae23086" - } -} -}), ('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-07-23 07:53:43,702] INFO:device.service.Tools:results_getconfig = [('/opticalconfigs/opticalconfig/27c2ed23-e74a-518f-820d-ae2c8ae23086', {'opticalconfig': config: "{\"type\": \"optical-transponder\", \"channels\": [{\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-1\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": []}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}" -device_id { - device_uuid { - uuid: "27c2ed23-e74a-518f-820d-ae2c8ae23086" - } -} -}), ('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-07-23 07:53:43,702] INFO:device.service.DeviceServiceServicerImpl:add_device {'new_optical_config': {'opticalconfig': config: "{\"type\": \"optical-transponder\", \"channels\": [{\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-1\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": []}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}" -device_id { - device_uuid { - uuid: "27c2ed23-e74a-518f-820d-ae2c8ae23086" - } -} -}} -[2024-07-23 07:53:43,870] INFO:root:type optical-transponder -[2024-07-23 07:53:43,891] INFO:root:channel_names [{'index': 'channel-1'}, {'index': 'channel-2'}, {'index': 'channel-3'}, {'index': 'channel-4'}] -[2024-07-23 07:53:43,896] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,900] INFO:root:dic {'frequency': '191600000'} -[2024-07-23 07:53:43,901] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,906] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-07-23 07:53:43,907] INFO:root:settings {'allow_agent': False, 'commit_per_rule': False, 'device_params': {'name': 'default'}, 'endpoints': [], 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'manager_params': {'timeout': 120}, 'password': 'admin', 'type': 'optical-transponder', 'username': 'admin'} -[2024-07-23 07:53:43,908] INFO:ncclient.operations.rpc:[host 172.17.254.42 session-id 31] Requesting 'Get' -[2024-07-23 07:53:43,908] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,913] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-07-23 07:53:43,915] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,921] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1'} -[2024-07-23 07:53:43,923] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,924] INFO:root:dic {'frequency': '191600000'} -[2024-07-23 07:53:43,924] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,925] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-07-23 07:53:43,926] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,927] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-07-23 07:53:43,927] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,928] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-07-23 07:53:43,930] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,934] INFO:root:dic {'frequency': '191600000'} -[2024-07-23 07:53:43,934] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,936] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-07-23 07:53:43,936] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,937] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-07-23 07:53:43,937] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,939] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-07-23 07:53:43,940] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,943] INFO:root:dic {'frequency': '191600000'} -[2024-07-23 07:53:43,943] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,945] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-07-23 07:53:43,945] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,949] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-07-23 07:53:43,949] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:43,950] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-07-23 07:53:43,952] INFO:root:from OCDriver [('/opticalconfigs/opticalconfig/ce0cdfdd-2182-5027-8177-676ca3244f9d', {'opticalconfig': config: "{\"type\": \"optical-transponder\", \"channels\": [{\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-1\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": []}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}" -device_id { - device_uuid { - uuid: "ce0cdfdd-2182-5027-8177-676ca3244f9d" - } -} -}), ('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-07-23 07:53:43,953] INFO:device.service.Tools:results_getconfig = [('/opticalconfigs/opticalconfig/ce0cdfdd-2182-5027-8177-676ca3244f9d', {'opticalconfig': config: "{\"type\": \"optical-transponder\", \"channels\": [{\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-1\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": []}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}" -device_id { - device_uuid { - uuid: "ce0cdfdd-2182-5027-8177-676ca3244f9d" - } -} -}), ('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-07-23 07:53:43,953] INFO:device.service.DeviceServiceServicerImpl:add_device {'new_optical_config': {'opticalconfig': config: "{\"type\": \"optical-transponder\", \"channels\": [{\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-1\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": []}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}" -device_id { - device_uuid { - uuid: "ce0cdfdd-2182-5027-8177-676ca3244f9d" - } -} -}} -[2024-07-23 07:53:44,207] INFO:root:type optical-transponder -[2024-07-23 07:53:44,211] INFO:root:channel_names [{'index': 'channel-1'}, {'index': 'channel-2'}, {'index': 'channel-3'}, {'index': 'channel-4'}] -[2024-07-23 07:53:44,213] INFO:root:resource_key frequency and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:44,224] INFO:root:dic {'frequency': '191600000'} -[2024-07-23 07:53:44,224] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:44,225] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-07-23 07:53:44,226] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:44,227] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-07-23 07:53:44,227] INFO:root:resource_key line-port and channgel_name {'index': 'channel-1'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:44,229] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-1'} -[2024-07-23 07:53:44,230] INFO:root:resource_key frequency and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:44,232] INFO:root:dic {'frequency': '191600000'} -[2024-07-23 07:53:44,232] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:44,239] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-07-23 07:53:44,239] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:44,240] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-07-23 07:53:44,241] INFO:root:resource_key line-port and channgel_name {'index': 'channel-2'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:44,242] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-2'} -[2024-07-23 07:53:44,244] INFO:root:resource_key frequency and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:44,245] INFO:root:dic {'frequency': '191600000'} -[2024-07-23 07:53:44,246] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:44,249] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-07-23 07:53:44,250] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:44,251] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-07-23 07:53:44,251] INFO:root:resource_key line-port and channgel_name {'index': 'channel-3'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:44,256] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-3'} -[2024-07-23 07:53:44,259] INFO:root:resource_key frequency and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:44,261] INFO:root:dic {'frequency': '191600000'} -[2024-07-23 07:53:44,261] INFO:root:resource_key target-output-power and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:44,263] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0'} -[2024-07-23 07:53:44,264] INFO:root:resource_key operational-mode and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:44,266] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0'} -[2024-07-23 07:53:44,266] INFO:root:resource_key line-port and channgel_name {'index': 'channel-4'} and channel_namespace http://openconfig.net/yang/terminal-device -[2024-07-23 07:53:44,273] INFO:root:dic {'frequency': '191600000', 'target-output-power': '100.0', 'operational-mode': '0', 'line-port': 'transceiver-4'} -[2024-07-23 07:53:44,277] INFO:root:from OCDriver [('/opticalconfigs/opticalconfig/012c4e67-0024-5f30-b527-55ec6daf2639', {'opticalconfig': config: "{\"type\": \"optical-transponder\", \"channels\": [{\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-1\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": []}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}" -device_id { - device_uuid { - uuid: "012c4e67-0024-5f30-b527-55ec6daf2639" - } -} -}), ('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-07-23 07:53:44,278] INFO:device.service.Tools:results_getconfig = [('/opticalconfigs/opticalconfig/012c4e67-0024-5f30-b527-55ec6daf2639', {'opticalconfig': config: "{\"type\": \"optical-transponder\", \"channels\": [{\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-1\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": []}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}" -device_id { - device_uuid { - uuid: "012c4e67-0024-5f30-b527-55ec6daf2639" - } -} -}), ('/endpoints/endpoint[1]', {'uuid': '1', 'type': 'port-1'}), ('/endpoints/endpoint[2]', {'uuid': '2', 'type': 'port-2'}), ('/endpoints/endpoint[3]', {'uuid': '3', 'type': 'port-3'}), ('/endpoints/endpoint[4]', {'uuid': '4', 'type': 'port-4'})] -[2024-07-23 07:53:44,278] INFO:device.service.DeviceServiceServicerImpl:add_device {'new_optical_config': {'opticalconfig': config: "{\"type\": \"optical-transponder\", \"channels\": [{\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-1\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-1\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-2\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-2\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-3\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-3\"}}, {\"frequency\": \"191600000\", \"target-output-power\": \"100.0\", \"operational-mode\": \"0\", \"line-port\": \"transceiver-4\", \"status\": \"DISABLED\", \"name\": {\"index\": \"channel-4\"}}], \"transceivers\": {\"transceiver\": []}, \"channel_namespace\": \"http://openconfig.net/yang/terminal-device\", \"endpoints\": [{\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-1\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-2\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-3\"}}}, {\"endpoint_uuid\": {\"uuid\": {\"index\": \"channel-4\"}}}], \"ports\": [[\"/endpoints/endpoint[1]\", {\"uuid\": \"1\", \"type\": \"port-1\"}], [\"/endpoints/endpoint[2]\", {\"uuid\": \"2\", \"type\": \"port-2\"}], [\"/endpoints/endpoint[3]\", {\"uuid\": \"3\", \"type\": \"port-3\"}], [\"/endpoints/endpoint[4]\", {\"uuid\": \"4\", \"type\": \"port-4\"}]]}" -device_id { - device_uuid { - uuid: "012c4e67-0024-5f30-b527-55ec6daf2639" - } -} -}} -[2024-07-23 07:53:47,397] INFO:root:type optical-roadm -[2024-07-23 07:53:47,485] INFO:root:optical_bands -[2024-07-23 07:53:47,502] INFO:root:from OCDriver [('/opticalconfigs/opticalconfig/68741528-2e94-5274-ab3c-fddcd8dc05ef', {'opticalconfig': config: "{\"type\": \"optical-roadm\", \"optical_bands\": [{\"band_name\": \"C-BAND\", \"lower_frequency\": \"193000000\", \"upper_frequency\": \"194000000\", \"status\": \"ENABLED\", \"src_port\": \"ADD\", \"dest_port\": \"port-1-out\", \"channel_index\": \"1\"}], \"media_channels\": [{\"band_name\": \"TEST \", \"lower_frequency\": \"193210000\", \"upper_frequency\": \"193300000\", \"status\": \"ENABLED\", \"src_port\": \"port-36-in\", \"dest_port\": \"None\", \"optical_band_parent\": \"1\", \"channel_index\": \"3\"}]}" -device_id { - device_uuid { - uuid: "68741528-2e94-5274-ab3c-fddcd8dc05ef" - } -} -}), ('/endpoints/endpoint[port-1-in]', {'uuid': 'port-1-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-1-out]', {'uuid': 'port-1-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-10-in]', {'uuid': 'port-10-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-10-out]', {'uuid': 'port-10-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-11-in]', {'uuid': 'port-11-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-11-out]', {'uuid': 'port-11-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-12-in]', {'uuid': 'port-12-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-12-out]', {'uuid': 'port-12-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-13-in]', {'uuid': 'port-13-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-13-out]', {'uuid': 'port-13-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-14-in]', {'uuid': 'port-14-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-14-out]', {'uuid': 'port-14-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-15-in]', {'uuid': 'port-15-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-15-out]', {'uuid': 'port-15-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-16-in]', {'uuid': 'port-16-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-16-out]', {'uuid': 'port-16-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-17-in]', {'uuid': 'port-17-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-17-out]', {'uuid': 'port-17-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-18-in]', {'uuid': 'port-18-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-18-out]', {'uuid': 'port-18-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-19-in]', {'uuid': 'port-19-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-19-out]', {'uuid': 'port-19-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-2-in]', {'uuid': 'port-2-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-2-out]', {'uuid': 'port-2-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-20-in]', {'uuid': 'port-20-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-20-out]', {'uuid': 'port-20-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-21-in]', {'uuid': 'port-21-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-21-out]', {'uuid': 'port-21-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-22-in]', {'uuid': 'port-22-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-22-out]', {'uuid': 'port-22-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-23-in]', {'uuid': 'port-23-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-23-out]', {'uuid': 'port-23-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-24-in]', {'uuid': 'port-24-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-24-out]', {'uuid': 'port-24-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-25-in]', {'uuid': 'port-25-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-25-out]', {'uuid': 'port-25-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-26-in]', {'uuid': 'port-26-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-26-out]', {'uuid': 'port-26-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-27-in]', {'uuid': 'port-27-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-27-out]', {'uuid': 'port-27-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-28-in]', {'uuid': 'port-28-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-28-out]', {'uuid': 'port-28-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-29-in]', {'uuid': 'port-29-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-29-out]', {'uuid': 'port-29-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-3-in]', {'uuid': 'port-3-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-3-out]', {'uuid': 'port-3-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-30-in]', {'uuid': 'port-30-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-30-out]', {'uuid': 'port-30-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-31-in]', {'uuid': 'port-31-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-31-out]', {'uuid': 'port-31-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-32-in]', {'uuid': 'port-32-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-32-out]', {'uuid': 'port-32-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-33-in]', {'uuid': 'port-33-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-33-out]', {'uuid': 'port-33-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-34-in]', {'uuid': 'port-34-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-34-out]', {'uuid': 'port-34-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-35-in]', {'uuid': 'port-35-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-35-out]', {'uuid': 'port-35-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-36-in]', {'uuid': 'port-36-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-36-out]', {'uuid': 'port-36-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-37-in]', {'uuid': 'port-37-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-37-out]', {'uuid': 'port-37-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-38-in]', {'uuid': 'port-38-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-38-out]', {'uuid': 'port-38-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-39-in]', {'uuid': 'port-39-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-39-out]', {'uuid': 'port-39-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-4-in]', {'uuid': 'port-4-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-4-out]', {'uuid': 'port-4-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-40-in]', {'uuid': 'port-40-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-40-out]', {'uuid': 'port-40-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-41-in]', {'uuid': 'port-41-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-41-out]', {'uuid': 'port-41-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-42-in]', {'uuid': 'port-42-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-42-out]', {'uuid': 'port-42-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-43-in]', {'uuid': 'port-43-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-43-out]', {'uuid': 'port-43-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-44-in]', {'uuid': 'port-44-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-44-out]', {'uuid': 'port-44-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-45-in]', {'uuid': 'port-45-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-45-out]', {'uuid': 'port-45-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-46-in]', {'uuid': 'port-46-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-46-out]', {'uuid': 'port-46-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-47-in]', {'uuid': 'port-47-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-47-out]', {'uuid': 'port-47-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-48-in]', {'uuid': 'port-48-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-48-out]', {'uuid': 'port-48-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-5-in]', {'uuid': 'port-5-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-5-out]', {'uuid': 'port-5-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-6-in]', {'uuid': 'port-6-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-6-out]', {'uuid': 'port-6-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-7-in]', {'uuid': 'port-7-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-7-out]', {'uuid': 'port-7-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-8-in]', {'uuid': 'port-8-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-8-out]', {'uuid': 'port-8-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-9-in]', {'uuid': 'port-9-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-9-out]', {'uuid': 'port-9-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'})] -[2024-07-23 07:53:47,504] INFO:device.service.Tools:results_getconfig = [('/opticalconfigs/opticalconfig/68741528-2e94-5274-ab3c-fddcd8dc05ef', {'opticalconfig': config: "{\"type\": \"optical-roadm\", \"optical_bands\": [{\"band_name\": \"C-BAND\", \"lower_frequency\": \"193000000\", \"upper_frequency\": \"194000000\", \"status\": \"ENABLED\", \"src_port\": \"ADD\", \"dest_port\": \"port-1-out\", \"channel_index\": \"1\"}], \"media_channels\": [{\"band_name\": \"TEST \", \"lower_frequency\": \"193210000\", \"upper_frequency\": \"193300000\", \"status\": \"ENABLED\", \"src_port\": \"port-36-in\", \"dest_port\": \"None\", \"optical_band_parent\": \"1\", \"channel_index\": \"3\"}]}" -device_id { - device_uuid { - uuid: "68741528-2e94-5274-ab3c-fddcd8dc05ef" - } -} -}), ('/endpoints/endpoint[port-1-in]', {'uuid': 'port-1-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-1-out]', {'uuid': 'port-1-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-10-in]', {'uuid': 'port-10-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-10-out]', {'uuid': 'port-10-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-11-in]', {'uuid': 'port-11-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-11-out]', {'uuid': 'port-11-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-12-in]', {'uuid': 'port-12-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-12-out]', {'uuid': 'port-12-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-13-in]', {'uuid': 'port-13-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-13-out]', {'uuid': 'port-13-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-14-in]', {'uuid': 'port-14-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-14-out]', {'uuid': 'port-14-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-15-in]', {'uuid': 'port-15-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-15-out]', {'uuid': 'port-15-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-16-in]', {'uuid': 'port-16-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-16-out]', {'uuid': 'port-16-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-17-in]', {'uuid': 'port-17-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-17-out]', {'uuid': 'port-17-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-18-in]', {'uuid': 'port-18-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-18-out]', {'uuid': 'port-18-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-19-in]', {'uuid': 'port-19-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-19-out]', {'uuid': 'port-19-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-2-in]', {'uuid': 'port-2-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-2-out]', {'uuid': 'port-2-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-20-in]', {'uuid': 'port-20-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-20-out]', {'uuid': 'port-20-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-21-in]', {'uuid': 'port-21-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-21-out]', {'uuid': 'port-21-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-22-in]', {'uuid': 'port-22-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-22-out]', {'uuid': 'port-22-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-23-in]', {'uuid': 'port-23-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-23-out]', {'uuid': 'port-23-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-24-in]', {'uuid': 'port-24-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-24-out]', {'uuid': 'port-24-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-25-in]', {'uuid': 'port-25-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-25-out]', {'uuid': 'port-25-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-26-in]', {'uuid': 'port-26-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-26-out]', {'uuid': 'port-26-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-27-in]', {'uuid': 'port-27-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-27-out]', {'uuid': 'port-27-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-28-in]', {'uuid': 'port-28-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-28-out]', {'uuid': 'port-28-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-29-in]', {'uuid': 'port-29-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-29-out]', {'uuid': 'port-29-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-3-in]', {'uuid': 'port-3-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-3-out]', {'uuid': 'port-3-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-30-in]', {'uuid': 'port-30-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-30-out]', {'uuid': 'port-30-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-31-in]', {'uuid': 'port-31-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-31-out]', {'uuid': 'port-31-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-32-in]', {'uuid': 'port-32-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-32-out]', {'uuid': 'port-32-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-33-in]', {'uuid': 'port-33-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-33-out]', {'uuid': 'port-33-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-34-in]', {'uuid': 'port-34-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-34-out]', {'uuid': 'port-34-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-35-in]', {'uuid': 'port-35-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-35-out]', {'uuid': 'port-35-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-36-in]', {'uuid': 'port-36-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-36-out]', {'uuid': 'port-36-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-37-in]', {'uuid': 'port-37-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-37-out]', {'uuid': 'port-37-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-38-in]', {'uuid': 'port-38-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-38-out]', {'uuid': 'port-38-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-39-in]', {'uuid': 'port-39-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-39-out]', {'uuid': 'port-39-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-4-in]', {'uuid': 'port-4-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-4-out]', {'uuid': 'port-4-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-40-in]', {'uuid': 'port-40-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-40-out]', {'uuid': 'port-40-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-41-in]', {'uuid': 'port-41-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-41-out]', {'uuid': 'port-41-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-42-in]', {'uuid': 'port-42-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-42-out]', {'uuid': 'port-42-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-43-in]', {'uuid': 'port-43-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-43-out]', {'uuid': 'port-43-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-44-in]', {'uuid': 'port-44-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-44-out]', {'uuid': 'port-44-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-45-in]', {'uuid': 'port-45-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-45-out]', {'uuid': 'port-45-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-46-in]', {'uuid': 'port-46-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-46-out]', {'uuid': 'port-46-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-47-in]', {'uuid': 'port-47-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-47-out]', {'uuid': 'port-47-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-48-in]', {'uuid': 'port-48-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-48-out]', {'uuid': 'port-48-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-5-in]', {'uuid': 'port-5-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-5-out]', {'uuid': 'port-5-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-6-in]', {'uuid': 'port-6-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-6-out]', {'uuid': 'port-6-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-7-in]', {'uuid': 'port-7-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-7-out]', {'uuid': 'port-7-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-8-in]', {'uuid': 'port-8-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-8-out]', {'uuid': 'port-8-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-9-in]', {'uuid': 'port-9-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-9-out]', {'uuid': 'port-9-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'})] -[2024-07-23 07:53:47,506] INFO:device.service.DeviceServiceServicerImpl:add_device {'new_optical_config': {'opticalconfig': config: "{\"type\": \"optical-roadm\", \"optical_bands\": [{\"band_name\": \"C-BAND\", \"lower_frequency\": \"193000000\", \"upper_frequency\": \"194000000\", \"status\": \"ENABLED\", \"src_port\": \"ADD\", \"dest_port\": \"port-1-out\", \"channel_index\": \"1\"}], \"media_channels\": [{\"band_name\": \"TEST \", \"lower_frequency\": \"193210000\", \"upper_frequency\": \"193300000\", \"status\": \"ENABLED\", \"src_port\": \"port-36-in\", \"dest_port\": \"None\", \"optical_band_parent\": \"1\", \"channel_index\": \"3\"}]}" -device_id { - device_uuid { - uuid: "68741528-2e94-5274-ab3c-fddcd8dc05ef" - } -} -}} -[2024-07-23 07:53:48,061] INFO:root:type optical-roadm -[2024-07-23 07:53:48,142] INFO:root:optical_bands -[2024-07-23 07:53:48,156] INFO:root:from OCDriver [('/opticalconfigs/opticalconfig/c944aaeb-bbdf-5f2d-b31c-8cc8903045b6', {'opticalconfig': config: "{\"type\": \"optical-roadm\", \"optical_bands\": [{\"band_name\": \"C-BAND\", \"lower_frequency\": \"193000000\", \"upper_frequency\": \"194000000\", \"status\": \"ENABLED\", \"src_port\": \"ADD\", \"dest_port\": \"port-1-out\", \"channel_index\": \"1\"}], \"media_channels\": [{\"band_name\": \"TEST \", \"lower_frequency\": \"193210000\", \"upper_frequency\": \"193300000\", \"status\": \"ENABLED\", \"src_port\": \"port-36-in\", \"dest_port\": \"None\", \"optical_band_parent\": \"1\", \"channel_index\": \"3\"}]}" -device_id { - device_uuid { - uuid: "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6" - } -} -}), ('/endpoints/endpoint[port-1-in]', {'uuid': 'port-1-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-1-out]', {'uuid': 'port-1-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-10-in]', {'uuid': 'port-10-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-10-out]', {'uuid': 'port-10-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-11-in]', {'uuid': 'port-11-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-11-out]', {'uuid': 'port-11-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-12-in]', {'uuid': 'port-12-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-12-out]', {'uuid': 'port-12-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-13-in]', {'uuid': 'port-13-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-13-out]', {'uuid': 'port-13-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-14-in]', {'uuid': 'port-14-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-14-out]', {'uuid': 'port-14-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-15-in]', {'uuid': 'port-15-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-15-out]', {'uuid': 'port-15-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-16-in]', {'uuid': 'port-16-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-16-out]', {'uuid': 'port-16-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-17-in]', {'uuid': 'port-17-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-17-out]', {'uuid': 'port-17-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-18-in]', {'uuid': 'port-18-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-18-out]', {'uuid': 'port-18-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-19-in]', {'uuid': 'port-19-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-19-out]', {'uuid': 'port-19-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-2-in]', {'uuid': 'port-2-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-2-out]', {'uuid': 'port-2-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-20-in]', {'uuid': 'port-20-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-20-out]', {'uuid': 'port-20-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-21-in]', {'uuid': 'port-21-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-21-out]', {'uuid': 'port-21-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-22-in]', {'uuid': 'port-22-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-22-out]', {'uuid': 'port-22-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-23-in]', {'uuid': 'port-23-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-23-out]', {'uuid': 'port-23-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-24-in]', {'uuid': 'port-24-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-24-out]', {'uuid': 'port-24-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-25-in]', {'uuid': 'port-25-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-25-out]', {'uuid': 'port-25-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-26-in]', {'uuid': 'port-26-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-26-out]', {'uuid': 'port-26-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-27-in]', {'uuid': 'port-27-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-27-out]', {'uuid': 'port-27-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-28-in]', {'uuid': 'port-28-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-28-out]', {'uuid': 'port-28-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-29-in]', {'uuid': 'port-29-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-29-out]', {'uuid': 'port-29-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-3-in]', {'uuid': 'port-3-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-3-out]', {'uuid': 'port-3-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-30-in]', {'uuid': 'port-30-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-30-out]', {'uuid': 'port-30-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-31-in]', {'uuid': 'port-31-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-31-out]', {'uuid': 'port-31-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-32-in]', {'uuid': 'port-32-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-32-out]', {'uuid': 'port-32-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-33-in]', {'uuid': 'port-33-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-33-out]', {'uuid': 'port-33-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-34-in]', {'uuid': 'port-34-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-34-out]', {'uuid': 'port-34-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-35-in]', {'uuid': 'port-35-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-35-out]', {'uuid': 'port-35-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-36-in]', {'uuid': 'port-36-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-36-out]', {'uuid': 'port-36-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-37-in]', {'uuid': 'port-37-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-37-out]', {'uuid': 'port-37-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-38-in]', {'uuid': 'port-38-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-38-out]', {'uuid': 'port-38-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-39-in]', {'uuid': 'port-39-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-39-out]', {'uuid': 'port-39-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-4-in]', {'uuid': 'port-4-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-4-out]', {'uuid': 'port-4-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-40-in]', {'uuid': 'port-40-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-40-out]', {'uuid': 'port-40-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-41-in]', {'uuid': 'port-41-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-41-out]', {'uuid': 'port-41-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-42-in]', {'uuid': 'port-42-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-42-out]', {'uuid': 'port-42-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-43-in]', {'uuid': 'port-43-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-43-out]', {'uuid': 'port-43-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-44-in]', {'uuid': 'port-44-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-44-out]', {'uuid': 'port-44-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-45-in]', {'uuid': 'port-45-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-45-out]', {'uuid': 'port-45-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-46-in]', {'uuid': 'port-46-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-46-out]', {'uuid': 'port-46-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-47-in]', {'uuid': 'port-47-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-47-out]', {'uuid': 'port-47-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-48-in]', {'uuid': 'port-48-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-48-out]', {'uuid': 'port-48-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-5-in]', {'uuid': 'port-5-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-5-out]', {'uuid': 'port-5-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-6-in]', {'uuid': 'port-6-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-6-out]', {'uuid': 'port-6-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-7-in]', {'uuid': 'port-7-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-7-out]', {'uuid': 'port-7-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-8-in]', {'uuid': 'port-8-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-8-out]', {'uuid': 'port-8-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-9-in]', {'uuid': 'port-9-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-9-out]', {'uuid': 'port-9-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'})] -[2024-07-23 07:53:48,156] INFO:device.service.Tools:results_getconfig = [('/opticalconfigs/opticalconfig/c944aaeb-bbdf-5f2d-b31c-8cc8903045b6', {'opticalconfig': config: "{\"type\": \"optical-roadm\", \"optical_bands\": [{\"band_name\": \"C-BAND\", \"lower_frequency\": \"193000000\", \"upper_frequency\": \"194000000\", \"status\": \"ENABLED\", \"src_port\": \"ADD\", \"dest_port\": \"port-1-out\", \"channel_index\": \"1\"}], \"media_channels\": [{\"band_name\": \"TEST \", \"lower_frequency\": \"193210000\", \"upper_frequency\": \"193300000\", \"status\": \"ENABLED\", \"src_port\": \"port-36-in\", \"dest_port\": \"None\", \"optical_band_parent\": \"1\", \"channel_index\": \"3\"}]}" -device_id { - device_uuid { - uuid: "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6" - } -} -}), ('/endpoints/endpoint[port-1-in]', {'uuid': 'port-1-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-1-out]', {'uuid': 'port-1-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-10-in]', {'uuid': 'port-10-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-10-out]', {'uuid': 'port-10-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-11-in]', {'uuid': 'port-11-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-11-out]', {'uuid': 'port-11-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-12-in]', {'uuid': 'port-12-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-12-out]', {'uuid': 'port-12-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-13-in]', {'uuid': 'port-13-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-13-out]', {'uuid': 'port-13-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-14-in]', {'uuid': 'port-14-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-14-out]', {'uuid': 'port-14-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-15-in]', {'uuid': 'port-15-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-15-out]', {'uuid': 'port-15-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-16-in]', {'uuid': 'port-16-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-16-out]', {'uuid': 'port-16-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-17-in]', {'uuid': 'port-17-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-17-out]', {'uuid': 'port-17-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-18-in]', {'uuid': 'port-18-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-18-out]', {'uuid': 'port-18-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-19-in]', {'uuid': 'port-19-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-19-out]', {'uuid': 'port-19-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-2-in]', {'uuid': 'port-2-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-2-out]', {'uuid': 'port-2-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-20-in]', {'uuid': 'port-20-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-20-out]', {'uuid': 'port-20-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-21-in]', {'uuid': 'port-21-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-21-out]', {'uuid': 'port-21-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-22-in]', {'uuid': 'port-22-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-22-out]', {'uuid': 'port-22-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-23-in]', {'uuid': 'port-23-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-23-out]', {'uuid': 'port-23-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-24-in]', {'uuid': 'port-24-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-24-out]', {'uuid': 'port-24-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-25-in]', {'uuid': 'port-25-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-25-out]', {'uuid': 'port-25-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-26-in]', {'uuid': 'port-26-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-26-out]', {'uuid': 'port-26-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-27-in]', {'uuid': 'port-27-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-27-out]', {'uuid': 'port-27-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-28-in]', {'uuid': 'port-28-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-28-out]', {'uuid': 'port-28-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-29-in]', {'uuid': 'port-29-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-29-out]', {'uuid': 'port-29-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-3-in]', {'uuid': 'port-3-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-3-out]', {'uuid': 'port-3-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-30-in]', {'uuid': 'port-30-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-30-out]', {'uuid': 'port-30-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-31-in]', {'uuid': 'port-31-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-31-out]', {'uuid': 'port-31-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-32-in]', {'uuid': 'port-32-in', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-32-out]', {'uuid': 'port-32-out', 'type': 'MG_ON_OPTICAL_PORT_FIBER'}), ('/endpoints/endpoint[port-33-in]', {'uuid': 'port-33-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-33-out]', {'uuid': 'port-33-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-34-in]', {'uuid': 'port-34-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-34-out]', {'uuid': 'port-34-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-35-in]', {'uuid': 'port-35-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-35-out]', {'uuid': 'port-35-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-36-in]', {'uuid': 'port-36-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-36-out]', {'uuid': 'port-36-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-37-in]', {'uuid': 'port-37-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-37-out]', {'uuid': 'port-37-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-38-in]', {'uuid': 'port-38-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-38-out]', {'uuid': 'port-38-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-39-in]', {'uuid': 'port-39-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-39-out]', {'uuid': 'port-39-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-4-in]', {'uuid': 'port-4-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-4-out]', {'uuid': 'port-4-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-40-in]', {'uuid': 'port-40-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-40-out]', {'uuid': 'port-40-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-41-in]', {'uuid': 'port-41-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-41-out]', {'uuid': 'port-41-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-42-in]', {'uuid': 'port-42-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-42-out]', {'uuid': 'port-42-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-43-in]', {'uuid': 'port-43-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-43-out]', {'uuid': 'port-43-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-44-in]', {'uuid': 'port-44-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-44-out]', {'uuid': 'port-44-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-45-in]', {'uuid': 'port-45-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-45-out]', {'uuid': 'port-45-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-46-in]', {'uuid': 'port-46-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-46-out]', {'uuid': 'port-46-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-47-in]', {'uuid': 'port-47-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-47-out]', {'uuid': 'port-47-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-48-in]', {'uuid': 'port-48-in', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-48-out]', {'uuid': 'port-48-out', 'type': 'MG_ON_OPTICAL_PORT_MEDIACHANNEL'}), ('/endpoints/endpoint[port-5-in]', {'uuid': 'port-5-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-5-out]', {'uuid': 'port-5-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-6-in]', {'uuid': 'port-6-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-6-out]', {'uuid': 'port-6-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-7-in]', {'uuid': 'port-7-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-7-out]', {'uuid': 'port-7-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-8-in]', {'uuid': 'port-8-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-8-out]', {'uuid': 'port-8-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-9-in]', {'uuid': 'port-9-in', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'}), ('/endpoints/endpoint[port-9-out]', {'uuid': 'port-9-out', 'type': 'MG_ON_OPTICAL_PORT_WAVEBAND'})] -[2024-07-23 07:53:48,157] INFO:device.service.DeviceServiceServicerImpl:add_device {'new_optical_config': {'opticalconfig': config: "{\"type\": \"optical-roadm\", \"optical_bands\": [{\"band_name\": \"C-BAND\", \"lower_frequency\": \"193000000\", \"upper_frequency\": \"194000000\", \"status\": \"ENABLED\", \"src_port\": \"ADD\", \"dest_port\": \"port-1-out\", \"channel_index\": \"1\"}], \"media_channels\": [{\"band_name\": \"TEST \", \"lower_frequency\": \"193210000\", \"upper_frequency\": \"193300000\", \"status\": \"ENABLED\", \"src_port\": \"port-36-in\", \"dest_port\": \"None\", \"optical_band_parent\": \"1\", \"channel_index\": \"3\"}]}" -device_id { - device_uuid { - uuid: "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6" - } -} -}} -[2024-07-23 08:12:48,572] INFO:device.service.OpenConfigServicer: config from openconfigservicer {'channel_namespace': None, 'endpoints': [], 'device_name': 'R1', 'type': 'optical-roadm', 'channels': [{'band_name': 'TEST ', 'lower_frequency': 193210000, 'upper_frequency': 193300000, 'type': 'media_channel', 'src_port': 'port-36-in', 'dest_port': 'None', 'status': 'ENABLED', 'optical_band_parent': '1', 'channel_index': '3'}, {'band_name': 'C-BAND', 'lower_frequency': 193000000, 'upper_frequency': 194000000, 'type': 'optical_band', 'src_port': 'ADD', 'dest_port': 'port-1-out', 'status': 'ENABLED', 'optical_band_parent': None, 'channel_index': '1'}], 'roadm_uuid': {'roadm_uuid': '3d63c018-2661-5872-8bdd-f1e6a6e3313b'}, 'new_config': {'band_type': 'C_BAND', 'low-freq': 192006250, 'up-freq': 192381250, 'frequency': 192193750, 'band': 375000, 'ob_id': 1}, 'is_opticalband': True, 'flow': [['0', '77df46fd-6d6e-5726-9960-ca439c925dea']]} -[2024-07-23 08:12:48,626] INFO:device.service.OpenConfigServicer:device is device_id { - device_uuid { - uuid: "68741528-2e94-5274-ab3c-fddcd8dc05ef" - } -} -name: "R1" -device_type: "optical-roadm" -device_operational_status: DEVICEOPERATIONALSTATUS_ENABLED -device_drivers: DEVICEDRIVER_OC -device_endpoints { - endpoint_id { - 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: "02c19f3c-73ac-55b9-b4c2-7def7e7df9fe" - } - } - name: "port-48-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0332be2a-9b4e-52d7-ac7b-3ea58bf00375" - } - } - name: "port-12-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "08da1aa7-9253-5e92-bf2c-6e66ffe7a4ff" - } - } - name: "port-38-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0b1c4d0e-5140-5085-ab66-2def390b650f" - } - } - name: "port-33-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "12b4419f-9ae9-5839-ad52-9684b1f30878" - } - } - name: "port-34-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "1485c127-2228-52b1-87e6-48c6b1366c46" - } - } - name: "port-20-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "15c058d8-c5ed-5878-81cb-f76630ea6bfb" - } - } - name: "port-18-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "188af412-9ac2-588f-8f00-a956aa6b2ae5" - } - } - name: "port-43-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "18a51dcf-905d-5104-9ef1-f24740fd6d78" - } - } - name: "port-12-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "1e02e33d-4b14-502d-9806-988f64cccb5d" - } - } - name: "port-43-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "21b8ccaa-9f7b-5bc5-9fc0-6f32025eb8a6" - } - } - name: "port-41-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "22d287ab-7935-55cb-b681-944a064726a9" - } - } - name: "port-11-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "266777cb-fa7b-50d7-aed7-333854581a55" - } - } - name: "port-31-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "28666b3c-4b96-5cb6-8006-eba13ca8ab6e" - } - } - name: "port-9-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "29e8b36f-6989-5651-99fe-b3cb2ee5b4b8" - } - } - name: "port-40-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "2b646bf7-3120-5254-a4fb-748294c61a71" - } - } - name: "port-2-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "35aaee89-81a3-56b1-b1ba-33f972d0af49" - } - } - name: "port-36-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "385bc8da-171b-574c-9d4f-d9b08f29c469" - } - } - name: "port-40-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "38f57fc2-4b25-5b8e-8ab0-e2676594b652" - } - } - name: "port-39-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3972ab17-4386-5a0c-92db-fc8096433068" - } - } - name: "port-38-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3a49ceb2-fd5b-59e2-975a-b065c4e127a4" - } - } - name: "port-7-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3b1551b2-3c17-54f6-8990-308ee42b421d" - } - } - name: "port-15-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3f8b1948-619c-5130-a158-b7beb838434c" - } - } - name: "port-14-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "40b898c7-94f2-5c5d-b94a-e712c1a49fcb" - } - } - name: "port-24-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "42040a55-feb4-53ee-941d-9a7ebd5da9db" - } - } - name: "port-27-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "435a198b-cd6f-5d29-a72d-ea4f04cb658a" - } - } - name: "port-35-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "436bb32a-c8a0-5718-bbdb-382c79d96587" - } - } - name: "port-1-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "4b197fb8-d26e-59fb-a96c-d347ba017b28" - } - } - name: "port-46-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "4f2223e0-64c3-55d3-a870-f3a48c91b929" - } - } - name: "port-23-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "509ffffc-2d4a-50b4-9da0-2b84b697c8a3" - } - } - name: "port-30-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "53e3c997-d487-5d96-a6c4-998a562dcb96" - } - } - name: "port-5-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "55684f06-7aab-5061-aa0d-2e37b45e5ec7" - } - } - name: "port-2-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "56c81904-047c-5d7c-a765-79b9e4b7abf2" - } - } - name: "port-3-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "570aec35-99c9-53e2-a266-a38ef45499ed" - } - } - name: "port-30-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "59871dc1-872d-5df1-9392-2537a591c86c" - } - } - name: "port-45-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "59fcacb0-1840-5dd3-9dfa-a07cf4f91bd2" - } - } - name: "port-3-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5ac999c3-3df8-53c4-8f4a-52e5943f5c4c" - } - } - name: "port-14-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5d38aff6-fc93-5ebe-9083-fae282f414d1" - } - } - name: "port-31-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5eb515c2-03ef-5aa2-9e39-f4b22a2f39c5" - } - } - name: "port-29-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "6079c57b-70de-533a-9b81-bf3817906b62" - } - } - name: "port-32-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "60d6af55-2f67-53a8-adb7-bceb6e7874eb" - } - } - name: "port-20-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "62099377-4f4f-5ffb-aa37-6dec3319a21e" - } - } - name: "port-13-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "6a6dc5d4-567c-5104-b50d-6820768d2699" - } - } - name: "port-46-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "758d5906-6065-57dc-b424-d8366cedb18d" - } - } - name: "port-29-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "763eff4b-7483-5e3a-9194-a160c72d42d1" - } - } - name: "port-17-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "77df46fd-6d6e-5726-9960-ca439c925dea" - } - } - name: "port-1-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "7a5876a9-17bb-5b17-a5a5-67978191ca5f" - } - } - name: "port-24-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "7be48ef0-2357-55fa-aca6-a1aeeeb3267a" - } - } - name: "port-42-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "7ce13dc8-d5f1-5233-beec-1d99416c9164" - } - } - name: "port-44-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "83916805-1162-57cc-955c-5ee28c2b85b7" - } - } - name: "port-28-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "883609be-6125-5bbf-91ac-2a30e75a7d1e" - } - } - name: "port-16-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "8d0c4ac4-c522-5992-a206-45e8bf8389c6" - } - } - name: "port-7-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "904c4b18-10a6-512b-9bb2-8ec81e74fda4" - } - } - name: "port-34-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "91492a21-2f88-5acc-a427-2a57230eb2ea" - } - } - name: "port-15-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "927b0db8-602b-54d5-acd9-c1cd6395425f" - } - } - name: "port-39-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "94718a3d-1217-5fcc-900d-d4c2f7c1f811" - } - } - name: "port-28-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a18a7eb1-811d-5d27-be08-db212d83f25e" - } - } - name: "port-45-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a299822d-4960-503f-9796-6f19cfbfd95c" - } - } - name: "port-25-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a7058178-97da-5b95-b969-abe5ab7a8e6f" - } - } - name: "port-42-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a7d33ece-9565-59ec-999f-4c995d142f83" - } - } - name: "port-4-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a9061634-e9a7-5d13-bc96-09fbf31cd610" - } - } - name: "port-41-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b5354091-162e-5073-aeb2-ec5debcfcf9f" - } - } - name: "port-16-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b9fbeed8-e304-5bd5-90e1-3e43c6af5a16" - } - } - name: "port-35-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "bff92ac5-9ccb-522c-8cd1-bb22aa005f10" - } - } - name: "port-21-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c31537c8-13df-503d-bf91-64e860e6b573" - } - } - name: "port-48-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ca4f5f60-37ba-567b-a474-ff8951033342" - } - } - name: "port-47-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cc197d41-625f-50d1-94d8-c6c63a31ccfb" - } - } - name: "port-8-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ccb07637-f7d6-5b4a-9fc6-8510ef694cd9" - } - } - name: "port-4-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cd539095-12a6-5460-8b07-481ec1901c9a" - } - } - name: "port-33-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cfe60fca-3fe5-5747-ace8-ca7913e26d81" - } - } - name: "port-13-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "d1949523-6b88-5845-b031-5789801b4938" - } - } - name: "port-32-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "d1de8f6d-68ef-5217-a5cd-2c059d4ac358" - } - } - name: "port-21-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "d71c4276-624a-584f-aca3-1aa3c1243da0" - } - } - name: "port-19-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "d9d6ffdf-2cb3-558d-8fe7-a7c08525727c" - } - } - name: "port-25-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "dc3777d3-50b0-518c-8abb-044debaad10b" - } - } - name: "port-18-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "dda83a5d-29b7-5f96-9b0a-bd1f39e1db2f" - } - } - name: "port-37-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e2500678-0f36-555a-9133-7cd04d3ad63a" - } - } - name: "port-6-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e49a30ee-8421-5b02-b925-55470fc65226" - } - } - name: "port-26-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e5265cb0-2e80-5ea1-80d8-333749bb7f14" - } - } - name: "port-5-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e5681c7e-92d1-516d-b7fb-fcc74cde7090" - } - } - name: "port-27-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e9d0dac3-11f2-5b84-9125-d0300ccd8eeb" - } - } - name: "port-37-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e9d4bff3-76ac-5490-b897-a30b9a42a8b1" - } - } - name: "port-44-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ea73d8c4-1077-55c9-87f1-9c377cee196f" - } - } - name: "port-9-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "eb38e3cd-e42a-54b2-846c-82207a95e8e3" - } - } - name: "port-10-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ebb8394d-98c3-5f28-8c43-a28c62dac297" - } - } - name: "port-22-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ebfe571c-77b2-5f66-9efe-25583cc1f587" - } - } - name: "port-36-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ed7f9c49-538f-5763-a20a-b3241e3fd385" - } - } - name: "port-26-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ee4df110-8657-571c-aa20-a70ec79db01f" - } - } - name: "port-47-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "f0350e3c-7fcc-54e3-b9f4-ac457631920e" - } - } - name: "port-23-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "f1522932-650f-5ac3-a1d3-081d4a7e79a9" - } - } - name: "port-17-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "f206246e-cb90-56b4-b908-1dc3daa7ac3f" - } - } - name: "port-11-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "f333e69e-6c91-5b65-8fea-a9bd49f8c657" - } - } - name: "port-22-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "f7052fb4-fab8-5821-95e0-d407043742d8" - } - } - name: "port-8-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "f894fb5e-fd1e-5424-904e-c879dedd9f8a" - } - } - name: "port-19-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "f8bd2b7e-6d37-5bbc-92f4-9b9b2e0ce22c" - } - } - name: "port-10-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ff51524f-7b51-5efd-af6b-6bc8541d3716" - } - } - name: "port-6-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -controller_id { -} - -[2024-07-23 08:12:48,630] INFO:device.service.OpenConfigServicer:from openconfigservicer [{'resource_key': 'channel_namespace', 'value': None}, {'resource_key': 'add_transceiver', 'value': None}, {'resource_key': 'source_port', 'value': [None]}, {'resource_key': 'destination_port', 'value': ['port-1-out']}, {'resource_key': 'handled_flow', 'value': [(None, 'port-1-out')]}, {'resource_key': 'target-output-power', 'value': None}, {'resource_key': 'frequency', 'value': 192193750}, {'resource_key': 'operational-mode', 'value': None}, {'resource_key': 'line-port', 'value': None}, {'resource_key': 'admin-state', 'value': None}, {'resource_key': 'name', 'value': 'C_BAND'}, {'resource_key': 'optical-band-parent', 'value': 1}, {'resource_key': 'index', 'value': 1}, {'resource_key': 'lower-frequency', 'value': 192006250}, {'resource_key': 'upper-frequency', 'value': 192381250}] and conditions {'is_opticalband': True, 'edit_type': 'optical-band'} -[2024-07-23 08:12:48,630] INFO:root:from setConfig [{'resource_key': 'channel_namespace', 'value': None}, {'resource_key': 'add_transceiver', 'value': None}, {'resource_key': 'source_port', 'value': [None]}, {'resource_key': 'destination_port', 'value': ['port-1-out']}, {'resource_key': 'handled_flow', 'value': [(None, 'port-1-out')]}, {'resource_key': 'target-output-power', 'value': None}, {'resource_key': 'frequency', 'value': 192193750}, {'resource_key': 'operational-mode', 'value': None}, {'resource_key': 'line-port', 'value': None}, {'resource_key': 'admin-state', 'value': None}, {'resource_key': 'name', 'value': 'C_BAND'}, {'resource_key': 'optical-band-parent', 'value': 1}, {'resource_key': 'index', 'value': 1}, {'resource_key': 'lower-frequency', 'value': 192006250}, {'resource_key': 'upper-frequency', 'value': 192381250}] -[2024-07-23 08:12:48,630] INFO:root:from setConfig condititons {'is_opticalband': True, 'edit_type': 'optical-band'} -[2024-07-23 08:12:48,637] INFO:root: edit messages [' 1 C_BAND 1 192006250 192381250 ENABLED port-1-out '] -[2024-07-23 08:12:48,644] INFO:ncclient.operations.rpc:[host 172.17.254.22 session-id 85] Requesting 'EditConfig' -[2024-07-23 08:12:48,995] INFO:device.service.OpenConfigServicer:error in configuring /oc-wave-router:wavelength-router/fsmgon:optical-bands/optical-band[index='1']/config/upper-frequency: Illegal value of upper freq -[2024-07-23 08:12:49,027] INFO:device.service.OpenConfigServicer: config from openconfigservicer {'channel_namespace': None, 'endpoints': [], 'device_name': 'R2', 'type': 'optical-roadm', 'channels': [{'band_name': 'TEST ', 'lower_frequency': 193210000, 'upper_frequency': 193300000, 'type': 'media_channel', 'src_port': 'port-36-in', 'dest_port': 'None', 'status': 'ENABLED', 'optical_band_parent': '1', 'channel_index': '3'}, {'band_name': 'C-BAND', 'lower_frequency': 193000000, 'upper_frequency': 194000000, 'type': 'optical_band', 'src_port': 'ADD', 'dest_port': 'port-1-out', 'status': 'ENABLED', 'optical_band_parent': None, 'channel_index': '1'}], 'roadm_uuid': {'roadm_uuid': 'c5b3429f-4331-5182-9745-cfdc0a5aaf29'}, 'new_config': {'band_type': 'C_BAND', 'low-freq': 192006250, 'up-freq': 192381250, 'frequency': 192193750, 'band': 375000, 'ob_id': 1}, 'is_opticalband': True, 'flow': [['bcfb768c-e8fb-5e0b-9559-821d120b5410', '0']]} -[2024-07-23 08:12:49,090] INFO:device.service.OpenConfigServicer:device is device_id { - device_uuid { - uuid: "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6" - } -} -name: "R2" -device_type: "optical-roadm" -device_operational_status: DEVICEOPERATIONALSTATUS_ENABLED -device_drivers: DEVICEDRIVER_OC -device_endpoints { - endpoint_id { - 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: "004742bc-6ade-5c22-b02a-a154632d126e" - } - } - name: "port-20-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "039ec3bc-372e-5683-a58d-4815f9e21a2c" - } - } - name: "port-30-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "053a62f6-2760-562a-b285-15a9b159c2c5" - } - } - name: "port-46-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "05a86087-1205-51ff-a6a0-c66f07805fec" - } - } - name: "port-23-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "06bb01cb-0d99-5223-8215-cfa120b6afcb" - } - } - name: "port-17-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "073f30f3-bf6a-532b-bcb6-5bd23e6923a1" - } - } - name: "port-19-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0a9b56db-32f8-5c60-83af-7ceaa39c618e" - } - } - name: "port-2-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0be94d49-51fd-556c-869f-7d49a7c9cce8" - } - } - name: "port-17-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0d103312-7c8c-5e8a-980f-f6863b42d0d3" - } - } - name: "port-10-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0ee5d330-9700-5684-92c1-bcb6c4c8a3bc" - } - } - name: "port-8-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "115ed444-0128-53f1-aa1a-ce8129a55f67" - } - } - name: "port-9-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "12ea85fc-4388-59c1-9cb9-b480ee06e01a" - } - } - name: "port-45-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "134dc1db-a258-5452-8e02-5d56af61a138" - } - } - name: "port-29-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "14bb0e42-db22-5dfb-b618-4caa72a8e8cc" - } - } - name: "port-42-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "18a7b3b1-d4a3-590a-a5a9-b7db5293ac61" - } - } - name: "port-48-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "19041fc0-6807-5b8f-9b26-7e7eed556980" - } - } - name: "port-6-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "1950275c-e218-5190-8ca5-6a2228c4a87b" - } - } - name: "port-10-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "20c3e2c5-d7b9-5761-9c9f-443b8c406d91" - } - } - name: "port-18-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "21db5850-b53e-57de-ba2a-bf578bffb1ea" - } - } - name: "port-46-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "261a53b4-d257-5f35-bf5b-b2f975d7d2ed" - } - } - name: "port-35-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "266dc3a1-0892-5454-a917-3fa62190c6c2" - } - } - name: "port-8-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "2c6d6f19-df32-59bd-a481-9bdf46fd6f5e" - } - } - name: "port-31-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "2e4f4523-3fb0-5704-9a47-1cf467d70bc8" - } - } - name: "port-13-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "2f6d500b-2407-516f-9468-4f059b218f4b" - } - } - name: "port-43-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3062d499-cf08-5f02-94c6-8906ebdf756b" - } - } - name: "port-41-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "31060d00-8617-55c3-92f2-f42b876478c1" - } - } - name: "port-4-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "324051b0-762b-5847-aba4-42ce1d8baa3b" - } - } - name: "port-27-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "399d3645-5565-502b-bfc8-3ea9cf68a83b" - } - } - name: "port-36-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3ba5f6db-ffde-59d9-a7ae-af06e96a9674" - } - } - name: "port-40-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3e17084e-d2b4-5cb2-b31a-7f6d80feb60e" - } - } - name: "port-5-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3e74aa2a-cf0d-51ce-b406-dcf1b96ae5d5" - } - } - name: "port-11-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3efedbc2-7363-53cf-a0b9-fc4a2bcbd245" - } - } - name: "port-1-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "48a917ad-12d8-5ec4-aaab-84b35337abfe" - } - } - name: "port-14-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5047aede-f784-58ab-b80a-454386a43c64" - } - } - name: "port-12-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "50b41e11-e2f7-5720-b2b0-bc2a43eb7b95" - } - } - name: "port-38-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "51756532-a2d3-5731-898c-9d7333573a39" - } - } - name: "port-31-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5a91d3d9-58f9-53be-9bda-44a56e1e6dfd" - } - } - name: "port-21-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5aeb719f-e322-5185-be08-a2f837992a4f" - } - } - name: "port-44-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5cfa4f91-cbce-5721-b612-e6b5eaa76721" - } - } - name: "port-35-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5d5cb9d0-e675-55b7-8a76-5649f4c95c81" - } - } - name: "port-39-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5dd55ad7-b980-562e-b579-d724a3655d31" - } - } - name: "port-34-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5eba7909-6f11-5154-b6e9-e2a2bbc75bb0" - } - } - name: "port-48-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "625560d9-4809-5f40-b3cf-23ec59efe71a" - } - } - name: "port-38-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "630a400f-dd0c-51d0-8049-c281881190b0" - } - } - name: "port-3-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "6a2d629b-9dfe-58af-bc5b-96277a127512" - } - } - name: "port-41-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "6e621543-9616-57bf-806c-2564047f234b" - } - } - name: "port-15-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "6e9b83ef-b9a4-5898-9495-38c45635aac7" - } - } - name: "port-34-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "72fabf2f-0121-5198-a4bf-ab82034d7da9" - } - } - name: "port-16-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "743daf39-41eb-500c-b61b-d7b473249022" - } - } - name: "port-47-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "76d3c064-04eb-5edf-95ac-645cb6348b61" - } - } - name: "port-33-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "77d8c722-2ad2-5a7c-8669-fb900f1166e1" - } - } - name: "port-45-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "7ec03972-acf4-5299-a5ec-e3e1a686a8bb" - } - } - name: "port-32-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "8657516b-33f4-5d1c-839d-51acbc6fb93d" - } - } - name: "port-36-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "86f6b3e0-3e7e-5db2-bb71-6e05229c97eb" - } - } - name: "port-3-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "922a952b-50b6-5985-bf44-3afeb53f396e" - } - } - name: "port-44-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "928a811e-4f2d-57cd-a0ec-f0c66fb348ee" - } - } - name: "port-28-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "94ae7ec2-0cba-55ea-a36f-2143b205ed64" - } - } - name: "port-43-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "994c45dd-b2b8-53c4-957d-4834f45e0e1f" - } - } - name: "port-13-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "9f6698ad-957c-561b-a8ec-9cb70fa53612" - } - } - name: "port-28-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "9faee558-3880-5e8a-b94c-6893b041c7dd" - } - } - name: "port-20-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a08ab669-238c-5e9e-9e86-780d39111595" - } - } - name: "port-40-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a263560e-0ea2-54f4-8765-7f9ac33f4c16" - } - } - name: "port-32-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a751a510-e108-5819-bafb-3d3e6881b4eb" - } - } - name: "port-12-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a7c97f50-0539-57cc-aa9b-491aac1e8698" - } - } - name: "port-25-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ac0a40d5-6eb5-5831-bfbd-109511e00e0d" - } - } - name: "port-30-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "acf1d5af-164f-50af-983f-80e0f99c1de0" - } - } - name: "port-24-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b22d517e-2d36-518b-9e3e-c75c625f06ef" - } - } - name: "port-7-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b3ab2b45-ed47-5c14-801d-b1104dd9d619" - } - } - name: "port-6-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b6788cd9-089a-56e3-b388-4b53f0d994a9" - } - } - name: "port-24-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b7198f68-38c3-5c7f-b865-2fc809abf094" - } - } - name: "port-21-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b71a78da-69db-5260-8a15-8de81d02a20d" - } - } - name: "port-9-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "bb1b9200-d62e-5f21-8436-595e37eee2ac" - } - } - name: "port-19-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "bc82f789-cbb1-5f3e-b989-88dab185ea0d" - } - } - name: "port-37-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "bcfb768c-e8fb-5e0b-9559-821d120b5410" - } - } - name: "port-1-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "bd08db44-134e-5902-bb24-b2453bf21db4" - } - } - name: "port-5-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "be1b3bb0-8aed-569a-be91-e888b0c0985d" - } - } - name: "port-33-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c027a391-2cf6-5b96-bba3-051e01c63f43" - } - } - name: "port-7-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c2d5ac50-2faf-5608-a6ae-7c023bceb289" - } - } - name: "port-39-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c4568f02-d291-5c95-b9bc-846278862db9" - } - } - name: "port-4-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c506f9c2-4f46-5b1c-8218-3a2d9825cdf7" - } - } - name: "port-27-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c559fb60-6495-5992-b339-ac7a590e337c" - } - } - name: "port-16-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c8399dca-5e70-58f5-8048-737eaa5732a2" - } - } - name: "port-18-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cace07d7-0ca3-51be-bef1-b58db0ccba6f" - } - } - name: "port-2-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "caf865b8-df54-5601-9163-1cdbe8f7a599" - } - } - name: "port-47-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cb54a3bd-13f9-505f-9f3c-8c55a2738a35" - } - } - name: "port-26-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cbb42426-c8e3-5f61-b50d-bcd1147a7861" - } - } - name: "port-22-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cc5064c4-bc42-5c50-b5b0-9b2ad1405bd8" - } - } - name: "port-42-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "d5a10fec-ce9a-575b-a526-53b52ddd33a5" - } - } - name: "port-22-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "d91ef51b-7b99-5486-9b2e-3830ebb96e2b" - } - } - name: "port-25-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e391da48-9b66-5924-b571-d27e85663462" - } - } - name: "port-23-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e5a04509-2cf6-5d51-8004-0a07e2b6a260" - } - } - name: "port-29-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e650eba7-019d-5c4f-9d75-14d47a711f2f" - } - } - name: "port-14-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e7566eac-9fa0-5137-929a-7cf2485babea" - } - } - name: "port-37-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ea7812b2-db7c-5504-a415-6b4299ae090f" - } - } - name: "port-11-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "eb2a89f8-04c5-598d-b10e-c4509317a07f" - } - } - name: "port-26-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "fd4d5404-baf3-5f5f-b7b7-a825c90e5f2a" - } - } - name: "port-15-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -controller_id { -} - -[2024-07-23 08:12:49,092] INFO:device.service.OpenConfigServicer:from openconfigservicer [{'resource_key': 'channel_namespace', 'value': None}, {'resource_key': 'add_transceiver', 'value': None}, {'resource_key': 'source_port', 'value': ['port-1-in']}, {'resource_key': 'destination_port', 'value': [None]}, {'resource_key': 'handled_flow', 'value': [('port-1-in', None)]}, {'resource_key': 'target-output-power', 'value': None}, {'resource_key': 'frequency', 'value': 192193750}, {'resource_key': 'operational-mode', 'value': None}, {'resource_key': 'line-port', 'value': None}, {'resource_key': 'admin-state', 'value': None}, {'resource_key': 'name', 'value': 'C_BAND'}, {'resource_key': 'optical-band-parent', 'value': 1}, {'resource_key': 'index', 'value': 1}, {'resource_key': 'lower-frequency', 'value': 192006250}, {'resource_key': 'upper-frequency', 'value': 192381250}] and conditions {'is_opticalband': True, 'edit_type': 'optical-band'} -[2024-07-23 08:12:49,092] INFO:root:from setConfig [{'resource_key': 'channel_namespace', 'value': None}, {'resource_key': 'add_transceiver', 'value': None}, {'resource_key': 'source_port', 'value': ['port-1-in']}, {'resource_key': 'destination_port', 'value': [None]}, {'resource_key': 'handled_flow', 'value': [('port-1-in', None)]}, {'resource_key': 'target-output-power', 'value': None}, {'resource_key': 'frequency', 'value': 192193750}, {'resource_key': 'operational-mode', 'value': None}, {'resource_key': 'line-port', 'value': None}, {'resource_key': 'admin-state', 'value': None}, {'resource_key': 'name', 'value': 'C_BAND'}, {'resource_key': 'optical-band-parent', 'value': 1}, {'resource_key': 'index', 'value': 1}, {'resource_key': 'lower-frequency', 'value': 192006250}, {'resource_key': 'upper-frequency', 'value': 192381250}] -[2024-07-23 08:12:49,092] INFO:root:from setConfig condititons {'is_opticalband': True, 'edit_type': 'optical-band'} -[2024-07-23 08:12:49,093] INFO:root: edit messages [' 1 C_BAND 1 192006250 192381250 ENABLED port-1-in '] -[2024-07-23 08:12:49,094] INFO:ncclient.operations.rpc:[host 172.17.254.22 session-id 87] Requesting 'EditConfig' -[2024-07-23 08:12:49,216] INFO:device.service.OpenConfigServicer:error in configuring /oc-wave-router:wavelength-router/fsmgon:optical-bands/optical-band[index='1']/config/upper-frequency: Illegal value of upper freq -[2024-07-23 08:12:49,340] INFO:device.service.OpenConfigServicer: config from openconfigservicer {'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'device_name': 'T1.3', 'type': 'optical-transponder', 'channels': [{'name': {'index': 'channel-3'}, 'frequency': 191600000, 'target-output-power': '100.0', 'operational-mode': 0, 'status': 'DISABLED'}, {'name': {'index': 'channel-1'}, 'frequency': 191600000, 'target-output-power': '100.0', 'operational-mode': 0, 'status': 'DISABLED'}, {'name': {'index': 'channel-4'}, 'frequency': 191600000, 'target-output-power': '100.0', 'operational-mode': 0, 'status': 'DISABLED'}, {'name': {'index': 'channel-2'}, 'frequency': 191600000, 'target-output-power': '100.0', 'operational-mode': 0, 'status': 'DISABLED'}], 'transceivers': {'transceiver': []}, 'interfaces': {'interface': ''}, 'trasponder_uuid': {'transponder_uuid': '02b07a17-68ee-5341-ad5b-3b613bce9883'}, 'new_config': {'target-output-power': '1.0', 'frequency': 192056250, 'operational-mode': 8, 'band': 100000, 'flow_id': 1, 'ob_id': 1, 'band_type': 'C_BAND', 'status': 'ENABLED'}, 'is_opticalband': False, 'flow': [['0', 'bbdfc5ef-4f8b-5921-9d1f-33dd9a5f18c8']]} -[2024-07-23 08:12:49,360] INFO:device.service.OpenConfigServicer:device is device_id { - device_uuid { - uuid: "cf618e18-c0a1-58c4-9827-943a2c0523d6" - } -} -name: "T1.3" -device_type: "optical-transponder" -device_operational_status: DEVICEOPERATIONALSTATUS_ENABLED -device_drivers: DEVICEDRIVER_OC -device_endpoints { - endpoint_id { - 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: "15a02a82-64d0-5929-ac72-14585a8f01c6" - } - } - name: "4" - endpoint_type: "port-4" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b727350a-c291-56e8-b1c6-b46ec8d994f4" - } - } - name: "2" - endpoint_type: "port-2" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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" - } - } - name: "3" - endpoint_type: "port-3" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "dcaae3e3-42c5-50b5-bafb-d3097d567d09" - } - } - name: "1" - endpoint_type: "port-1" - endpoint_location { - } -} -controller_id { -} - -[2024-07-23 08:12:49,360] INFO:device.service.OpenConfigServicer:from openconfigservicer [{'resource_key': 'channel_namespace', 'value': 'http://openconfig.net/yang/terminal-device'}, {'resource_key': 'add_transceiver', 'value': None}, {'resource_key': 'source_port', 'value': [None]}, {'resource_key': 'destination_port', 'value': ['3']}, {'resource_key': 'handled_flow', 'value': [(None, '3')]}, {'resource_key': 'target-output-power', 'value': '1.0'}, {'resource_key': 'frequency', 'value': 192056250}, {'resource_key': 'operational-mode', 'value': 8}, {'resource_key': 'line-port', 'value': None}, {'resource_key': 'admin-state', 'value': 'ENABLED'}, {'resource_key': 'name', 'value': 'C_BAND'}, {'resource_key': 'optical-band-parent', 'value': 1}, {'resource_key': 'lower-frequency', 'value': None}, {'resource_key': 'upper-frequency', 'value': None}] and conditions {'is_opticalband': False, 'edit_type': 'optical-channel'} -[2024-07-23 08:12:49,360] INFO:root:from setConfig [{'resource_key': 'channel_namespace', 'value': 'http://openconfig.net/yang/terminal-device'}, {'resource_key': 'add_transceiver', 'value': None}, {'resource_key': 'source_port', 'value': [None]}, {'resource_key': 'destination_port', 'value': ['3']}, {'resource_key': 'handled_flow', 'value': [(None, '3')]}, {'resource_key': 'target-output-power', 'value': '1.0'}, {'resource_key': 'frequency', 'value': 192056250}, {'resource_key': 'operational-mode', 'value': 8}, {'resource_key': 'line-port', 'value': None}, {'resource_key': 'admin-state', 'value': 'ENABLED'}, {'resource_key': 'name', 'value': 'C_BAND'}, {'resource_key': 'optical-band-parent', 'value': 1}, {'resource_key': 'lower-frequency', 'value': None}, {'resource_key': 'upper-frequency', 'value': None}] -[2024-07-23 08:12:49,360] INFO:root:from setConfig condititons {'is_opticalband': False, 'edit_type': 'optical-channel'} -[2024-07-23 08:12:49,361] INFO:root:building xml [{'resource_key': 'channel_namespace', 'value': 'http://openconfig.net/yang/terminal-device'}, {'resource_key': 'add_transceiver', 'value': None}, {'resource_key': 'source_port', 'value': [None]}, {'resource_key': 'destination_port', 'value': ['3']}, {'resource_key': 'handled_flow', 'value': [(None, '3')]}, {'resource_key': 'target-output-power', 'value': '1.0'}, {'resource_key': 'frequency', 'value': 192056250}, {'resource_key': 'operational-mode', 'value': 8}, {'resource_key': 'line-port', 'value': None}, {'resource_key': 'admin-state', 'value': 'ENABLED'}, {'resource_key': 'name', 'value': 'C_BAND'}, {'resource_key': 'optical-band-parent', 'value': 1}, {'resource_key': 'lower-frequency', 'value': None}, {'resource_key': 'upper-frequency', 'value': None}] -[2024-07-23 08:12:49,361] INFO:root:config_xml [{'resource_key': 'target-output-power', 'value': '1.0'}, {'resource_key': 'frequency', 'value': 192056250}, {'resource_key': 'operational-mode', 'value': 8}] -[2024-07-23 08:12:49,361] INFO:root:ports_xml {'source_port': [None], 'destination_port': ['3']} -[2024-07-23 08:12:49,361] INFO:root:ports are {'source_port': [None], 'destination_port': ['3']} -[2024-07-23 08:12:49,362] INFO:root: edit messages [' channel-3 channel-3 1.0 192056250 8 3 3 ENABLED '] -[2024-07-23 08:12:49,363] INFO:ncclient.operations.rpc:[host 172.17.254.41 session-id 29] Requesting 'EditConfig' -[2024-07-23 08:12:49,866] INFO:root:resonse from edit - -[2024-07-23 08:12:49,866] INFO:device.service.OpenConfigServicer:resluts [True] and is_all_good True -[2024-07-23 08:12:49,866] INFO:device.service.OpenConfigServicer:flow_handled {'resource_key': 'handled_flow', 'value': [(None, '3')]} -[2024-07-23 08:12:49,983] INFO:device.service.OpenConfigServicer: config from openconfigservicer {'channel_namespace': None, 'endpoints': [], 'device_name': 'R1', 'type': 'optical-roadm', 'channels': [{'band_name': 'TEST ', 'lower_frequency': 193210000, 'upper_frequency': 193300000, 'type': 'media_channel', 'src_port': 'port-36-in', 'dest_port': 'None', 'status': 'ENABLED', 'optical_band_parent': '1', 'channel_index': '3'}, {'band_name': 'C-BAND', 'lower_frequency': 193000000, 'upper_frequency': 194000000, 'type': 'optical_band', 'src_port': 'ADD', 'dest_port': 'port-1-out', 'status': 'ENABLED', 'optical_band_parent': None, 'channel_index': '1'}], 'roadm_uuid': {'roadm_uuid': '3d63c018-2661-5872-8bdd-f1e6a6e3313b'}, 'new_config': {'target-output-power': '1.0', 'frequency': 192056250, 'operational-mode': 8, 'band': 100000, 'flow_id': 1, 'ob_id': 1, 'band_type': 'C_BAND', 'status': 'ENABLED'}, 'is_opticalband': False, 'flow': [['435a198b-cd6f-5d29-a72d-ea4f04cb658a', '77df46fd-6d6e-5726-9960-ca439c925dea']]} -[2024-07-23 08:12:50,035] INFO:device.service.OpenConfigServicer:device is device_id { - device_uuid { - uuid: "68741528-2e94-5274-ab3c-fddcd8dc05ef" - } -} -name: "R1" -device_type: "optical-roadm" -device_operational_status: DEVICEOPERATIONALSTATUS_ENABLED -device_drivers: DEVICEDRIVER_OC -device_endpoints { - endpoint_id { - 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: "02c19f3c-73ac-55b9-b4c2-7def7e7df9fe" - } - } - name: "port-48-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0332be2a-9b4e-52d7-ac7b-3ea58bf00375" - } - } - name: "port-12-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "08da1aa7-9253-5e92-bf2c-6e66ffe7a4ff" - } - } - name: "port-38-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0b1c4d0e-5140-5085-ab66-2def390b650f" - } - } - name: "port-33-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "12b4419f-9ae9-5839-ad52-9684b1f30878" - } - } - name: "port-34-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "1485c127-2228-52b1-87e6-48c6b1366c46" - } - } - name: "port-20-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "15c058d8-c5ed-5878-81cb-f76630ea6bfb" - } - } - name: "port-18-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "188af412-9ac2-588f-8f00-a956aa6b2ae5" - } - } - name: "port-43-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "18a51dcf-905d-5104-9ef1-f24740fd6d78" - } - } - name: "port-12-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "1e02e33d-4b14-502d-9806-988f64cccb5d" - } - } - name: "port-43-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "21b8ccaa-9f7b-5bc5-9fc0-6f32025eb8a6" - } - } - name: "port-41-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "22d287ab-7935-55cb-b681-944a064726a9" - } - } - name: "port-11-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "266777cb-fa7b-50d7-aed7-333854581a55" - } - } - name: "port-31-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "28666b3c-4b96-5cb6-8006-eba13ca8ab6e" - } - } - name: "port-9-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "29e8b36f-6989-5651-99fe-b3cb2ee5b4b8" - } - } - name: "port-40-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "2b646bf7-3120-5254-a4fb-748294c61a71" - } - } - name: "port-2-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "35aaee89-81a3-56b1-b1ba-33f972d0af49" - } - } - name: "port-36-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "385bc8da-171b-574c-9d4f-d9b08f29c469" - } - } - name: "port-40-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "38f57fc2-4b25-5b8e-8ab0-e2676594b652" - } - } - name: "port-39-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3972ab17-4386-5a0c-92db-fc8096433068" - } - } - name: "port-38-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3a49ceb2-fd5b-59e2-975a-b065c4e127a4" - } - } - name: "port-7-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3b1551b2-3c17-54f6-8990-308ee42b421d" - } - } - name: "port-15-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3f8b1948-619c-5130-a158-b7beb838434c" - } - } - name: "port-14-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "40b898c7-94f2-5c5d-b94a-e712c1a49fcb" - } - } - name: "port-24-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "42040a55-feb4-53ee-941d-9a7ebd5da9db" - } - } - name: "port-27-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "435a198b-cd6f-5d29-a72d-ea4f04cb658a" - } - } - name: "port-35-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "436bb32a-c8a0-5718-bbdb-382c79d96587" - } - } - name: "port-1-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "4b197fb8-d26e-59fb-a96c-d347ba017b28" - } - } - name: "port-46-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "4f2223e0-64c3-55d3-a870-f3a48c91b929" - } - } - name: "port-23-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "509ffffc-2d4a-50b4-9da0-2b84b697c8a3" - } - } - name: "port-30-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "53e3c997-d487-5d96-a6c4-998a562dcb96" - } - } - name: "port-5-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "55684f06-7aab-5061-aa0d-2e37b45e5ec7" - } - } - name: "port-2-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "56c81904-047c-5d7c-a765-79b9e4b7abf2" - } - } - name: "port-3-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "570aec35-99c9-53e2-a266-a38ef45499ed" - } - } - name: "port-30-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "59871dc1-872d-5df1-9392-2537a591c86c" - } - } - name: "port-45-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "59fcacb0-1840-5dd3-9dfa-a07cf4f91bd2" - } - } - name: "port-3-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5ac999c3-3df8-53c4-8f4a-52e5943f5c4c" - } - } - name: "port-14-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5d38aff6-fc93-5ebe-9083-fae282f414d1" - } - } - name: "port-31-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5eb515c2-03ef-5aa2-9e39-f4b22a2f39c5" - } - } - name: "port-29-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "6079c57b-70de-533a-9b81-bf3817906b62" - } - } - name: "port-32-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "60d6af55-2f67-53a8-adb7-bceb6e7874eb" - } - } - name: "port-20-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "62099377-4f4f-5ffb-aa37-6dec3319a21e" - } - } - name: "port-13-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "6a6dc5d4-567c-5104-b50d-6820768d2699" - } - } - name: "port-46-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "758d5906-6065-57dc-b424-d8366cedb18d" - } - } - name: "port-29-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "763eff4b-7483-5e3a-9194-a160c72d42d1" - } - } - name: "port-17-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "77df46fd-6d6e-5726-9960-ca439c925dea" - } - } - name: "port-1-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "7a5876a9-17bb-5b17-a5a5-67978191ca5f" - } - } - name: "port-24-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "7be48ef0-2357-55fa-aca6-a1aeeeb3267a" - } - } - name: "port-42-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "7ce13dc8-d5f1-5233-beec-1d99416c9164" - } - } - name: "port-44-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "83916805-1162-57cc-955c-5ee28c2b85b7" - } - } - name: "port-28-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "883609be-6125-5bbf-91ac-2a30e75a7d1e" - } - } - name: "port-16-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "8d0c4ac4-c522-5992-a206-45e8bf8389c6" - } - } - name: "port-7-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "904c4b18-10a6-512b-9bb2-8ec81e74fda4" - } - } - name: "port-34-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "91492a21-2f88-5acc-a427-2a57230eb2ea" - } - } - name: "port-15-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "927b0db8-602b-54d5-acd9-c1cd6395425f" - } - } - name: "port-39-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "94718a3d-1217-5fcc-900d-d4c2f7c1f811" - } - } - name: "port-28-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a18a7eb1-811d-5d27-be08-db212d83f25e" - } - } - name: "port-45-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a299822d-4960-503f-9796-6f19cfbfd95c" - } - } - name: "port-25-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a7058178-97da-5b95-b969-abe5ab7a8e6f" - } - } - name: "port-42-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a7d33ece-9565-59ec-999f-4c995d142f83" - } - } - name: "port-4-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a9061634-e9a7-5d13-bc96-09fbf31cd610" - } - } - name: "port-41-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b5354091-162e-5073-aeb2-ec5debcfcf9f" - } - } - name: "port-16-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b9fbeed8-e304-5bd5-90e1-3e43c6af5a16" - } - } - name: "port-35-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "bff92ac5-9ccb-522c-8cd1-bb22aa005f10" - } - } - name: "port-21-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c31537c8-13df-503d-bf91-64e860e6b573" - } - } - name: "port-48-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ca4f5f60-37ba-567b-a474-ff8951033342" - } - } - name: "port-47-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cc197d41-625f-50d1-94d8-c6c63a31ccfb" - } - } - name: "port-8-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ccb07637-f7d6-5b4a-9fc6-8510ef694cd9" - } - } - name: "port-4-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cd539095-12a6-5460-8b07-481ec1901c9a" - } - } - name: "port-33-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cfe60fca-3fe5-5747-ace8-ca7913e26d81" - } - } - name: "port-13-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "d1949523-6b88-5845-b031-5789801b4938" - } - } - name: "port-32-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "d1de8f6d-68ef-5217-a5cd-2c059d4ac358" - } - } - name: "port-21-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "d71c4276-624a-584f-aca3-1aa3c1243da0" - } - } - name: "port-19-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "d9d6ffdf-2cb3-558d-8fe7-a7c08525727c" - } - } - name: "port-25-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "dc3777d3-50b0-518c-8abb-044debaad10b" - } - } - name: "port-18-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "dda83a5d-29b7-5f96-9b0a-bd1f39e1db2f" - } - } - name: "port-37-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e2500678-0f36-555a-9133-7cd04d3ad63a" - } - } - name: "port-6-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e49a30ee-8421-5b02-b925-55470fc65226" - } - } - name: "port-26-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e5265cb0-2e80-5ea1-80d8-333749bb7f14" - } - } - name: "port-5-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e5681c7e-92d1-516d-b7fb-fcc74cde7090" - } - } - name: "port-27-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e9d0dac3-11f2-5b84-9125-d0300ccd8eeb" - } - } - name: "port-37-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e9d4bff3-76ac-5490-b897-a30b9a42a8b1" - } - } - name: "port-44-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ea73d8c4-1077-55c9-87f1-9c377cee196f" - } - } - name: "port-9-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "eb38e3cd-e42a-54b2-846c-82207a95e8e3" - } - } - name: "port-10-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ebb8394d-98c3-5f28-8c43-a28c62dac297" - } - } - name: "port-22-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ebfe571c-77b2-5f66-9efe-25583cc1f587" - } - } - name: "port-36-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ed7f9c49-538f-5763-a20a-b3241e3fd385" - } - } - name: "port-26-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ee4df110-8657-571c-aa20-a70ec79db01f" - } - } - name: "port-47-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "f0350e3c-7fcc-54e3-b9f4-ac457631920e" - } - } - name: "port-23-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "f1522932-650f-5ac3-a1d3-081d4a7e79a9" - } - } - name: "port-17-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "f206246e-cb90-56b4-b908-1dc3daa7ac3f" - } - } - name: "port-11-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "f333e69e-6c91-5b65-8fea-a9bd49f8c657" - } - } - name: "port-22-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "f7052fb4-fab8-5821-95e0-d407043742d8" - } - } - name: "port-8-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "f894fb5e-fd1e-5424-904e-c879dedd9f8a" - } - } - name: "port-19-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "f8bd2b7e-6d37-5bbc-92f4-9b9b2e0ce22c" - } - } - name: "port-10-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ff51524f-7b51-5efd-af6b-6bc8541d3716" - } - } - name: "port-6-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -controller_id { -} - -[2024-07-23 08:12:50,036] INFO:device.service.OpenConfigServicer:from openconfigservicer [{'resource_key': 'channel_namespace', 'value': None}, {'resource_key': 'add_transceiver', 'value': None}, {'resource_key': 'source_port', 'value': ['port-35-in']}, {'resource_key': 'destination_port', 'value': ['port-1-out']}, {'resource_key': 'handled_flow', 'value': [('port-35-in', 'port-1-out')]}, {'resource_key': 'target-output-power', 'value': '1.0'}, {'resource_key': 'frequency', 'value': 192056250}, {'resource_key': 'operational-mode', 'value': 8}, {'resource_key': 'line-port', 'value': None}, {'resource_key': 'admin-state', 'value': 'ENABLED'}, {'resource_key': 'name', 'value': 'C_BAND'}, {'resource_key': 'optical-band-parent', 'value': 1}, {'resource_key': 'index', 'value': 1}, {'resource_key': 'lower-frequency', 'value': 192006250}, {'resource_key': 'upper-frequency', 'value': 192106250}] and conditions {'is_opticalband': False, 'edit_type': 'media-channel'} -[2024-07-23 08:12:50,036] INFO:root:from setConfig [{'resource_key': 'channel_namespace', 'value': None}, {'resource_key': 'add_transceiver', 'value': None}, {'resource_key': 'source_port', 'value': ['port-35-in']}, {'resource_key': 'destination_port', 'value': ['port-1-out']}, {'resource_key': 'handled_flow', 'value': [('port-35-in', 'port-1-out')]}, {'resource_key': 'target-output-power', 'value': '1.0'}, {'resource_key': 'frequency', 'value': 192056250}, {'resource_key': 'operational-mode', 'value': 8}, {'resource_key': 'line-port', 'value': None}, {'resource_key': 'admin-state', 'value': 'ENABLED'}, {'resource_key': 'name', 'value': 'C_BAND'}, {'resource_key': 'optical-band-parent', 'value': 1}, {'resource_key': 'index', 'value': 1}, {'resource_key': 'lower-frequency', 'value': 192006250}, {'resource_key': 'upper-frequency', 'value': 192106250}] -[2024-07-23 08:12:50,036] INFO:root:from setConfig condititons {'is_opticalband': False, 'edit_type': 'media-channel'} -[2024-07-23 08:12:50,037] INFO:root: edit messages [' 1 C_BAND 1 1 192006250 192106250 port-1-out port-35-in '] -[2024-07-23 08:12:50,037] INFO:device.service.OpenConfigServicer:error in configuring Element [{http://openconfig.net/yang/wavelength-router}wavelength-router] does not meet requirement -[2024-07-23 08:12:50,071] INFO:device.service.OpenConfigServicer: config from openconfigservicer {'channel_namespace': None, 'endpoints': [], 'device_name': 'R2', 'type': 'optical-roadm', 'channels': [{'band_name': 'TEST ', 'lower_frequency': 193210000, 'upper_frequency': 193300000, 'type': 'media_channel', 'src_port': 'port-36-in', 'dest_port': 'None', 'status': 'ENABLED', 'optical_band_parent': '1', 'channel_index': '3'}, {'band_name': 'C-BAND', 'lower_frequency': 193000000, 'upper_frequency': 194000000, 'type': 'optical_band', 'src_port': 'ADD', 'dest_port': 'port-1-out', 'status': 'ENABLED', 'optical_band_parent': None, 'channel_index': '1'}], 'roadm_uuid': {'roadm_uuid': 'c5b3429f-4331-5182-9745-cfdc0a5aaf29'}, 'new_config': {'target-output-power': '1.0', 'frequency': 192056250, 'operational-mode': 8, 'band': 100000, 'flow_id': 1, 'ob_id': 1, 'band_type': 'C_BAND', 'status': 'ENABLED'}, 'is_opticalband': False, 'flow': [['bcfb768c-e8fb-5e0b-9559-821d120b5410', '261a53b4-d257-5f35-bf5b-b2f975d7d2ed']]} -[2024-07-23 08:12:50,113] INFO:device.service.OpenConfigServicer:device is device_id { - device_uuid { - uuid: "c944aaeb-bbdf-5f2d-b31c-8cc8903045b6" - } -} -name: "R2" -device_type: "optical-roadm" -device_operational_status: DEVICEOPERATIONALSTATUS_ENABLED -device_drivers: DEVICEDRIVER_OC -device_endpoints { - endpoint_id { - 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: "004742bc-6ade-5c22-b02a-a154632d126e" - } - } - name: "port-20-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "039ec3bc-372e-5683-a58d-4815f9e21a2c" - } - } - name: "port-30-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "053a62f6-2760-562a-b285-15a9b159c2c5" - } - } - name: "port-46-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "05a86087-1205-51ff-a6a0-c66f07805fec" - } - } - name: "port-23-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "06bb01cb-0d99-5223-8215-cfa120b6afcb" - } - } - name: "port-17-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "073f30f3-bf6a-532b-bcb6-5bd23e6923a1" - } - } - name: "port-19-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0a9b56db-32f8-5c60-83af-7ceaa39c618e" - } - } - name: "port-2-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0be94d49-51fd-556c-869f-7d49a7c9cce8" - } - } - name: "port-17-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0d103312-7c8c-5e8a-980f-f6863b42d0d3" - } - } - name: "port-10-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "0ee5d330-9700-5684-92c1-bcb6c4c8a3bc" - } - } - name: "port-8-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "115ed444-0128-53f1-aa1a-ce8129a55f67" - } - } - name: "port-9-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "12ea85fc-4388-59c1-9cb9-b480ee06e01a" - } - } - name: "port-45-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "134dc1db-a258-5452-8e02-5d56af61a138" - } - } - name: "port-29-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "14bb0e42-db22-5dfb-b618-4caa72a8e8cc" - } - } - name: "port-42-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "18a7b3b1-d4a3-590a-a5a9-b7db5293ac61" - } - } - name: "port-48-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "19041fc0-6807-5b8f-9b26-7e7eed556980" - } - } - name: "port-6-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "1950275c-e218-5190-8ca5-6a2228c4a87b" - } - } - name: "port-10-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "20c3e2c5-d7b9-5761-9c9f-443b8c406d91" - } - } - name: "port-18-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "21db5850-b53e-57de-ba2a-bf578bffb1ea" - } - } - name: "port-46-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "261a53b4-d257-5f35-bf5b-b2f975d7d2ed" - } - } - name: "port-35-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "266dc3a1-0892-5454-a917-3fa62190c6c2" - } - } - name: "port-8-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "2c6d6f19-df32-59bd-a481-9bdf46fd6f5e" - } - } - name: "port-31-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "2e4f4523-3fb0-5704-9a47-1cf467d70bc8" - } - } - name: "port-13-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "2f6d500b-2407-516f-9468-4f059b218f4b" - } - } - name: "port-43-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3062d499-cf08-5f02-94c6-8906ebdf756b" - } - } - name: "port-41-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "31060d00-8617-55c3-92f2-f42b876478c1" - } - } - name: "port-4-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "324051b0-762b-5847-aba4-42ce1d8baa3b" - } - } - name: "port-27-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "399d3645-5565-502b-bfc8-3ea9cf68a83b" - } - } - name: "port-36-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3ba5f6db-ffde-59d9-a7ae-af06e96a9674" - } - } - name: "port-40-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3e17084e-d2b4-5cb2-b31a-7f6d80feb60e" - } - } - name: "port-5-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3e74aa2a-cf0d-51ce-b406-dcf1b96ae5d5" - } - } - name: "port-11-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "3efedbc2-7363-53cf-a0b9-fc4a2bcbd245" - } - } - name: "port-1-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "48a917ad-12d8-5ec4-aaab-84b35337abfe" - } - } - name: "port-14-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5047aede-f784-58ab-b80a-454386a43c64" - } - } - name: "port-12-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "50b41e11-e2f7-5720-b2b0-bc2a43eb7b95" - } - } - name: "port-38-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "51756532-a2d3-5731-898c-9d7333573a39" - } - } - name: "port-31-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5a91d3d9-58f9-53be-9bda-44a56e1e6dfd" - } - } - name: "port-21-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5aeb719f-e322-5185-be08-a2f837992a4f" - } - } - name: "port-44-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5cfa4f91-cbce-5721-b612-e6b5eaa76721" - } - } - name: "port-35-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5d5cb9d0-e675-55b7-8a76-5649f4c95c81" - } - } - name: "port-39-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5dd55ad7-b980-562e-b579-d724a3655d31" - } - } - name: "port-34-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "5eba7909-6f11-5154-b6e9-e2a2bbc75bb0" - } - } - name: "port-48-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "625560d9-4809-5f40-b3cf-23ec59efe71a" - } - } - name: "port-38-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "630a400f-dd0c-51d0-8049-c281881190b0" - } - } - name: "port-3-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "6a2d629b-9dfe-58af-bc5b-96277a127512" - } - } - name: "port-41-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "6e621543-9616-57bf-806c-2564047f234b" - } - } - name: "port-15-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "6e9b83ef-b9a4-5898-9495-38c45635aac7" - } - } - name: "port-34-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "72fabf2f-0121-5198-a4bf-ab82034d7da9" - } - } - name: "port-16-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "743daf39-41eb-500c-b61b-d7b473249022" - } - } - name: "port-47-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "76d3c064-04eb-5edf-95ac-645cb6348b61" - } - } - name: "port-33-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "77d8c722-2ad2-5a7c-8669-fb900f1166e1" - } - } - name: "port-45-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "7ec03972-acf4-5299-a5ec-e3e1a686a8bb" - } - } - name: "port-32-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "8657516b-33f4-5d1c-839d-51acbc6fb93d" - } - } - name: "port-36-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "86f6b3e0-3e7e-5db2-bb71-6e05229c97eb" - } - } - name: "port-3-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "922a952b-50b6-5985-bf44-3afeb53f396e" - } - } - name: "port-44-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "928a811e-4f2d-57cd-a0ec-f0c66fb348ee" - } - } - name: "port-28-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "94ae7ec2-0cba-55ea-a36f-2143b205ed64" - } - } - name: "port-43-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "994c45dd-b2b8-53c4-957d-4834f45e0e1f" - } - } - name: "port-13-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "9f6698ad-957c-561b-a8ec-9cb70fa53612" - } - } - name: "port-28-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "9faee558-3880-5e8a-b94c-6893b041c7dd" - } - } - name: "port-20-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a08ab669-238c-5e9e-9e86-780d39111595" - } - } - name: "port-40-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a263560e-0ea2-54f4-8765-7f9ac33f4c16" - } - } - name: "port-32-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a751a510-e108-5819-bafb-3d3e6881b4eb" - } - } - name: "port-12-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "a7c97f50-0539-57cc-aa9b-491aac1e8698" - } - } - name: "port-25-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ac0a40d5-6eb5-5831-bfbd-109511e00e0d" - } - } - name: "port-30-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "acf1d5af-164f-50af-983f-80e0f99c1de0" - } - } - name: "port-24-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b22d517e-2d36-518b-9e3e-c75c625f06ef" - } - } - name: "port-7-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b3ab2b45-ed47-5c14-801d-b1104dd9d619" - } - } - name: "port-6-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b6788cd9-089a-56e3-b388-4b53f0d994a9" - } - } - name: "port-24-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b7198f68-38c3-5c7f-b865-2fc809abf094" - } - } - name: "port-21-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "b71a78da-69db-5260-8a15-8de81d02a20d" - } - } - name: "port-9-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "bb1b9200-d62e-5f21-8436-595e37eee2ac" - } - } - name: "port-19-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "bc82f789-cbb1-5f3e-b989-88dab185ea0d" - } - } - name: "port-37-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "bcfb768c-e8fb-5e0b-9559-821d120b5410" - } - } - name: "port-1-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "bd08db44-134e-5902-bb24-b2453bf21db4" - } - } - name: "port-5-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "be1b3bb0-8aed-569a-be91-e888b0c0985d" - } - } - name: "port-33-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c027a391-2cf6-5b96-bba3-051e01c63f43" - } - } - name: "port-7-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c2d5ac50-2faf-5608-a6ae-7c023bceb289" - } - } - name: "port-39-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c4568f02-d291-5c95-b9bc-846278862db9" - } - } - name: "port-4-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c506f9c2-4f46-5b1c-8218-3a2d9825cdf7" - } - } - name: "port-27-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c559fb60-6495-5992-b339-ac7a590e337c" - } - } - name: "port-16-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "c8399dca-5e70-58f5-8048-737eaa5732a2" - } - } - name: "port-18-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cace07d7-0ca3-51be-bef1-b58db0ccba6f" - } - } - name: "port-2-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "caf865b8-df54-5601-9163-1cdbe8f7a599" - } - } - name: "port-47-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cb54a3bd-13f9-505f-9f3c-8c55a2738a35" - } - } - name: "port-26-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cbb42426-c8e3-5f61-b50d-bcd1147a7861" - } - } - name: "port-22-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "cc5064c4-bc42-5c50-b5b0-9b2ad1405bd8" - } - } - name: "port-42-in" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "d5a10fec-ce9a-575b-a526-53b52ddd33a5" - } - } - name: "port-22-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "d91ef51b-7b99-5486-9b2e-3830ebb96e2b" - } - } - name: "port-25-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e391da48-9b66-5924-b571-d27e85663462" - } - } - name: "port-23-out" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e5a04509-2cf6-5d51-8004-0a07e2b6a260" - } - } - name: "port-29-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e650eba7-019d-5c4f-9d75-14d47a711f2f" - } - } - name: "port-14-out" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "e7566eac-9fa0-5137-929a-7cf2485babea" - } - } - name: "port-37-out" - endpoint_type: "MG_ON_OPTICAL_PORT_MEDIACHANNEL" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "ea7812b2-db7c-5504-a415-6b4299ae090f" - } - } - name: "port-11-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "eb2a89f8-04c5-598d-b10e-c4509317a07f" - } - } - name: "port-26-in" - endpoint_type: "MG_ON_OPTICAL_PORT_FIBER" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "fd4d5404-baf3-5f5f-b7b7-a825c90e5f2a" - } - } - name: "port-15-in" - endpoint_type: "MG_ON_OPTICAL_PORT_WAVEBAND" - endpoint_location { - } -} -controller_id { -} - -[2024-07-23 08:12:50,114] INFO:device.service.OpenConfigServicer:from openconfigservicer [{'resource_key': 'channel_namespace', 'value': None}, {'resource_key': 'add_transceiver', 'value': None}, {'resource_key': 'source_port', 'value': ['port-1-in']}, {'resource_key': 'destination_port', 'value': ['port-35-out']}, {'resource_key': 'handled_flow', 'value': [('port-1-in', 'port-35-out')]}, {'resource_key': 'target-output-power', 'value': '1.0'}, {'resource_key': 'frequency', 'value': 192056250}, {'resource_key': 'operational-mode', 'value': 8}, {'resource_key': 'line-port', 'value': None}, {'resource_key': 'admin-state', 'value': 'ENABLED'}, {'resource_key': 'name', 'value': 'C_BAND'}, {'resource_key': 'optical-band-parent', 'value': 1}, {'resource_key': 'index', 'value': 1}, {'resource_key': 'lower-frequency', 'value': 192006250}, {'resource_key': 'upper-frequency', 'value': 192106250}] and conditions {'is_opticalband': False, 'edit_type': 'media-channel'} -[2024-07-23 08:12:50,114] INFO:root:from setConfig [{'resource_key': 'channel_namespace', 'value': None}, {'resource_key': 'add_transceiver', 'value': None}, {'resource_key': 'source_port', 'value': ['port-1-in']}, {'resource_key': 'destination_port', 'value': ['port-35-out']}, {'resource_key': 'handled_flow', 'value': [('port-1-in', 'port-35-out')]}, {'resource_key': 'target-output-power', 'value': '1.0'}, {'resource_key': 'frequency', 'value': 192056250}, {'resource_key': 'operational-mode', 'value': 8}, {'resource_key': 'line-port', 'value': None}, {'resource_key': 'admin-state', 'value': 'ENABLED'}, {'resource_key': 'name', 'value': 'C_BAND'}, {'resource_key': 'optical-band-parent', 'value': 1}, {'resource_key': 'index', 'value': 1}, {'resource_key': 'lower-frequency', 'value': 192006250}, {'resource_key': 'upper-frequency', 'value': 192106250}] -[2024-07-23 08:12:50,114] INFO:root:from setConfig condititons {'is_opticalband': False, 'edit_type': 'media-channel'} -[2024-07-23 08:12:50,115] INFO:root: edit messages [' 1 C_BAND 1 1 192006250 192106250 port-35-out port-1-in '] -[2024-07-23 08:12:50,115] INFO:device.service.OpenConfigServicer:error in configuring Element [{http://openconfig.net/yang/wavelength-router}wavelength-router] does not meet requirement -[2024-07-23 08:12:50,135] INFO:device.service.OpenConfigServicer: config from openconfigservicer {'channel_namespace': 'http://openconfig.net/yang/terminal-device', 'endpoints': [{'endpoint_uuid': {'uuid': {'index': 'channel-1'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-2'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-3'}}}, {'endpoint_uuid': {'uuid': {'index': 'channel-4'}}}], 'device_name': 'T2.3', 'type': 'optical-transponder', 'channels': [{'name': {'index': 'channel-3'}, 'frequency': 191600000, 'target-output-power': '100.0', 'operational-mode': 0, 'status': 'DISABLED'}, {'name': {'index': 'channel-1'}, 'frequency': 191600000, 'target-output-power': '100.0', 'operational-mode': 0, 'status': 'DISABLED'}, {'name': {'index': 'channel-4'}, 'frequency': 191600000, 'target-output-power': '100.0', 'operational-mode': 0, 'status': 'DISABLED'}, {'name': {'index': 'channel-2'}, 'frequency': 191600000, 'target-output-power': '100.0', 'operational-mode': 0, 'status': 'DISABLED'}], 'transceivers': {'transceiver': []}, 'interfaces': {'interface': ''}, 'trasponder_uuid': {'transponder_uuid': '1ca1bd99-2aec-5765-876a-39f5ea7ad8b2'}, 'new_config': {'target-output-power': '1.0', 'frequency': 192056250, 'operational-mode': 8, 'band': 100000, 'flow_id': 1, 'ob_id': 1, 'band_type': 'C_BAND', 'status': 'ENABLED'}, 'is_opticalband': False, 'flow': [['b1acaee3-904d-5106-ac3d-5ae6c42b5333', '0']]} -[2024-07-23 08:12:50,150] INFO:device.service.OpenConfigServicer:device is device_id { - device_uuid { - uuid: "ce0cdfdd-2182-5027-8177-676ca3244f9d" - } -} -name: "T2.3" -device_type: "optical-transponder" -device_operational_status: DEVICEOPERATIONALSTATUS_ENABLED -device_drivers: DEVICEDRIVER_OC -device_endpoints { - endpoint_id { - 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: "2a1a216d-8b90-5fb5-a076-a483e91b7dfa" - } - } - name: "4" - endpoint_type: "port-4" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "44f394cf-e1da-56d5-b850-3329382f2436" - } - } - name: "2" - endpoint_type: "port-2" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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" - } - } - name: "3" - endpoint_type: "port-3" - endpoint_location { - } -} -device_endpoints { - endpoint_id { - 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: "f16c3478-2dfd-512f-a52d-92c42bb72e10" - } - } - name: "1" - endpoint_type: "port-1" - endpoint_location { - } -} -controller_id { -} - -[2024-07-23 08:12:50,150] INFO:device.service.OpenConfigServicer:from openconfigservicer [{'resource_key': 'channel_namespace', 'value': 'http://openconfig.net/yang/terminal-device'}, {'resource_key': 'add_transceiver', 'value': None}, {'resource_key': 'source_port', 'value': ['3']}, {'resource_key': 'destination_port', 'value': [None]}, {'resource_key': 'handled_flow', 'value': [('3', None)]}, {'resource_key': 'target-output-power', 'value': '1.0'}, {'resource_key': 'frequency', 'value': 192056250}, {'resource_key': 'operational-mode', 'value': 8}, {'resource_key': 'line-port', 'value': None}, {'resource_key': 'admin-state', 'value': 'ENABLED'}, {'resource_key': 'name', 'value': 'C_BAND'}, {'resource_key': 'optical-band-parent', 'value': 1}, {'resource_key': 'lower-frequency', 'value': None}, {'resource_key': 'upper-frequency', 'value': None}] and conditions {'is_opticalband': False, 'edit_type': 'optical-channel'} -[2024-07-23 08:12:50,150] INFO:root:from setConfig [{'resource_key': 'channel_namespace', 'value': 'http://openconfig.net/yang/terminal-device'}, {'resource_key': 'add_transceiver', 'value': None}, {'resource_key': 'source_port', 'value': ['3']}, {'resource_key': 'destination_port', 'value': [None]}, {'resource_key': 'handled_flow', 'value': [('3', None)]}, {'resource_key': 'target-output-power', 'value': '1.0'}, {'resource_key': 'frequency', 'value': 192056250}, {'resource_key': 'operational-mode', 'value': 8}, {'resource_key': 'line-port', 'value': None}, {'resource_key': 'admin-state', 'value': 'ENABLED'}, {'resource_key': 'name', 'value': 'C_BAND'}, {'resource_key': 'optical-band-parent', 'value': 1}, {'resource_key': 'lower-frequency', 'value': None}, {'resource_key': 'upper-frequency', 'value': None}] -[2024-07-23 08:12:50,150] INFO:root:from setConfig condititons {'is_opticalband': False, 'edit_type': 'optical-channel'} -[2024-07-23 08:12:50,151] INFO:root:building xml [{'resource_key': 'channel_namespace', 'value': 'http://openconfig.net/yang/terminal-device'}, {'resource_key': 'add_transceiver', 'value': None}, {'resource_key': 'source_port', 'value': ['3']}, {'resource_key': 'destination_port', 'value': [None]}, {'resource_key': 'handled_flow', 'value': [('3', None)]}, {'resource_key': 'target-output-power', 'value': '1.0'}, {'resource_key': 'frequency', 'value': 192056250}, {'resource_key': 'operational-mode', 'value': 8}, {'resource_key': 'line-port', 'value': None}, {'resource_key': 'admin-state', 'value': 'ENABLED'}, {'resource_key': 'name', 'value': 'C_BAND'}, {'resource_key': 'optical-band-parent', 'value': 1}, {'resource_key': 'lower-frequency', 'value': None}, {'resource_key': 'upper-frequency', 'value': None}] -[2024-07-23 08:12:50,151] INFO:root:config_xml [{'resource_key': 'target-output-power', 'value': '1.0'}, {'resource_key': 'frequency', 'value': 192056250}, {'resource_key': 'operational-mode', 'value': 8}] -[2024-07-23 08:12:50,151] INFO:root:ports_xml {'source_port': ['3'], 'destination_port': [None]} -[2024-07-23 08:12:50,151] INFO:root:ports are {'source_port': ['3'], 'destination_port': [None]} -[2024-07-23 08:12:50,152] INFO:root: edit messages [' channel-3 channel-3 1.0 192056250 8 3 3 ENABLED '] -[2024-07-23 08:12:50,152] INFO:ncclient.operations.rpc:[host 172.17.254.42 session-id 30] Requesting 'EditConfig' -[2024-07-23 08:12:50,474] INFO:root:resonse from edit - -[2024-07-23 08:12:50,474] INFO:device.service.OpenConfigServicer:resluts [True] and is_all_good True -[2024-07-23 08:12:50,474] INFO:device.service.OpenConfigServicer:flow_handled {'resource_key': 'handled_flow', 'value': [('3', None)]} diff --git a/ecoc24 b/ecoc24 new file mode 120000 index 0000000000000000000000000000000000000000..37c97d3a77727ec098303cc9a5e04d711a30fcec --- /dev/null +++ b/ecoc24 @@ -0,0 +1 @@ +src/tests/ecoc24/ \ No newline at end of file diff --git a/links.json b/links.json deleted file mode 100644 index 70b08939ac979fed8682aad7e03ea8bee6cdceec..0000000000000000000000000000000000000000 --- a/links.json +++ /dev/null @@ -1,1712 +0,0 @@ -{ - "optical_links": [ - { - "name": "R2-T2.1", - "optical_details": { - "src_port": "2", - "dst_port": "6", - "local_peer_port": "12", - "remote_peer_port": "6", - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - }, - "link_id": { - "link_uuid": { - "uuid": "5ba1d9b6-120a-5680-b745-2ea24aec1cc3" - } - }, - "link_endpoint_ids": [ - { - "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": "61fd51ea-9896-5528-bcf3-3202a7668efb" - } - }, - { - "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": "d1e7e6c7-f1d7-56f3-be32-8982a72966f6" - } - } - ] - }, - { - "name": "R2-T2.2", - "optical_details": { - "src_port": "3", - "dst_port": "6", - "local_peer_port": "13", - "remote_peer_port": "6", - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - }, - "link_id": { - "link_uuid": { - "uuid": "5f9f4309-d24d-52e0-9d60-ba84839a5bda" - } - }, - "link_endpoint_ids": [ - { - "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": "463f5b52-bb8e-54e7-a63d-aeb4ad4b72bc" - } - }, - { - "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": "f2c1749b-0052-5ecb-931f-1b7889d7ed4d" - } - } - ] - }, - { - "name": "R1-T1.1", - "optical_details": { - "src_port": "2", - "dst_port": "1", - "local_peer_port": "12", - "remote_peer_port": "1", - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - }, - "link_id": { - "link_uuid": { - "uuid": "63c6a257-f171-59f8-b1e8-e3c4086ba36a" - } - }, - "link_endpoint_ids": [ - { - "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" - } - }, - "device_id": { - "device_uuid": { - "uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef" - } - }, - "endpoint_uuid": { - "uuid": "c7b7a565-0469-5463-809b-8ef4851d89c4" - } - } - ] - }, - { - "name": "T1.2-R1", - "optical_details": { - "src_port": "1", - "dst_port": "13", - "local_peer_port": "1", - "remote_peer_port": "3", - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - }, - "link_id": { - "link_uuid": { - "uuid": "817a2fcb-5dfd-55a6-b669-a141014cc38d" - } - }, - "link_endpoint_ids": [ - { - "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": "27b6ed2a-b0d1-5be9-b9be-cc9a540ac0d1" - } - }, - { - "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": "cef46beb-6533-5a93-8541-ed5adc875452" - } - } - ] - }, - { - "name": "T2.2-R2", - "optical_details": { - "src_port": "6", - "dst_port": "13", - "local_peer_port": "6", - "remote_peer_port": "3", - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - }, - "link_id": { - "link_uuid": { - "uuid": "884c6c6a-ad1b-5228-a48f-e9db4bc174df" - } - }, - "link_endpoint_ids": [ - { - "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": "be24d4af-c784-50cc-baa4-976a499fcd5a" - } - }, - { - "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": "f2c1749b-0052-5ecb-931f-1b7889d7ed4d" - } - } - ] - }, - { - "name": "R1-T1.3", - "optical_details": { - "src_port": "4", - "dst_port": "1", - "local_peer_port": "14", - "remote_peer_port": "1", - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - }, - "link_id": { - "link_uuid": { - "uuid": "89e3a6c6-d613-55bf-925c-c817ee24a133" - } - }, - "link_endpoint_ids": [ - { - "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": "4fca89b8-237c-52bd-8131-9129316b524f" - } - }, - { - "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": "dcaae3e3-42c5-50b5-bafb-d3097d567d09" - } - } - ] - }, - { - "name": "R1-T1.2", - "optical_details": { - "src_port": "3", - "dst_port": "1", - "local_peer_port": "13", - "remote_peer_port": "1", - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - }, - "link_id": { - "link_uuid": { - "uuid": "b11e2e7b-ef00-5c11-9dc6-5fd34bd11f6e" - } - }, - "link_endpoint_ids": [ - { - "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": "1a8d66e2-5d94-520f-b94a-0aca4cfd891f" - } - }, - { - "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": "cef46beb-6533-5a93-8541-ed5adc875452" - } - } - ] - }, - { - "name": "T2.3-R2", - "optical_details": { - "src_port": "6", - "dst_port": "14", - "local_peer_port": "6", - "remote_peer_port": "4", - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - }, - "link_id": { - "link_uuid": { - "uuid": "be7afc05-6e45-5899-896b-b331d6ab65c8" - } - }, - "link_endpoint_ids": [ - { - "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": "615c29eb-3528-5e70-9f43-2491aeb6478b" - } - }, - { - "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": "ac9e9079-6cf5-5d21-834d-1940c76fd78d" - } - } - ] - }, - { - "name": "R2-T2.3", - "optical_details": { - "src_port": "4", - "dst_port": "6", - "local_peer_port": "14", - "remote_peer_port": "6", - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - }, - "link_id": { - "link_uuid": { - "uuid": "d4e89764-11c5-5f59-b7d6-a3aa2dab43df" - } - }, - "link_endpoint_ids": [ - { - "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": "615c29eb-3528-5e70-9f43-2491aeb6478b" - } - }, - { - "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": "88a0bc2f-1ebf-5aca-b472-c339a1c302f9" - } - } - ] - }, - { - "name": "R1-R2", - "optical_details": { - "src_port": "101", - "dst_port": "111", - "local_peer_port": "111", - "remote_peer_port": "101", - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - }, - "link_id": { - "link_uuid": { - "uuid": "e273644c-0dfa-5053-8850-0722995e7ba3" - } - }, - "link_endpoint_ids": [ - { - "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": "811b34f9-112c-5cc5-a4e0-6e5f5e0bdada" - } - }, - { - "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": "d777e553-af96-5ee7-a957-ce70b49e36ac" - } - } - ] - }, - { - "name": "T1.1-R1", - "optical_details": { - "src_port": "1", - "dst_port": "12", - "local_peer_port": "1", - "remote_peer_port": "2", - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - }, - "link_id": { - "link_uuid": { - "uuid": "e8bd9082-ebad-55b8-b110-7c21fddaf1cf" - } - }, - "link_endpoint_ids": [ - { - "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" - } - }, - "device_id": { - "device_uuid": { - "uuid": "68741528-2e94-5274-ab3c-fddcd8dc05ef" - } - }, - "endpoint_uuid": { - "uuid": "690284c6-a8f7-54a0-82ed-19e721976221" - } - } - ] - }, - { - "name": "R2-R1", - "optical_details": { - "src_port": "101", - "dst_port": "111", - "local_peer_port": "111", - "remote_peer_port": "101", - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - }, - "link_id": { - "link_uuid": { - "uuid": "eae23f48-40de-5aae-b3d1-fa3cda231678" - } - }, - "link_endpoint_ids": [ - { - "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": "4255273d-5038-512d-9838-d5dd921cb858" - } - }, - { - "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": "f45593bb-41b1-50af-8944-524212ca012a" - } - } - ] - }, - { - "name": "T2.1-R2", - "optical_details": { - "src_port": "6", - "dst_port": "12", - "local_peer_port": "6", - "remote_peer_port": "2", - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - }, - "link_id": { - "link_uuid": { - "uuid": "ebb2ca0f-d4c1-51c4-ab41-dceea90f811f" - } - }, - "link_endpoint_ids": [ - { - "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": "1b9f85aa-8cc9-5b9d-99dc-8f0eec714d67" - } - }, - { - "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": "61fd51ea-9896-5528-bcf3-3202a7668efb" - } - } - ] - }, - { - "name": "T1.3-R1", - "optical_details": { - "src_port": "1", - "dst_port": "14", - "local_peer_port": "1", - "remote_peer_port": "4", - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - }, - "link_id": { - "link_uuid": { - "uuid": "f79a817c-a6a0-55d5-9398-a582a9835be9" - } - }, - "link_endpoint_ids": [ - { - "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": "dad62073-9e4f-5b05-947d-571e6c3a6068" - } - }, - { - "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": "dcaae3e3-42c5-50b5-bafb-d3097d567d09" - } - } - ] - } - ] -} \ No newline at end of file diff --git a/logs b/logs deleted file mode 100644 index 23fec6611c4fe46a93f3f9287effce3dd02be68c..0000000000000000000000000000000000000000 --- a/logs +++ /dev/null @@ -1,179 +0,0 @@ - * Serving Flask app "OpticalController" (lazy loading) - * Environment: production - WARNING: This is a development server. Do not use it in a production deployment. - Use a production WSGI server instead. - * Debug mode: off - * Running on http://0.0.0.0:10060/ (Press CTRL+C to quit) -topog_id context_id { - context_uuid { - uuid: "admin" - } -} -topology_uuid { - uuid: "admin" -} - -{'name': 'R2-T2.1', 'optical_details': {'src_port': '2', 'dst_port': '1', 'local_peer_port': '12', 'remote_peer_port': '1', 'c_slots': {'3': 1, '18': 1, '10': 1, '5': 1, '8': 1, '20': 1, '14': 1, '17': 1, '15': 1, '1': 1, '11': 1, '13': 1, '9': 1, '12': 1, '4': 1, '19': 1, '16': 1, '6': 1, '7': 1, '2': 1}, 'l_slots': {'112': 1, '106': 1, '108': 1, '111': 1, '104': 1, '102': 1, '101': 1, '105': 1, '118': 1, '119': 1, '117': 1, '113': 1, '116': 1, '115': 1, '109': 1, '110': 1, '107': 1, '103': 1, '120': 1, '114': 1}, 's_slots': {'508': 1, '501': 1, '515': 1, '513': 1, '507': 1, '510': 1, '511': 1, '517': 1, '512': 1, '518': 1, '509': 1, '504': 1, '502': 1, '514': 1, '516': 1, '503': 1, '506': 1, '505': 1, '520': 1, '519': 1}}, 'link_id': {'link_uuid': {'uuid': '5ba1d9b6-120a-5680-b745-2ea24aec1cc3'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': 'c944aaeb-bbdf-5f2d-b31c-8cc8903045b6'}}, 'endpoint_uuid': {'uuid': 'd1e7e6c7-f1d7-56f3-be32-8982a72966f6'}}]} -{'name': 'R2-T2.2', 'optical_details': {'src_port': '3', 'dst_port': '2', 'local_peer_port': '13', 'remote_peer_port': '2', 'c_slots': {'19': 1, '11': 1, '20': 1, '6': 1, '1': 1, '15': 1, '5': 1, '17': 1, '13': 1, '7': 1, '9': 1, '8': 1, '10': 1, '18': 1, '4': 1, '2': 1, '14': 1, '16': 1, '3': 1, '12': 1}, 'l_slots': {'103': 1, '120': 1, '114': 1, '110': 1, '115': 1, '108': 1, '109': 1, '107': 1, '104': 1, '112': 1, '119': 1, '118': 1, '117': 1, '101': 1, '106': 1, '113': 1, '111': 1, '105': 1, '116': 1, '102': 1}, 's_slots': {'510': 1, '503': 1, '502': 1, '512': 1, '514': 1, '515': 1, '505': 1, '504': 1, '501': 1, '507': 1, '516': 1, '519': 1, '518': 1, '508': 1, '513': 1, '517': 1, '506': 1, '520': 1, '509': 1, '511': 1}}, 'link_id': {'link_uuid': {'uuid': '5f9f4309-d24d-52e0-9d60-ba84839a5bda'}}, 'link_endpoint_ids': [{'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': '463f5b52-bb8e-54e7-a63d-aeb4ad4b72bc'}}, {'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'}}]} -{'name': 'R1-T1.1', 'optical_details': {'src_port': '2', 'dst_port': '1', 'local_peer_port': '12', 'remote_peer_port': '1', 'c_slots': {'14': 1, '6': 1, '10': 1, '9': 1, '4': 1, '19': 1, '1': 1, '17': 1, '15': 1, '12': 1, '8': 1, '18': 1, '7': 1, '13': 1, '16': 1, '3': 1, '20': 1, '5': 1, '2': 1, '11': 1}, 'l_slots': {'102': 1, '110': 1, '116': 1, '118': 1, '108': 1, '114': 1, '115': 1, '104': 1, '105': 1, '113': 1, '112': 1, '117': 1, '101': 1, '103': 1, '106': 1, '119': 1, '120': 1, '111': 1, '107': 1, '109': 1}, 's_slots': {'506': 1, '503': 1, '502': 1, '507': 1, '511': 1, '504': 1, '513': 1, '517': 1, '512': 1, '520': 1, '515': 1, '501': 1, '505': 1, '514': 1, '510': 1, '518': 1, '509': 1, '508': 1, '519': 1, '516': 1}}, 'link_id': {'link_uuid': {'uuid': '63c6a257-f171-59f8-b1e8-e3c4086ba36a'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': '68741528-2e94-5274-ab3c-fddcd8dc05ef'}}, 'endpoint_uuid': {'uuid': 'c7b7a565-0469-5463-809b-8ef4851d89c4'}}]} -{'name': 'T1.2-R1', 'optical_details': {'src_port': '2', 'dst_port': '13', 'local_peer_port': '2', 'remote_peer_port': '3', 'c_slots': {'8': 1, '2': 1, '13': 1, '14': 1, '1': 1, '4': 1, '16': 1, '9': 1, '5': 1, '19': 1, '17': 1, '3': 1, '15': 1, '10': 1, '18': 1, '11': 1, '7': 1, '12': 1, '6': 1, '20': 1}, 'l_slots': {'103': 1, '117': 1, '112': 1, '101': 1, '110': 1, '115': 1, '109': 1, '102': 1, '116': 1, '111': 1, '113': 1, '114': 1, '119': 1, '120': 1, '106': 1, '107': 1, '105': 1, '118': 1, '104': 1, '108': 1}, 's_slots': {'515': 1, '516': 1, '510': 1, '511': 1, '519': 1, '513': 1, '505': 1, '502': 1, '501': 1, '504': 1, '506': 1, '508': 1, '507': 1, '517': 1, '514': 1, '503': 1, '509': 1, '520': 1, '518': 1, '512': 1}}, 'link_id': {'link_uuid': {'uuid': '817a2fcb-5dfd-55a6-b669-a141014cc38d'}}, 'link_endpoint_ids': [{'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': '27b6ed2a-b0d1-5be9-b9be-cc9a540ac0d1'}}, {'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'}}]} -{'name': 'T2.2-R2', 'optical_details': {'src_port': '2', 'dst_port': '13', 'local_peer_port': '2', 'remote_peer_port': '3', 'c_slots': {'8': 1, '5': 1, '12': 1, '2': 1, '9': 1, '10': 1, '11': 1, '20': 1, '7': 1, '6': 1, '1': 1, '18': 1, '4': 1, '14': 1, '17': 1, '13': 1, '19': 1, '16': 1, '3': 1, '15': 1}, 'l_slots': {'109': 1, '101': 1, '113': 1, '118': 1, '119': 1, '110': 1, '108': 1, '105': 1, '102': 1, '114': 1, '112': 1, '111': 1, '103': 1, '107': 1, '120': 1, '106': 1, '115': 1, '117': 1, '116': 1, '104': 1}, 's_slots': {'517': 1, '508': 1, '519': 1, '511': 1, '515': 1, '504': 1, '512': 1, '506': 1, '520': 1, '505': 1, '516': 1, '501': 1, '503': 1, '510': 1, '502': 1, '513': 1, '509': 1, '507': 1, '514': 1, '518': 1}}, 'link_id': {'link_uuid': {'uuid': '884c6c6a-ad1b-5228-a48f-e9db4bc174df'}}, 'link_endpoint_ids': [{'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': 'be24d4af-c784-50cc-baa4-976a499fcd5a'}}, {'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'}}]} -{'name': 'R1-T1.3', 'optical_details': {'src_port': '4', 'dst_port': '3', 'local_peer_port': '14', 'remote_peer_port': '3', 'c_slots': {'10': 1, '17': 1, '11': 1, '2': 1, '4': 1, '18': 1, '3': 1, '16': 1, '5': 1, '8': 1, '13': 1, '14': 1, '12': 1, '15': 1, '9': 1, '7': 1, '1': 1, '20': 1, '19': 1, '6': 1}, 'l_slots': {'101': 1, '109': 1, '106': 1, '103': 1, '102': 1, '113': 1, '107': 1, '119': 1, '117': 1, '116': 1, '115': 1, '120': 1, '108': 1, '112': 1, '104': 1, '118': 1, '110': 1, '105': 1, '114': 1, '111': 1}, 's_slots': {'510': 1, '519': 1, '518': 1, '504': 1, '508': 1, '520': 1, '516': 1, '512': 1, '515': 1, '502': 1, '505': 1, '513': 1, '506': 1, '514': 1, '503': 1, '511': 1, '517': 1, '509': 1, '507': 1, '501': 1}}, 'link_id': {'link_uuid': {'uuid': '89e3a6c6-d613-55bf-925c-c817ee24a133'}}, 'link_endpoint_ids': [{'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': '4fca89b8-237c-52bd-8131-9129316b524f'}}, {'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'}}]} -{'name': 'R1-T1.2', 'optical_details': {'src_port': '3', 'dst_port': '2', 'local_peer_port': '13', 'remote_peer_port': '2', 'c_slots': {'17': 1, '3': 1, '14': 1, '9': 1, '11': 1, '8': 1, '1': 1, '18': 1, '12': 1, '6': 1, '19': 1, '20': 1, '7': 1, '2': 1, '5': 1, '15': 1, '10': 1, '16': 1, '13': 1, '4': 1}, 'l_slots': {'107': 1, '103': 1, '115': 1, '105': 1, '102': 1, '112': 1, '119': 1, '104': 1, '111': 1, '117': 1, '113': 1, '116': 1, '106': 1, '114': 1, '118': 1, '120': 1, '108': 1, '110': 1, '101': 1, '109': 1}, 's_slots': {'518': 1, '509': 1, '504': 1, '513': 1, '519': 1, '515': 1, '516': 1, '508': 1, '502': 1, '514': 1, '503': 1, '506': 1, '517': 1, '520': 1, '507': 1, '501': 1, '512': 1, '511': 1, '510': 1, '505': 1}}, 'link_id': {'link_uuid': {'uuid': 'b11e2e7b-ef00-5c11-9dc6-5fd34bd11f6e'}}, 'link_endpoint_ids': [{'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': '1a8d66e2-5d94-520f-b94a-0aca4cfd891f'}}, {'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'}}]} -{'name': 'T2.3-R2', 'optical_details': {'src_port': '3', 'dst_port': '14', 'local_peer_port': '3', 'remote_peer_port': '4', 'c_slots': {'17': 1, '18': 1, '13': 1, '12': 1, '6': 1, '14': 1, '11': 1, '3': 1, '8': 1, '4': 1, '10': 1, '1': 1, '9': 1, '19': 1, '7': 1, '15': 1, '20': 1, '16': 1, '5': 1, '2': 1}, 'l_slots': {'116': 1, '115': 1, '114': 1, '113': 1, '101': 1, '107': 1, '118': 1, '106': 1, '104': 1, '105': 1, '103': 1, '120': 1, '109': 1, '119': 1, '112': 1, '111': 1, '117': 1, '102': 1, '110': 1, '108': 1}, 's_slots': {'515': 1, '520': 1, '507': 1, '514': 1, '503': 1, '505': 1, '502': 1, '518': 1, '501': 1, '508': 1, '519': 1, '516': 1, '504': 1, '511': 1, '509': 1, '513': 1, '517': 1, '506': 1, '512': 1, '510': 1}}, 'link_id': {'link_uuid': {'uuid': 'be7afc05-6e45-5899-896b-b331d6ab65c8'}}, 'link_endpoint_ids': [{'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': 'ac9e9079-6cf5-5d21-834d-1940c76fd78d'}}, {'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'}}]} -{'name': 'R2-T2.3', 'optical_details': {'src_port': '4', 'dst_port': '3', 'local_peer_port': '14', 'remote_peer_port': '3', 'c_slots': {'20': 1, '1': 1, '19': 1, '3': 1, '11': 1, '13': 1, '4': 1, '10': 1, '8': 1, '7': 1, '14': 1, '6': 1, '16': 1, '9': 1, '12': 1, '2': 1, '18': 1, '17': 1, '15': 1, '5': 1}, 'l_slots': {'118': 1, '111': 1, '113': 1, '108': 1, '114': 1, '117': 1, '115': 1, '106': 1, '112': 1, '109': 1, '103': 1, '101': 1, '104': 1, '105': 1, '102': 1, '110': 1, '120': 1, '119': 1, '116': 1, '107': 1}, 's_slots': {'504': 1, '515': 1, '509': 1, '514': 1, '508': 1, '501': 1, '510': 1, '519': 1, '518': 1, '512': 1, '516': 1, '511': 1, '507': 1, '503': 1, '520': 1, '502': 1, '505': 1, '513': 1, '506': 1, '517': 1}}, 'link_id': {'link_uuid': {'uuid': 'd4e89764-11c5-5f59-b7d6-a3aa2dab43df'}}, 'link_endpoint_ids': [{'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': '88a0bc2f-1ebf-5aca-b472-c339a1c302f9'}}, {'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'}}]} -{'name': 'R1-R2', 'optical_details': {'src_port': '101', 'dst_port': '111', 'local_peer_port': '111', 'remote_peer_port': '101', 'c_slots': {'16': 1, '6': 1, '19': 1, '11': 1, '20': 1, '2': 1, '4': 1, '8': 1, '5': 1, '9': 1, '18': 1, '10': 1, '17': 1, '1': 1, '13': 1, '7': 1, '15': 1, '12': 1, '14': 1, '3': 1}, 'l_slots': {'111': 1, '115': 1, '105': 1, '106': 1, '108': 1, '101': 1, '109': 1, '104': 1, '103': 1, '102': 1, '113': 1, '116': 1, '118': 1, '119': 1, '117': 1, '110': 1, '114': 1, '120': 1, '107': 1, '112': 1}, 's_slots': {'512': 1, '514': 1, '503': 1, '519': 1, '513': 1, '507': 1, '516': 1, '509': 1, '511': 1, '505': 1, '517': 1, '506': 1, '520': 1, '501': 1, '515': 1, '518': 1, '502': 1, '510': 1, '504': 1, '508': 1}}, 'link_id': {'link_uuid': {'uuid': 'e273644c-0dfa-5053-8850-0722995e7ba3'}}, 'link_endpoint_ids': [{'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': '811b34f9-112c-5cc5-a4e0-6e5f5e0bdada'}}, {'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': 'd777e553-af96-5ee7-a957-ce70b49e36ac'}}]} -10.1.83.219 - - [25/Apr/2024 18:04:29] "GET /OpticalTFS/GetTopology/admin/admin HTTP/1.1" 200 - -INFO:werkzeug:10.1.83.219 - - [25/Apr/2024 18:04:29] "GET /OpticalTFS/GetTopology/admin/admin HTTP/1.1" 200 - -{'name': 'T1.1-R1', 'optical_details': {'src_port': '1', 'dst_port': '12', 'local_peer_port': '1', 'remote_peer_port': '2', 'c_slots': {'14': 1, '6': 1, '8': 1, '11': 1, '20': 1, '13': 1, '4': 1, '19': 1, '17': 1, '15': 1, '12': 1, '9': 1, '10': 1, '2': 1, '1': 1, '3': 1, '16': 1, '5': 1, '18': 1, '7': 1}, 'l_slots': {'108': 1, '103': 1, '110': 1, '115': 1, '105': 1, '111': 1, '119': 1, '106': 1, '107': 1, '120': 1, '114': 1, '116': 1, '109': 1, '113': 1, '102': 1, '101': 1, '112': 1, '104': 1, '118': 1, '117': 1}, 's_slots': {'502': 1, '517': 1, '514': 1, '513': 1, '509': 1, '520': 1, '501': 1, '516': 1, '512': 1, '503': 1, '510': 1, '519': 1, '506': 1, '507': 1, '508': 1, '505': 1, '518': 1, '515': 1, '504': 1, '511': 1}}, 'link_id': {'link_uuid': {'uuid': 'e8bd9082-ebad-55b8-b110-7c21fddaf1cf'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': '68741528-2e94-5274-ab3c-fddcd8dc05ef'}}, 'endpoint_uuid': {'uuid': '690284c6-a8f7-54a0-82ed-19e721976221'}}]} -{'name': 'R2-R1', 'optical_details': {'src_port': '101', 'dst_port': '111', 'local_peer_port': '111', 'remote_peer_port': '101', 'c_slots': {'15': 1, '13': 1, '2': 1, '8': 1, '5': 1, '1': 1, '9': 1, '11': 1, '7': 1, '17': 1, '19': 1, '3': 1, '12': 1, '10': 1, '18': 1, '14': 1, '20': 1, '4': 1, '6': 1, '16': 1}, 'l_slots': {'115': 1, '110': 1, '117': 1, '106': 1, '108': 1, '112': 1, '104': 1, '107': 1, '103': 1, '114': 1, '119': 1, '111': 1, '102': 1, '109': 1, '105': 1, '118': 1, '120': 1, '101': 1, '113': 1, '116': 1}, 's_slots': {'507': 1, '517': 1, '504': 1, '514': 1, '505': 1, '509': 1, '515': 1, '503': 1, '508': 1, '510': 1, '520': 1, '518': 1, '519': 1, '501': 1, '511': 1, '506': 1, '502': 1, '513': 1, '512': 1, '516': 1}}, 'link_id': {'link_uuid': {'uuid': 'eae23f48-40de-5aae-b3d1-fa3cda231678'}}, 'link_endpoint_ids': [{'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': '4255273d-5038-512d-9838-d5dd921cb858'}}, {'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': 'f45593bb-41b1-50af-8944-524212ca012a'}}]} -{'name': 'T2.1-R2', 'optical_details': {'src_port': '1', 'dst_port': '12', 'local_peer_port': '1', 'remote_peer_port': '2', 'c_slots': {'2': 1, '1': 1, '20': 1, '12': 1, '18': 1, '5': 1, '6': 1, '14': 1, '19': 1, '11': 1, '17': 1, '8': 1, '7': 1, '13': 1, '15': 1, '3': 1, '9': 1, '4': 1, '16': 1, '10': 1}, 'l_slots': {'111': 1, '116': 1, '117': 1, '106': 1, '120': 1, '119': 1, '105': 1, '108': 1, '101': 1, '104': 1, '115': 1, '110': 1, '113': 1, '109': 1, '114': 1, '118': 1, '112': 1, '103': 1, '102': 1, '107': 1}, 's_slots': {'510': 1, '504': 1, '508': 1, '516': 1, '513': 1, '520': 1, '515': 1, '517': 1, '509': 1, '505': 1, '512': 1, '518': 1, '502': 1, '501': 1, '506': 1, '511': 1, '514': 1, '507': 1, '503': 1, '519': 1}}, 'link_id': {'link_uuid': {'uuid': 'ebb2ca0f-d4c1-51c4-ab41-dceea90f811f'}}, 'link_endpoint_ids': [{'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': '1b9f85aa-8cc9-5b9d-99dc-8f0eec714d67'}}, {'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'}}]} -{'name': 'T1.3-R1', 'optical_details': {'src_port': '3', 'dst_port': '14', 'local_peer_port': '3', 'remote_peer_port': '4', 'c_slots': {'2': 1, '16': 1, '7': 1, '3': 1, '9': 1, '11': 1, '12': 1, '17': 1, '10': 1, '14': 1, '13': 1, '15': 1, '1': 1, '5': 1, '20': 1, '6': 1, '8': 1, '18': 1, '19': 1, '4': 1}, 'l_slots': {'117': 1, '116': 1, '113': 1, '115': 1, '101': 1, '114': 1, '112': 1, '106': 1, '119': 1, '110': 1, '103': 1, '111': 1, '102': 1, '104': 1, '105': 1, '107': 1, '118': 1, '109': 1, '120': 1, '108': 1}, 's_slots': {'518': 1, '519': 1, '508': 1, '520': 1, '510': 1, '507': 1, '502': 1, '511': 1, '503': 1, '517': 1, '514': 1, '516': 1, '505': 1, '512': 1, '513': 1, '515': 1, '501': 1, '504': 1, '506': 1, '509': 1}}, 'link_id': {'link_uuid': {'uuid': 'f79a817c-a6a0-55d5-9398-a582a9835be9'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': '68741528-2e94-5274-ab3c-fddcd8dc05ef'}}, 'endpoint_uuid': {'uuid': 'dad62073-9e4f-5b05-947d-571e6c3a6068'}}]} -INFO: Graph initiated.2 -( T2.2 , R2, 2, 13, 1, 1) -( T1.2 , R1, 2, 3, 1, 1) -( T1.1 , R1, 1, 12, 1, 1) -( R1 , T1.1, 12, 1, 1, 1) -( R1 , T1.2, 3, 2, 1, 1) -( R1 , T1.3, 14, 3, 1, 1) -( R1 , R2, 111, 101, 1, 1) -( T2.1 , R2, 1, 12, 1, 1) -( R2 , T2.1, 12, 1, 1, 1) -( R2 , T2.2, 13, 2, 1, 1) -( R2 , T2.3, 4, 3, 1, 1) -( R2 , R1, 101, 111, 1, 1) -( T2.3 , R2, 3, 4, 1, 1) -( T1.3 , R1, 3, 14, 1, 1) -20,20,20 -topog_id context_id { - context_uuid { - uuid: "admin" - } -} -topology_uuid { - uuid: "admin" -} - -{'name': 'R2-T2.1', 'optical_details': {'src_port': '2', 'dst_port': '1', 'local_peer_port': '12', 'remote_peer_port': '1', 'c_slots': {'5': 1, '18': 1, '9': 1, '20': 1, '16': 1, '11': 1, '19': 1, '17': 1, '10': 1, '15': 1, '12': 1, '13': 1, '6': 1, '1': 1, '4': 1, '7': 1, '2': 1, '14': 1, '8': 1, '3': 1}, 'l_slots': {'109': 1, '112': 1, '106': 1, '110': 1, '101': 1, '111': 1, '119': 1, '115': 1, '108': 1, '103': 1, '118': 1, '102': 1, '104': 1, '105': 1, '114': 1, '116': 1, '117': 1, '120': 1, '113': 1, '107': 1}, 's_slots': {'513': 1, '505': 1, '502': 1, '507': 1, '516': 1, '508': 1, '501': 1, '517': 1, '503': 1, '506': 1, '520': 1, '518': 1, '504': 1, '512': 1, '510': 1, '515': 1, '511': 1, '519': 1, '514': 1, '509': 1}}, 'link_id': {'link_uuid': {'uuid': '5ba1d9b6-120a-5680-b745-2ea24aec1cc3'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': 'c944aaeb-bbdf-5f2d-b31c-8cc8903045b6'}}, 'endpoint_uuid': {'uuid': 'd1e7e6c7-f1d7-56f3-be32-8982a72966f6'}}]} -{'name': 'R2-T2.2', 'optical_details': {'src_port': '3', 'dst_port': '2', 'local_peer_port': '13', 'remote_peer_port': '2', 'c_slots': {'17': 1, '16': 1, '3': 1, '18': 1, '4': 1, '5': 1, '8': 1, '15': 1, '6': 1, '1': 1, '2': 1, '10': 1, '19': 1, '9': 1, '13': 1, '12': 1, '14': 1, '11': 1, '7': 1, '20': 1}, 'l_slots': {'113': 1, '119': 1, '102': 1, '115': 1, '114': 1, '104': 1, '107': 1, '120': 1, '112': 1, '118': 1, '116': 1, '109': 1, '108': 1, '105': 1, '110': 1, '103': 1, '111': 1, '101': 1, '117': 1, '106': 1}, 's_slots': {'517': 1, '501': 1, '520': 1, '508': 1, '503': 1, '504': 1, '510': 1, '511': 1, '514': 1, '513': 1, '505': 1, '518': 1, '502': 1, '509': 1, '507': 1, '506': 1, '516': 1, '515': 1, '512': 1, '519': 1}}, 'link_id': {'link_uuid': {'uuid': '5f9f4309-d24d-52e0-9d60-ba84839a5bda'}}, 'link_endpoint_ids': [{'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': '463f5b52-bb8e-54e7-a63d-aeb4ad4b72bc'}}, {'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'}}]} -{'name': 'R1-T1.1', 'optical_details': {'src_port': '2', 'dst_port': '1', 'local_peer_port': '12', 'remote_peer_port': '1', 'c_slots': {'11': 1, '12': 1, '1': 1, '4': 1, '7': 1, '15': 1, '10': 1, '9': 1, '8': 1, '3': 1, '6': 1, '19': 1, '14': 1, '2': 1, '16': 1, '13': 1, '17': 1, '18': 1, '5': 1, '20': 1}, 'l_slots': {'118': 1, '112': 1, '107': 1, '115': 1, '108': 1, '101': 1, '113': 1, '103': 1, '117': 1, '114': 1, '109': 1, '120': 1, '119': 1, '105': 1, '110': 1, '104': 1, '106': 1, '111': 1, '102': 1, '116': 1}, 's_slots': {'509': 1, '504': 1, '503': 1, '505': 1, '520': 1, '507': 1, '502': 1, '511': 1, '513': 1, '519': 1, '508': 1, '510': 1, '516': 1, '517': 1, '506': 1, '501': 1, '518': 1, '515': 1, '514': 1, '512': 1}}, 'link_id': {'link_uuid': {'uuid': '63c6a257-f171-59f8-b1e8-e3c4086ba36a'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': '68741528-2e94-5274-ab3c-fddcd8dc05ef'}}, 'endpoint_uuid': {'uuid': 'c7b7a565-0469-5463-809b-8ef4851d89c4'}}]} -{'name': 'T1.2-R1', 'optical_details': {'src_port': '2', 'dst_port': '13', 'local_peer_port': '2', 'remote_peer_port': '3', 'c_slots': {'2': 1, '1': 1, '7': 1, '10': 1, '13': 1, '19': 1, '11': 1, '15': 1, '16': 1, '18': 1, '9': 1, '20': 1, '12': 1, '5': 1, '14': 1, '4': 1, '8': 1, '17': 1, '3': 1, '6': 1}, 'l_slots': {'110': 1, '102': 1, '109': 1, '119': 1, '113': 1, '117': 1, '120': 1, '105': 1, '114': 1, '103': 1, '104': 1, '118': 1, '108': 1, '112': 1, '101': 1, '116': 1, '115': 1, '111': 1, '106': 1, '107': 1}, 's_slots': {'510': 1, '506': 1, '505': 1, '512': 1, '502': 1, '516': 1, '507': 1, '514': 1, '511': 1, '517': 1, '513': 1, '503': 1, '508': 1, '519': 1, '518': 1, '504': 1, '501': 1, '515': 1, '520': 1, '509': 1}}, 'link_id': {'link_uuid': {'uuid': '817a2fcb-5dfd-55a6-b669-a141014cc38d'}}, 'link_endpoint_ids': [{'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': '27b6ed2a-b0d1-5be9-b9be-cc9a540ac0d1'}}, {'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'}}]} -{'name': 'T2.2-R2', 'optical_details': {'src_port': '2', 'dst_port': '13', 'local_peer_port': '2', 'remote_peer_port': '3', 'c_slots': {'18': 1, '14': 1, '2': 1, '8': 1, '4': 1, '5': 1, '17': 1, '20': 1, '9': 1, '19': 1, '11': 1, '12': 1, '1': 1, '15': 1, '16': 1, '3': 1, '7': 1, '10': 1, '6': 1, '13': 1}, 'l_slots': {'120': 1, '118': 1, '111': 1, '110': 1, '116': 1, '104': 1, '117': 1, '102': 1, '109': 1, '114': 1, '119': 1, '103': 1, '115': 1, '113': 1, '107': 1, '105': 1, '106': 1, '108': 1, '101': 1, '112': 1}, 's_slots': {'513': 1, '506': 1, '510': 1, '504': 1, '502': 1, '512': 1, '515': 1, '501': 1, '507': 1, '518': 1, '520': 1, '511': 1, '505': 1, '514': 1, '503': 1, '519': 1, '516': 1, '508': 1, '509': 1, '517': 1}}, 'link_id': {'link_uuid': {'uuid': '884c6c6a-ad1b-5228-a48f-e9db4bc174df'}}, 'link_endpoint_ids': [{'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': 'be24d4af-c784-50cc-baa4-976a499fcd5a'}}, {'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'}}]} -{'name': 'R1-T1.3', 'optical_details': {'src_port': '4', 'dst_port': '3', 'local_peer_port': '14', 'remote_peer_port': '3', 'c_slots': {'18': 1, '14': 1, '15': 1, '7': 1, '4': 1, '5': 1, '12': 1, '8': 1, '2': 1, '13': 1, '20': 1, '16': 1, '17': 1, '1': 1, '19': 1, '9': 1, '11': 1, '6': 1, '10': 1, '3': 1}, 'l_slots': {'119': 1, '107': 1, '103': 1, '108': 1, '116': 1, '105': 1, '120': 1, '113': 1, '114': 1, '106': 1, '104': 1, '109': 1, '110': 1, '101': 1, '112': 1, '111': 1, '117': 1, '102': 1, '115': 1, '118': 1}, 's_slots': {'505': 1, '501': 1, '519': 1, '503': 1, '502': 1, '510': 1, '517': 1, '518': 1, '506': 1, '515': 1, '514': 1, '507': 1, '511': 1, '504': 1, '512': 1, '516': 1, '508': 1, '509': 1, '520': 1, '513': 1}}, 'link_id': {'link_uuid': {'uuid': '89e3a6c6-d613-55bf-925c-c817ee24a133'}}, 'link_endpoint_ids': [{'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': '4fca89b8-237c-52bd-8131-9129316b524f'}}, {'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'}}]} -{'name': 'R1-T1.2', 'optical_details': {'src_port': '3', 'dst_port': '2', 'local_peer_port': '13', 'remote_peer_port': '2', 'c_slots': {'4': 1, '15': 1, '14': 1, '11': 1, '19': 1, '6': 1, '12': 1, '2': 1, '20': 1, '9': 1, '13': 1, '10': 1, '17': 1, '5': 1, '8': 1, '16': 1, '3': 1, '1': 1, '7': 1, '18': 1}, 'l_slots': {'118': 1, '104': 1, '103': 1, '112': 1, '107': 1, '102': 1, '105': 1, '109': 1, '110': 1, '108': 1, '120': 1, '106': 1, '114': 1, '117': 1, '101': 1, '119': 1, '113': 1, '111': 1, '116': 1, '115': 1}, 's_slots': {'502': 1, '501': 1, '508': 1, '514': 1, '506': 1, '509': 1, '513': 1, '518': 1, '504': 1, '505': 1, '515': 1, '517': 1, '520': 1, '519': 1, '512': 1, '510': 1, '516': 1, '507': 1, '503': 1, '511': 1}}, 'link_id': {'link_uuid': {'uuid': 'b11e2e7b-ef00-5c11-9dc6-5fd34bd11f6e'}}, 'link_endpoint_ids': [{'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': '1a8d66e2-5d94-520f-b94a-0aca4cfd891f'}}, {'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'}}]} -{'name': 'T2.3-R2', 'optical_details': {'src_port': '3', 'dst_port': '14', 'local_peer_port': '3', 'remote_peer_port': '4', 'c_slots': {'20': 1, '11': 1, '8': 1, '9': 1, '1': 1, '19': 1, '5': 1, '14': 1, '12': 1, '6': 1, '18': 1, '3': 1, '4': 1, '2': 1, '15': 1, '16': 1, '7': 1, '13': 1, '17': 1, '10': 1}, 'l_slots': {'119': 1, '111': 1, '120': 1, '113': 1, '115': 1, '105': 1, '117': 1, '108': 1, '104': 1, '106': 1, '103': 1, '107': 1, '114': 1, '109': 1, '116': 1, '101': 1, '102': 1, '112': 1, '110': 1, '118': 1}, 's_slots': {'504': 1, '508': 1, '506': 1, '512': 1, '502': 1, '507': 1, '520': 1, '501': 1, '516': 1, '514': 1, '511': 1, '518': 1, '510': 1, '503': 1, '517': 1, '515': 1, '519': 1, '505': 1, '513': 1, '509': 1}}, 'link_id': {'link_uuid': {'uuid': 'be7afc05-6e45-5899-896b-b331d6ab65c8'}}, 'link_endpoint_ids': [{'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': 'ac9e9079-6cf5-5d21-834d-1940c76fd78d'}}, {'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'}}]} -{'name': 'R2-T2.3', 'optical_details': {'src_port': '4', 'dst_port': '3', 'local_peer_port': '14', 'remote_peer_port': '3', 'c_slots': {'17': 1, '10': 1, '16': 1, '9': 1, '2': 1, '3': 1, '7': 1, '13': 1, '6': 1, '1': 1, '8': 1, '11': 1, '15': 1, '14': 1, '12': 1, '18': 1, '19': 1, '4': 1, '20': 1, '5': 1}, 'l_slots': {'103': 1, '102': 1, '114': 1, '111': 1, '117': 1, '115': 1, '108': 1, '113': 1, '109': 1, '116': 1, '118': 1, '120': 1, '110': 1, '104': 1, '112': 1, '119': 1, '106': 1, '101': 1, '105': 1, '107': 1}, 's_slots': {'512': 1, '518': 1, '503': 1, '516': 1, '504': 1, '520': 1, '513': 1, '511': 1, '501': 1, '517': 1, '519': 1, '514': 1, '507': 1, '506': 1, '509': 1, '505': 1, '502': 1, '510': 1, '508': 1, '515': 1}}, 'link_id': {'link_uuid': {'uuid': 'd4e89764-11c5-5f59-b7d6-a3aa2dab43df'}}, 'link_endpoint_ids': [{'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': '88a0bc2f-1ebf-5aca-b472-c339a1c302f9'}}, {'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'}}]} -{'name': 'R1-R2', 'optical_details': {'src_port': '101', 'dst_port': '111', 'local_peer_port': '111', 'remote_peer_port': '101', 'c_slots': {'3': 1, '20': 1, '16': 1, '9': 1, '6': 1, '14': 1, '13': 1, '12': 1, '1': 1, '15': 1, '7': 1, '2': 1, '8': 1, '4': 1, '5': 1, '18': 1, '10': 1, '11': 1, '17': 1, '19': 1}, 'l_slots': {'112': 1, '110': 1, '101': 1, '105': 1, '109': 1, '104': 1, '108': 1, '118': 1, '106': 1, '119': 1, '103': 1, '107': 1, '120': 1, '114': 1, '113': 1, '102': 1, '115': 1, '117': 1, '116': 1, '111': 1}, 's_slots': {'519': 1, '520': 1, '512': 1, '502': 1, '515': 1, '507': 1, '513': 1, '516': 1, '505': 1, '517': 1, '508': 1, '518': 1, '509': 1, '506': 1, '503': 1, '514': 1, '511': 1, '501': 1, '504': 1, '510': 1}}, 'link_id': {'link_uuid': {'uuid': 'e273644c-0dfa-5053-8850-0722995e7ba3'}}, 'link_endpoint_ids': [{'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': '811b34f9-112c-5cc5-a4e0-6e5f5e0bdada'}}, {'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': 'd777e553-af96-5ee7-a957-ce70b49e36ac'}}]} -{'name': 'T1.1-R1', 'optical_details': {'src_port': '1', 'dst_port': '12', 'local_peer_port': '1', 'remote_peer_port': '2', 'c_slots': {'4': 1, '3': 1, '10': 1, '9': 1, '2': 1, '13': 1, '8': 1, '6': 1, '17': 1, '5': 1, '20': 1, '1': 1, '18': 1, '14': 1, '19': 1, '11': 1, '15': 1, '12': 1, '7': 1, '16': 1}, 'l_slots': {'114': 1, '105': 1, '120': 1, '106': 1, '113': 1, '102': 1, '117': 1, '107': 1, '116': 1, '119': 1, '115': 1, '109': 1, '101': 1, '110': 1, '103': 1, '118': 1, '111': 1, '112': 1, '108': 1, '104': 1}, 's_slots': {'504': 1, '518': 1, '516': 1, '509': 1, '503': 1, '506': 1, '520': 1, '510': 1, '514': 1, '511': 1, '507': 1, '517': 1, '502': 1, '508': 1, '519': 1, '505': 1, '515': 1, '513': 1, '512': 1, '501': 1}}, 'link_id': {'link_uuid': {'uuid': 'e8bd9082-ebad-55b8-b110-7c21fddaf1cf'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': '68741528-2e94-5274-ab3c-fddcd8dc05ef'}}, 'endpoint_uuid': {'uuid': '690284c6-a8f7-54a0-82ed-19e721976221'}}]} -10.1.83.219 - - [25/Apr/2024 18:04:52] "GET /OpticalTFS/GetTopology/admin/admin HTTP/1.1" 200 - -INFO:werkzeug:10.1.83.219 - - [25/Apr/2024 18:04:52] "GET /OpticalTFS/GetTopology/admin/admin HTTP/1.1" 200 - -{'name': 'R2-R1', 'optical_details': {'src_port': '101', 'dst_port': '111', 'local_peer_port': '111', 'remote_peer_port': '101', 'c_slots': {'9': 1, '20': 1, '10': 1, '11': 1, '17': 1, '19': 1, '5': 1, '1': 1, '15': 1, '3': 1, '2': 1, '6': 1, '14': 1, '13': 1, '18': 1, '12': 1, '4': 1, '7': 1, '16': 1, '8': 1}, 'l_slots': {'101': 1, '119': 1, '111': 1, '116': 1, '109': 1, '103': 1, '110': 1, '106': 1, '105': 1, '102': 1, '108': 1, '114': 1, '113': 1, '112': 1, '104': 1, '117': 1, '118': 1, '107': 1, '120': 1, '115': 1}, 's_slots': {'518': 1, '505': 1, '506': 1, '514': 1, '516': 1, '502': 1, '501': 1, '508': 1, '509': 1, '519': 1, '520': 1, '517': 1, '515': 1, '512': 1, '511': 1, '504': 1, '503': 1, '510': 1, '507': 1, '513': 1}}, 'link_id': {'link_uuid': {'uuid': 'eae23f48-40de-5aae-b3d1-fa3cda231678'}}, 'link_endpoint_ids': [{'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': '4255273d-5038-512d-9838-d5dd921cb858'}}, {'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': 'f45593bb-41b1-50af-8944-524212ca012a'}}]} -{'name': 'T2.1-R2', 'optical_details': {'src_port': '1', 'dst_port': '12', 'local_peer_port': '1', 'remote_peer_port': '2', 'c_slots': {'18': 1, '6': 1, '16': 1, '7': 1, '2': 1, '4': 1, '3': 1, '17': 1, '11': 1, '20': 1, '15': 1, '19': 1, '10': 1, '9': 1, '5': 1, '13': 1, '8': 1, '1': 1, '12': 1, '14': 1}, 'l_slots': {'107': 1, '109': 1, '103': 1, '108': 1, '102': 1, '119': 1, '110': 1, '105': 1, '111': 1, '101': 1, '114': 1, '117': 1, '112': 1, '116': 1, '115': 1, '113': 1, '120': 1, '118': 1, '104': 1, '106': 1}, 's_slots': {'518': 1, '505': 1, '520': 1, '510': 1, '507': 1, '511': 1, '513': 1, '506': 1, '515': 1, '504': 1, '503': 1, '519': 1, '508': 1, '512': 1, '501': 1, '502': 1, '509': 1, '516': 1, '517': 1, '514': 1}}, 'link_id': {'link_uuid': {'uuid': 'ebb2ca0f-d4c1-51c4-ab41-dceea90f811f'}}, 'link_endpoint_ids': [{'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': '1b9f85aa-8cc9-5b9d-99dc-8f0eec714d67'}}, {'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'}}]} -{'name': 'T1.3-R1', 'optical_details': {'src_port': '3', 'dst_port': '14', 'local_peer_port': '3', 'remote_peer_port': '4', 'c_slots': {'5': 1, '9': 1, '4': 1, '2': 1, '10': 1, '16': 1, '17': 1, '8': 1, '19': 1, '11': 1, '20': 1, '7': 1, '14': 1, '1': 1, '12': 1, '3': 1, '6': 1, '18': 1, '15': 1, '13': 1}, 'l_slots': {'101': 1, '117': 1, '111': 1, '113': 1, '116': 1, '102': 1, '118': 1, '107': 1, '103': 1, '112': 1, '120': 1, '106': 1, '105': 1, '119': 1, '109': 1, '108': 1, '115': 1, '110': 1, '114': 1, '104': 1}, 's_slots': {'518': 1, '519': 1, '517': 1, '501': 1, '507': 1, '511': 1, '514': 1, '510': 1, '512': 1, '516': 1, '506': 1, '515': 1, '508': 1, '502': 1, '520': 1, '503': 1, '513': 1, '505': 1, '509': 1, '504': 1}}, 'link_id': {'link_uuid': {'uuid': 'f79a817c-a6a0-55d5-9398-a582a9835be9'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': '68741528-2e94-5274-ab3c-fddcd8dc05ef'}}, 'endpoint_uuid': {'uuid': 'dad62073-9e4f-5b05-947d-571e6c3a6068'}}]} -INFO: Graph initiated.2 -( T2.2 , R2, 2, 13, 1, 1) -( T1.2 , R1, 2, 3, 1, 1) -( T1.1 , R1, 1, 12, 1, 1) -( R1 , T1.1, 12, 1, 1, 1) -( R1 , T1.2, 3, 2, 1, 1) -( R1 , T1.3, 14, 3, 1, 1) -( R1 , R2, 111, 101, 1, 1) -( T2.1 , R2, 1, 12, 1, 1) -( R2 , T2.1, 12, 1, 1, 1) -( R2 , T2.2, 13, 2, 1, 1) -( R2 , T2.3, 4, 3, 1, 1) -( R2 , R1, 101, 111, 1, 1) -( T2.3 , R2, 3, 4, 1, 1) -( T1.3 , R1, 3, 14, 1, 1) -20,20,20 -INFO: New FlexLightpath request from T1.1 to T2.1 with rate 100 -( T2.2 , R2, 2, 13, 1, 1) -( T1.2 , R1, 2, 3, 1, 1) -( T1.1 , R1, 1, 12, 1, 1) -( R1 , T1.1, 12, 1, 1, 1) -( R1 , T1.2, 3, 2, 1, 1) -( R1 , T1.3, 14, 3, 1, 1) -( R1 , R2, 111, 101, 1, 1) -( T2.1 , R2, 1, 12, 1, 1) -( R2 , T2.1, 12, 1, 1, 1) -( R2 , T2.2, 13, 2, 1, 1) -( R2 , T2.3, 4, 3, 1, 1) -( R2 , R1, 101, 111, 1, 1) -( T2.3 , R2, 3, 4, 1, 1) -( T1.3 , R1, 3, 14, 1, 1) -100 8 -INFO: TP to TP connection -INFO: optical-band width specified -INFO: Path from T1.1 to T2.1 with distance: 3 -['T1.1', 'R1', 'R2', 'T2.1'] -T1.1 -{'name': 'T1.1-R1', 'optical_details': {'src_port': '1', 'dst_port': '12', 'local_peer_port': '1', 'remote_peer_port': '2', 'c_slots': {'4': 1, '3': 1, '10': 1, '9': 1, '2': 1, '13': 1, '8': 1, '6': 1, '17': 1, '5': 1, '20': 1, '1': 1, '18': 1, '14': 1, '19': 1, '11': 1, '15': 1, '12': 1, '7': 1, '16': 1}, 'l_slots': {'114': 1, '105': 1, '120': 1, '106': 1, '113': 1, '102': 1, '117': 1, '107': 1, '116': 1, '119': 1, '115': 1, '109': 1, '101': 1, '110': 1, '103': 1, '118': 1, '111': 1, '112': 1, '108': 1, '104': 1}, 's_slots': {'504': 1, '518': 1, '516': 1, '509': 1, '503': 1, '506': 1, '520': 1, '510': 1, '514': 1, '511': 1, '507': 1, '517': 1, '502': 1, '508': 1, '519': 1, '505': 1, '515': 1, '513': 1, '512': 1, '501': 1}}, 'link_id': {'link_uuid': {'uuid': 'e8bd9082-ebad-55b8-b110-7c21fddaf1cf'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': '68741528-2e94-5274-ab3c-fddcd8dc05ef'}}, 'endpoint_uuid': {'uuid': '690284c6-a8f7-54a0-82ed-19e721976221'}}]} -T1.1-R1 {'name': 'T1.1-R1', 'optical_details': {'src_port': '1', 'dst_port': '12', 'local_peer_port': '1', 'remote_peer_port': '2', 'c_slots': {'4': 1, '3': 1, '10': 1, '9': 1, '2': 1, '13': 1, '8': 1, '6': 1, '17': 1, '5': 1, '20': 1, '1': 1, '18': 1, '14': 1, '19': 1, '11': 1, '15': 1, '12': 1, '7': 1, '16': 1}, 'l_slots': {'114': 1, '105': 1, '120': 1, '106': 1, '113': 1, '102': 1, '117': 1, '107': 1, '116': 1, '119': 1, '115': 1, '109': 1, '101': 1, '110': 1, '103': 1, '118': 1, '111': 1, '112': 1, '108': 1, '104': 1}, 's_slots': {'504': 1, '518': 1, '516': 1, '509': 1, '503': 1, '506': 1, '520': 1, '510': 1, '514': 1, '511': 1, '507': 1, '517': 1, '502': 1, '508': 1, '519': 1, '505': 1, '515': 1, '513': 1, '512': 1, '501': 1}}, 'link_id': {'link_uuid': {'uuid': 'e8bd9082-ebad-55b8-b110-7c21fddaf1cf'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': '68741528-2e94-5274-ab3c-fddcd8dc05ef'}}, 'endpoint_uuid': {'uuid': '690284c6-a8f7-54a0-82ed-19e721976221'}}]} -R1 -{'name': 'R1-R2', 'optical_details': {'src_port': '101', 'dst_port': '111', 'local_peer_port': '111', 'remote_peer_port': '101', 'c_slots': {'3': 1, '20': 1, '16': 1, '9': 1, '6': 1, '14': 1, '13': 1, '12': 1, '1': 1, '15': 1, '7': 1, '2': 1, '8': 1, '4': 1, '5': 1, '18': 1, '10': 1, '11': 1, '17': 1, '19': 1}, 'l_slots': {'112': 1, '110': 1, '101': 1, '105': 1, '109': 1, '104': 1, '108': 1, '118': 1, '106': 1, '119': 1, '103': 1, '107': 1, '120': 1, '114': 1, '113': 1, '102': 1, '115': 1, '117': 1, '116': 1, '111': 1}, 's_slots': {'519': 1, '520': 1, '512': 1, '502': 1, '515': 1, '507': 1, '513': 1, '516': 1, '505': 1, '517': 1, '508': 1, '518': 1, '509': 1, '506': 1, '503': 1, '514': 1, '511': 1, '501': 1, '504': 1, '510': 1}}, 'link_id': {'link_uuid': {'uuid': 'e273644c-0dfa-5053-8850-0722995e7ba3'}}, 'link_endpoint_ids': [{'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': '811b34f9-112c-5cc5-a4e0-6e5f5e0bdada'}}, {'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': 'd777e553-af96-5ee7-a957-ce70b49e36ac'}}]} -R1-R2 {'name': 'R1-R2', 'optical_details': {'src_port': '101', 'dst_port': '111', 'local_peer_port': '111', 'remote_peer_port': '101', 'c_slots': {'3': 1, '20': 1, '16': 1, '9': 1, '6': 1, '14': 1, '13': 1, '12': 1, '1': 1, '15': 1, '7': 1, '2': 1, '8': 1, '4': 1, '5': 1, '18': 1, '10': 1, '11': 1, '17': 1, '19': 1}, 'l_slots': {'112': 1, '110': 1, '101': 1, '105': 1, '109': 1, '104': 1, '108': 1, '118': 1, '106': 1, '119': 1, '103': 1, '107': 1, '120': 1, '114': 1, '113': 1, '102': 1, '115': 1, '117': 1, '116': 1, '111': 1}, 's_slots': {'519': 1, '520': 1, '512': 1, '502': 1, '515': 1, '507': 1, '513': 1, '516': 1, '505': 1, '517': 1, '508': 1, '518': 1, '509': 1, '506': 1, '503': 1, '514': 1, '511': 1, '501': 1, '504': 1, '510': 1}}, 'link_id': {'link_uuid': {'uuid': 'e273644c-0dfa-5053-8850-0722995e7ba3'}}, 'link_endpoint_ids': [{'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': '811b34f9-112c-5cc5-a4e0-6e5f5e0bdada'}}, {'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': 'd777e553-af96-5ee7-a957-ce70b49e36ac'}}]} -R2 -{'name': 'R2-T2.1', 'optical_details': {'src_port': '2', 'dst_port': '1', 'local_peer_port': '12', 'remote_peer_port': '1', 'c_slots': {'5': 1, '18': 1, '9': 1, '20': 1, '16': 1, '11': 1, '19': 1, '17': 1, '10': 1, '15': 1, '12': 1, '13': 1, '6': 1, '1': 1, '4': 1, '7': 1, '2': 1, '14': 1, '8': 1, '3': 1}, 'l_slots': {'109': 1, '112': 1, '106': 1, '110': 1, '101': 1, '111': 1, '119': 1, '115': 1, '108': 1, '103': 1, '118': 1, '102': 1, '104': 1, '105': 1, '114': 1, '116': 1, '117': 1, '120': 1, '113': 1, '107': 1}, 's_slots': {'513': 1, '505': 1, '502': 1, '507': 1, '516': 1, '508': 1, '501': 1, '517': 1, '503': 1, '506': 1, '520': 1, '518': 1, '504': 1, '512': 1, '510': 1, '515': 1, '511': 1, '519': 1, '514': 1, '509': 1}}, 'link_id': {'link_uuid': {'uuid': '5ba1d9b6-120a-5680-b745-2ea24aec1cc3'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': 'c944aaeb-bbdf-5f2d-b31c-8cc8903045b6'}}, 'endpoint_uuid': {'uuid': 'd1e7e6c7-f1d7-56f3-be32-8982a72966f6'}}]} -R2-T2.1 {'name': 'R2-T2.1', 'optical_details': {'src_port': '2', 'dst_port': '1', 'local_peer_port': '12', 'remote_peer_port': '1', 'c_slots': {'5': 1, '18': 1, '9': 1, '20': 1, '16': 1, '11': 1, '19': 1, '17': 1, '10': 1, '15': 1, '12': 1, '13': 1, '6': 1, '1': 1, '4': 1, '7': 1, '2': 1, '14': 1, '8': 1, '3': 1}, 'l_slots': {'109': 1, '112': 1, '106': 1, '110': 1, '101': 1, '111': 1, '119': 1, '115': 1, '108': 1, '103': 1, '118': 1, '102': 1, '104': 1, '105': 1, '114': 1, '116': 1, '117': 1, '120': 1, '113': 1, '107': 1}, 's_slots': {'513': 1, '505': 1, '502': 1, '507': 1, '516': 1, '508': 1, '501': 1, '517': 1, '503': 1, '506': 1, '520': 1, '518': 1, '504': 1, '512': 1, '510': 1, '515': 1, '511': 1, '519': 1, '514': 1, '509': 1}}, 'link_id': {'link_uuid': {'uuid': '5ba1d9b6-120a-5680-b745-2ea24aec1cc3'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': 'c944aaeb-bbdf-5f2d-b31c-8cc8903045b6'}}, 'endpoint_uuid': {'uuid': 'd1e7e6c7-f1d7-56f3-be32-8982a72966f6'}}]} -INFO: Creating optical-band of 8 slots -{'name': 'R1-R2', 'optical_details': {'src_port': '101', 'dst_port': '111', 'local_peer_port': '111', 'remote_peer_port': '101', 'c_slots': {'3': 1, '20': 1, '16': 1, '9': 1, '6': 1, '14': 1, '13': 1, '12': 1, '1': 1, '15': 1, '7': 1, '2': 1, '8': 1, '4': 1, '5': 1, '18': 1, '10': 1, '11': 1, '17': 1, '19': 1}, 'l_slots': {'112': 1, '110': 1, '101': 1, '105': 1, '109': 1, '104': 1, '108': 1, '118': 1, '106': 1, '119': 1, '103': 1, '107': 1, '120': 1, '114': 1, '113': 1, '102': 1, '115': 1, '117': 1, '116': 1, '111': 1}, 's_slots': {'519': 1, '520': 1, '512': 1, '502': 1, '515': 1, '507': 1, '513': 1, '516': 1, '505': 1, '517': 1, '508': 1, '518': 1, '509': 1, '506': 1, '503': 1, '514': 1, '511': 1, '501': 1, '504': 1, '510': 1}}, 'link_id': {'link_uuid': {'uuid': 'e273644c-0dfa-5053-8850-0722995e7ba3'}}, 'link_endpoint_ids': [{'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': '811b34f9-112c-5cc5-a4e0-6e5f5e0bdada'}}, {'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': 'd777e553-af96-5ee7-a957-ce70b49e36ac'}}]} -R1-R2 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] -1 -R1-R2 -[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] -[101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120] -[501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520] -['R1-R2'] 8 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120] [501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520] 0 20 20 20 -c_slots [1, 2, 3, 4, 5, 6, 7, 8] -INFO: Path forward computation completed -{'name': 'R1-R2', 'optical_details': {'src_port': '101', 'dst_port': '111', 'local_peer_port': '111', 'remote_peer_port': '101', 'c_slots': {'3': 0, '20': 1, '16': 1, '9': 1, '6': 0, '14': 1, '13': 1, '12': 1, '1': 0, '15': 1, '7': 0, '2': 0, '8': 0, '4': 0, '5': 0, '18': 1, '10': 1, '11': 1, '17': 1, '19': 1}, 'l_slots': {'112': 1, '110': 1, '101': 1, '105': 1, '109': 1, '104': 1, '108': 1, '118': 1, '106': 1, '119': 1, '103': 1, '107': 1, '120': 1, '114': 1, '113': 1, '102': 1, '115': 1, '117': 1, '116': 1, '111': 1}, 's_slots': {'519': 1, '520': 1, '512': 1, '502': 1, '515': 1, '507': 1, '513': 1, '516': 1, '505': 1, '517': 1, '508': 1, '518': 1, '509': 1, '506': 1, '503': 1, '514': 1, '511': 1, '501': 1, '504': 1, '510': 1}}, 'link_id': {'link_uuid': {'uuid': 'e273644c-0dfa-5053-8850-0722995e7ba3'}}, 'link_endpoint_ids': [{'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': '811b34f9-112c-5cc5-a4e0-6e5f5e0bdada'}}, {'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': 'd777e553-af96-5ee7-a957-ce70b49e36ac'}}]} -{'optical_links': [{'name': 'R2-T2.1', 'optical_details': {'src_port': '2', 'dst_port': '1', 'local_peer_port': '12', 'remote_peer_port': '1', 'c_slots': {'5': 1, '18': 1, '9': 1, '20': 1, '16': 1, '11': 1, '19': 1, '17': 1, '10': 1, '15': 1, '12': 1, '13': 1, '6': 1, '1': 1, '4': 1, '7': 1, '2': 1, '14': 1, '8': 1, '3': 1}, 'l_slots': {'109': 1, '112': 1, '106': 1, '110': 1, '101': 1, '111': 1, '119': 1, '115': 1, '108': 1, '103': 1, '118': 1, '102': 1, '104': 1, '105': 1, '114': 1, '116': 1, '117': 1, '120': 1, '113': 1, '107': 1}, 's_slots': {'513': 1, '505': 1, '502': 1, '507': 1, '516': 1, '508': 1, '501': 1, '517': 1, '503': 1, '506': 1, '520': 1, '518': 1, '504': 1, '512': 1, '510': 1, '515': 1, '511': 1, '519': 1, '514': 1, '509': 1}}, 'link_id': {'link_uuid': {'uuid': '5ba1d9b6-120a-5680-b745-2ea24aec1cc3'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': 'c944aaeb-bbdf-5f2d-b31c-8cc8903045b6'}}, 'endpoint_uuid': {'uuid': 'd1e7e6c7-f1d7-56f3-be32-8982a72966f6'}}]}, {'name': 'R2-T2.2', 'optical_details': {'src_port': '3', 'dst_port': '2', 'local_peer_port': '13', 'remote_peer_port': '2', 'c_slots': {'17': 1, '16': 1, '3': 1, '18': 1, '4': 1, '5': 1, '8': 1, '15': 1, '6': 1, '1': 1, '2': 1, '10': 1, '19': 1, '9': 1, '13': 1, '12': 1, '14': 1, '11': 1, '7': 1, '20': 1}, 'l_slots': {'113': 1, '119': 1, '102': 1, '115': 1, '114': 1, '104': 1, '107': 1, '120': 1, '112': 1, '118': 1, '116': 1, '109': 1, '108': 1, '105': 1, '110': 1, '103': 1, '111': 1, '101': 1, '117': 1, '106': 1}, 's_slots': {'517': 1, '501': 1, '520': 1, '508': 1, '503': 1, '504': 1, '510': 1, '511': 1, '514': 1, '513': 1, '505': 1, '518': 1, '502': 1, '509': 1, '507': 1, '506': 1, '516': 1, '515': 1, '512': 1, '519': 1}}, 'link_id': {'link_uuid': {'uuid': '5f9f4309-d24d-52e0-9d60-ba84839a5bda'}}, 'link_endpoint_ids': [{'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': '463f5b52-bb8e-54e7-a63d-aeb4ad4b72bc'}}, {'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'}}]}, {'name': 'R1-T1.1', 'optical_details': {'src_port': '2', 'dst_port': '1', 'local_peer_port': '12', 'remote_peer_port': '1', 'c_slots': {'11': 1, '12': 1, '1': 1, '4': 1, '7': 1, '15': 1, '10': 1, '9': 1, '8': 1, '3': 1, '6': 1, '19': 1, '14': 1, '2': 1, '16': 1, '13': 1, '17': 1, '18': 1, '5': 1, '20': 1}, 'l_slots': {'118': 1, '112': 1, '107': 1, '115': 1, '108': 1, '101': 1, '113': 1, '103': 1, '117': 1, '114': 1, '109': 1, '120': 1, '119': 1, '105': 1, '110': 1, '104': 1, '106': 1, '111': 1, '102': 1, '116': 1}, 's_slots': {'509': 1, '504': 1, '503': 1, '505': 1, '520': 1, '507': 1, '502': 1, '511': 1, '513': 1, '519': 1, '508': 1, '510': 1, '516': 1, '517': 1, '506': 1, '501': 1, '518': 1, '515': 1, '514': 1, '512': 1}}, 'link_id': {'link_uuid': {'uuid': '63c6a257-f171-59f8-b1e8-e3c4086ba36a'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': '68741528-2e94-5274-ab3c-fddcd8dc05ef'}}, 'endpoint_uuid': {'uuid': 'c7b7a565-0469-5463-809b-8ef4851d89c4'}}]}, {'name': 'T1.2-R1', 'optical_details': {'src_port': '2', 'dst_port': '13', 'local_peer_port': '2', 'remote_peer_port': '3', 'c_slots': {'2': 1, '1': 1, '7': 1, '10': 1, '13': 1, '19': 1, '11': 1, '15': 1, '16': 1, '18': 1, '9': 1, '20': 1, '12': 1, '5': 1, '14': 1, '4': 1, '8': 1, '17': 1, '3': 1, '6': 1}, 'l_slots': {'110': 1, '102': 1, '109': 1, '119': 1, '113': 1, '117': 1, '120': 1, '105': 1, '114': 1, '103': 1, '104': 1, '118': 1, '108': 1, '112': 1, '101': 1, '116': 1, '115': 1, '111': 1, '106': 1, '107': 1}, 's_slots': {'510': 1, '506': 1, '505': 1, '512': 1, '502': 1, '516': 1, '507': 1, '514': 1, '511': 1, '517': 1, '513': 1, '503': 1, '508': 1, '519': 1, '518': 1, '504': 1, '501': 1, '515': 1, '520': 1, '509': 1}}, 'link_id': {'link_uuid': {'uuid': '817a2fcb-5dfd-55a6-b669-a141014cc38d'}}, 'link_endpoint_ids': [{'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': '27b6ed2a-b0d1-5be9-b9be-cc9a540ac0d1'}}, {'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'}}]}, {'name': 'T2.2-R2', 'optical_details': {'src_port': '2', 'dst_port': '13', 'local_peer_port': '2', 'remote_peer_port': '3', 'c_slots': {'18': 1, '14': 1, '2': 1, '8': 1, '4': 1, '5': 1, '17': 1, '20': 1, '9': 1, '19': 1, '11': 1, '12': 1, '1': 1, '15': 1, '16': 1, '3': 1, '7': 1, '10': 1, '6': 1, '13': 1}, 'l_slots': {'120': 1, '118': 1, '111': 1, '110': 1, '116': 1, '104': 1, '117': 1, '102': 1, '109': 1, '114': 1, '119': 1, '103': 1, '115': 1, '113': 1, '107': 1, '105': 1, '106': 1, '108': 1, '101': 1, '112': 1}, 's_slots': {'513': 1, '506': 1, '510': 1, '504': 1, '502': 1, '512': 1, '515': 1, '501': 1, '507': 1, '518': 1, '520': 1, '511': 1, '505': 1, '514': 1, '503': 1, '519': 1, '516': 1, '508': 1, '509': 1, '517': 1}}, 'link_id': {'link_uuid': {'uuid': '884c6c6a-ad1b-5228-a48f-e9db4bc174df'}}, 'link_endpoint_ids': [{'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': 'be24d4af-c784-50cc-baa4-976a499fcd5a'}}, {'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'}}]}, {'name': 'R1-T1.3', 'optical_details': {'src_port': '4', 'dst_port': '3', 'local_peer_port': '14', 'remote_peer_port': '3', 'c_slots': {'18': 1, '14': 1, '15': 1, '7': 1, '4': 1, '5': 1, '12': 1, '8': 1, '2': 1, '13': 1, '20': 1, '16': 1, '17': 1, '1': 1, '19': 1, '9': 1, '11': 1, '6': 1, '10': 1, '3': 1}, 'l_slots': {'119': 1, '107': 1, '103': 1, '108': 1, '116': 1, '105': 1, '120': 1, '113': 1, '114': 1, '106': 1, '104': 1, '109': 1, '110': 1, '101': 1, '112': 1, '111': 1, '117': 1, '102': 1, '115': 1, '118': 1}, 's_slots': {'505': 1, '501': 1, '519': 1, '503': 1, '502': 1, '510': 1, '517': 1, '518': 1, '506': 1, '515': 1, '514': 1, '507': 1, '511': 1, '504': 1, '512': 1, '516': 1, '508': 1, '509': 1, '520': 1, '513': 1}}, 'link_id': {'link_uuid': {'uuid': '89e3a6c6-d613-55bf-925c-c817ee24a133'}}, 'link_endpoint_ids': [{'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': '4fca89b8-237c-52bd-8131-9129316b524f'}}, {'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'}}]}, {'name': 'R1-T1.2', 'optical_details': {'src_port': '3', 'dst_port': '2', 'local_peer_port': '13', 'remote_peer_port': '2', 'c_slots': {'4': 1, '15': 1, '14': 1, '11': 1, '19': 1, '6': 1, '12': 1, '2': 1, '20': 1, '9': 1, '13': 1, '10': 1, '17': 1, '5': 1, '8': 1, '16': 1, '3': 1, '1': 1, '7': 1, '18': 1}, 'l_slots': {'118': 1, '104': 1, '103': 1, '112': 1, '107': 1, '102': 1, '105': 1, '109': 1, '110': 1, '108': 1, '120': 1, '106': 1, '114': 1, '117': 1, '101': 1, '119': 1, '113': 1, '111': 1, '116': 1, '115': 1}, 's_slots': {'502': 1, '501': 1, '508': 1, '514': 1, '506': 1, '509': 1, '513': 1, '518': 1, '504': 1, '505': 1, '515': 1, '517': 1, '520': 1, '519': 1, '512': 1, '510': 1, '516': 1, '507': 1, '503': 1, '511': 1}}, 'link_id': {'link_uuid': {'uuid': 'b11e2e7b-ef00-5c11-9dc6-5fd34bd11f6e'}}, 'link_endpoint_ids': [{'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': '1a8d66e2-5d94-520f-b94a-0aca4cfd891f'}}, {'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'}}]}, {'name': 'T2.3-R2', 'optical_details': {'src_port': '3', 'dst_port': '14', 'local_peer_port': '3', 'remote_peer_port': '4', 'c_slots': {'20': 1, '11': 1, '8': 1, '9': 1, '1': 1, '19': 1, '5': 1, '14': 1, '12': 1, '6': 1, '18': 1, '3': 1, '4': 1, '2': 1, '15': 1, '16': 1, '7': 1, '13': 1, '17': 1, '10': 1}, 'l_slots': {'119': 1, '111': 1, '120': 1, '113': 1, '115': 1, '105': 1, '117': 1, '108': 1, '104': 1, '106': 1, '103': 1, '107': 1, '114': 1, '109': 1, '116': 1, '101': 1, '102': 1, '112': 1, '110': 1, '118': 1}, 's_slots': {'504': 1, '508': 1, '506': 1, '512': 1, '502': 1, '507': 1, '520': 1, '501': 1, '516': 1, '514': 1, '511': 1, '518': 1, '510': 1, '503': 1, '517': 1, '515': 1, '519': 1, '505': 1, '513': 1, '509': 1}}, 'link_id': {'link_uuid': {'uuid': 'be7afc05-6e45-5899-896b-b331d6ab65c8'}}, 'link_endpoint_ids': [{'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': 'ac9e9079-6cf5-5d21-834d-1940c76fd78d'}}, {'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'}}]}, {'name': 'R2-T2.3', 'optical_details': {'src_port': '4', 'dst_port': '3', 'local_peer_port': '14', 'remote_peer_port': '3', 'c_slots': {'17': 1, '10': 1, '16': 1, '9': 1, '2': 1, '3': 1, '7': 1, '13': 1, '6': 1, '1': 1, '8': 1, '11': 1, '15': 1, '14': 1, '12': 1, '18': 1, '19': 1, '4': 1, '20': 1, '5': 1}, 'l_slots': {'103': 1, '102': 1, '114': 1, '111': 1, '117': 1, '115': 1, '108': 1, '113': 1, '109': 1, '116': 1, '118': 1, '120': 1, '110': 1, '104': 1, '112': 1, '119': 1, '106': 1, '101': 1, '105': 1, '107': 1}, 's_slots': {'512': 1, '518': 1, '503': 1, '516': 1, '504': 1, '520': 1, '513': 1, '511': 1, '501': 1, '517': 1, '519': 1, '514': 1, '507': 1, '506': 1, '509': 1, '505': 1, '502': 1, '510': 1, '508': 1, '515': 1}}, 'link_id': {'link_uuid': {'uuid': 'd4e89764-11c5-5f59-b7d6-a3aa2dab43df'}}, 'link_endpoint_ids': [{'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': '88a0bc2f-1ebf-5aca-b472-c339a1c302f9'}}, {'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'}}]}, {'name': 'R1-R2', 'optical_details': {'src_port': '101', 'dst_port': '111', 'local_peer_port': '111', 'remote_peer_port': '101', 'c_slots': {'3': 0, '20': 1, '16': 1, '9': 1, '6': 0, '14': 1, '13': 1, '12': 1, '1': 0, '15': 1, '7': 0, '2': 0, '8': 0, '4': 0, '5': 0, '18': 1, '10': 1, '11': 1, '17': 1, '19': 1}, 'l_slots': {'112': 1, '110': 1, '101': 1, '105': 1, '109': 1, '104': 1, '108': 1, '118': 1, '106': 1, '119': 1, '103': 1, '107': 1, '120': 1, '114': 1, '113': 1, '102': 1, '115': 1, '117': 1, '116': 1, '111': 1}, 's_slots': {'519': 1, '520': 1, '512': 1, '502': 1, '515': 1, '507': 1, '513': 1, '516': 1, '505': 1, '517': 1, '508': 1, '518': 1, '509': 1, '506': 1, '503': 1, '514': 1, '511': 1, '501': 1, '504': 1, '510': 1}}, 'link_id': {'link_uuid': {'uuid': 'e273644c-0dfa-5053-8850-0722995e7ba3'}}, 'link_endpoint_ids': [{'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': '811b34f9-112c-5cc5-a4e0-6e5f5e0bdada'}}, {'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': 'd777e553-af96-5ee7-a957-ce70b49e36ac'}}]}, {'name': 'T1.1-R1', 'optical_details': {'src_port': '1', 'dst_port': '12', 'local_peer_port': '1', 'remote_peer_port': '2', 'c_slots': {'4': 1, '3': 1, '10': 1, '9': 1, '2': 1, '13': 1, '8': 1, '6': 1, '17': 1, '5': 1, '20': 1, '1': 1, '18': 1, '14': 1, '19': 1, '11': 1, '15': 1, '12': 1, '7': 1, '16': 1}, 'l_slots': {'114': 1, '105': 1, '120': 1, '106': 1, '113': 1, '102': 1, '117': 1, '107': 1, '116': 1, '119': 1, '115': 1, '109': 1, '101': 1, '110': 1, '103': 1, '118': 1, '111': 1, '112': 1, '108': 1, '104': 1}, 's_slots': {'504': 1, '518': 1, '516': 1, '509': 1, '503': 1, '506': 1, '520': 1, '510': 1, '514': 1, '511': 1, '507': 1, '517': 1, '502': 1, '508': 1, '519': 1, '505': 1, '515': 1, '513': 1, '512': 1, '501': 1}}, 'link_id': {'link_uuid': {'uuid': 'e8bd9082-ebad-55b8-b110-7c21fddaf1cf'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': '68741528-2e94-5274-ab3c-fddcd8dc05ef'}}, 'endpoint_uuid': {'uuid': '690284c6-a8f7-54a0-82ed-19e721976221'}}]}, {'name': 'R2-R1', 'optical_details': {'src_port': '101', 'dst_port': '111', 'local_peer_port': '111', 'remote_peer_port': '101', 'c_slots': {'9': 1, '20': 1, '10': 1, '11': 1, '17': 1, '19': 1, '5': 1, '1': 1, '15': 1, '3': 1, '2': 1, '6': 1, '14': 1, '13': 1, '18': 1, '12': 1, '4': 1, '7': 1, '16': 1, '8': 1}, 'l_slots': {'101': 1, '119': 1, '111': 1, '116': 1, '109': 1, '103': 1, '110': 1, '106': 1, '105': 1, '102': 1, '108': 1, '114': 1, '113': 1, '112': 1, '104': 1, '117': 1, '118': 1, '107': 1, '120': 1, '115': 1}, 's_slots': {'518': 1, '505': 1, '506': 1, '514': 1, '516': 1, '502': 1, '501': 1, '508': 1, '509': 1, '519': 1, '520': 1, '517': 1, '515': 1, '512': 1, '511': 1, '504': 1, '503': 1, '510': 1, '507': 1, '513': 1}}, 'link_id': {'link_uuid': {'uuid': 'eae23f48-40de-5aae-b3d1-fa3cda231678'}}, 'link_endpoint_ids': [{'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': '4255273d-5038-512d-9838-d5dd921cb858'}}, {'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': 'f45593bb-41b1-50af-8944-524212ca012a'}}]}, {'name': 'T2.1-R2', 'optical_details': {'src_port': '1', 'dst_port': '12', 'local_peer_port': '1', 'remote_peer_port': '2', 'c_slots': {'18': 1, '6': 1, '16': 1, '7': 1, '2': 1, '4': 1, '3': 1, '17': 1, '11': 1, '20': 1, '15': 1, '19': 1, '10': 1, '9': 1, '5': 1, '13': 1, '8': 1, '1': 1, '12': 1, '14': 1}, 'l_slots': {'107': 1, '109': 1, '103': 1, '108': 1, '102': 1, '119': 1, '110': 1, '105': 1, '111': 1, '101': 1, '114': 1, '117': 1, '112': 1, '116': 1, '115': 1, '113': 1, '120': 1, '118': 1, '104': 1, '106': 1}, 's_slots': {'518': 1, '505': 1, '520': 1, '510': 1, '507': 1, '511': 1, '513': 1, '506': 1, '515': 1, '504': 1, '503': 1, '519': 1, '508': 1, '512': 1, '501': 1, '502': 1, '509': 1, '516': 1, '517': 1, '514': 1}}, 'link_id': {'link_uuid': {'uuid': 'ebb2ca0f-d4c1-51c4-ab41-dceea90f811f'}}, 'link_endpoint_ids': [{'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': '1b9f85aa-8cc9-5b9d-99dc-8f0eec714d67'}}, {'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'}}]}, {'name': 'T1.3-R1', 'optical_details': {'src_port': '3', 'dst_port': '14', 'local_peer_port': '3', 'remote_peer_port': '4', 'c_slots': {'5': 1, '9': 1, '4': 1, '2': 1, '10': 1, '16': 1, '17': 1, '8': 1, '19': 1, '11': 1, '20': 1, '7': 1, '14': 1, '1': 1, '12': 1, '3': 1, '6': 1, '18': 1, '15': 1, '13': 1}, 'l_slots': {'101': 1, '117': 1, '111': 1, '113': 1, '116': 1, '102': 1, '118': 1, '107': 1, '103': 1, '112': 1, '120': 1, '106': 1, '105': 1, '119': 1, '109': 1, '108': 1, '115': 1, '110': 1, '114': 1, '104': 1}, 's_slots': {'518': 1, '519': 1, '517': 1, '501': 1, '507': 1, '511': 1, '514': 1, '510': 1, '512': 1, '516': 1, '506': 1, '515': 1, '508': 1, '502': 1, '520': 1, '503': 1, '513': 1, '505': 1, '509': 1, '504': 1}}, 'link_id': {'link_uuid': {'uuid': 'f79a817c-a6a0-55d5-9398-a582a9835be9'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': '68741528-2e94-5274-ab3c-fddcd8dc05ef'}}, 'endpoint_uuid': {'uuid': 'dad62073-9e4f-5b05-947d-571e6c3a6068'}}]}]} -{'R1': {'f': {'in': '0', 'out': '101'}, 'b': {}}, 'R2': {'f': {'in': '111', 'out': '0'}, 'b': {}}} -INFO: Flow matrix computed -{'R1': {'f': {'in': '0', 'out': '101'}, 'b': {}}, 'R2': {'f': {'in': '111', 'out': '0'}, 'b': {}}} c_slots [1, 2, 3, 4, 5, 6, 7, 8] {} {} -[1, 2, 3, 4, 5, 6, 7, 8] -pari 8 -4 -192050.0 -192056250 100000 -INFO: RSA completed for optical band -['R1-R2'] -{'R1': {'f': {'in': '0', 'out': '101'}, 'b': {}}, 'R2': {'f': {'in': '111', 'out': '0'}, 'b': {}}} -{'name': 'R1-R2', 'optical_details': {'src_port': '101', 'dst_port': '111', 'local_peer_port': '111', 'remote_peer_port': '101', 'c_slots': {'3': 0, '20': 1, '16': 1, '9': 1, '6': 0, '14': 1, '13': 1, '12': 1, '1': 0, '15': 1, '7': 0, '2': 0, '8': 0, '4': 0, '5': 0, '18': 1, '10': 1, '11': 1, '17': 1, '19': 1}, 'l_slots': {'112': 1, '110': 1, '101': 1, '105': 1, '109': 1, '104': 1, '108': 1, '118': 1, '106': 1, '119': 1, '103': 1, '107': 1, '120': 1, '114': 1, '113': 1, '102': 1, '115': 1, '117': 1, '116': 1, '111': 1}, 's_slots': {'519': 1, '520': 1, '512': 1, '502': 1, '515': 1, '507': 1, '513': 1, '516': 1, '505': 1, '517': 1, '508': 1, '518': 1, '509': 1, '506': 1, '503': 1, '514': 1, '511': 1, '501': 1, '504': 1, '510': 1}}, 'link_id': {'link_uuid': {'uuid': 'e273644c-0dfa-5053-8850-0722995e7ba3'}}, 'link_endpoint_ids': [{'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': '811b34f9-112c-5cc5-a4e0-6e5f5e0bdada'}}, {'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': 'd777e553-af96-5ee7-a957-ce70b49e36ac'}}]} -['T1.1-R1', 'R2-T2.1'] -{'name': 'T1.1-R1', 'optical_details': {'src_port': '1', 'dst_port': '12', 'local_peer_port': '1', 'remote_peer_port': '2', 'c_slots': {'4': 1, '3': 1, '10': 1, '9': 1, '2': 1, '13': 1, '8': 1, '6': 1, '17': 1, '5': 1, '20': 1, '1': 1, '18': 1, '14': 1, '19': 1, '11': 1, '15': 1, '12': 1, '7': 1, '16': 1}, 'l_slots': {'114': 1, '105': 1, '120': 1, '106': 1, '113': 1, '102': 1, '117': 1, '107': 1, '116': 1, '119': 1, '115': 1, '109': 1, '101': 1, '110': 1, '103': 1, '118': 1, '111': 1, '112': 1, '108': 1, '104': 1}, 's_slots': {'504': 1, '518': 1, '516': 1, '509': 1, '503': 1, '506': 1, '520': 1, '510': 1, '514': 1, '511': 1, '507': 1, '517': 1, '502': 1, '508': 1, '519': 1, '505': 1, '515': 1, '513': 1, '512': 1, '501': 1}}, 'link_id': {'link_uuid': {'uuid': 'e8bd9082-ebad-55b8-b110-7c21fddaf1cf'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': '68741528-2e94-5274-ab3c-fddcd8dc05ef'}}, 'endpoint_uuid': {'uuid': '690284c6-a8f7-54a0-82ed-19e721976221'}}]} -T1.1-R1 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] -{'name': 'R2-T2.1', 'optical_details': {'src_port': '2', 'dst_port': '1', 'local_peer_port': '12', 'remote_peer_port': '1', 'c_slots': {'5': 1, '18': 1, '9': 1, '20': 1, '16': 1, '11': 1, '19': 1, '17': 1, '10': 1, '15': 1, '12': 1, '13': 1, '6': 1, '1': 1, '4': 1, '7': 1, '2': 1, '14': 1, '8': 1, '3': 1}, 'l_slots': {'109': 1, '112': 1, '106': 1, '110': 1, '101': 1, '111': 1, '119': 1, '115': 1, '108': 1, '103': 1, '118': 1, '102': 1, '104': 1, '105': 1, '114': 1, '116': 1, '117': 1, '120': 1, '113': 1, '107': 1}, 's_slots': {'513': 1, '505': 1, '502': 1, '507': 1, '516': 1, '508': 1, '501': 1, '517': 1, '503': 1, '506': 1, '520': 1, '518': 1, '504': 1, '512': 1, '510': 1, '515': 1, '511': 1, '519': 1, '514': 1, '509': 1}}, 'link_id': {'link_uuid': {'uuid': '5ba1d9b6-120a-5680-b745-2ea24aec1cc3'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': 'c944aaeb-bbdf-5f2d-b31c-8cc8903045b6'}}, 'endpoint_uuid': {'uuid': 'd1e7e6c7-f1d7-56f3-be32-8982a72966f6'}}]} -R2-T2.1 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] -2 -T1.1-R1 -R2-T2.1 -[1, 2, 3, 4, 5, 6, 7, 8] -[] -[] -{'optical_links': [{'name': 'R2-T2.1', 'optical_details': {'src_port': '2', 'dst_port': '1', 'local_peer_port': '12', 'remote_peer_port': '1', 'c_slots': {'5': 1, '18': 1, '9': 1, '20': 1, '16': 1, '11': 1, '19': 1, '17': 1, '10': 1, '15': 1, '12': 1, '13': 1, '6': 1, '1': 1, '4': 1, '7': 1, '2': 1, '14': 1, '8': 1, '3': 1}, 'l_slots': {'109': 1, '112': 1, '106': 1, '110': 1, '101': 1, '111': 1, '119': 1, '115': 1, '108': 1, '103': 1, '118': 1, '102': 1, '104': 1, '105': 1, '114': 1, '116': 1, '117': 1, '120': 1, '113': 1, '107': 1}, 's_slots': {'513': 1, '505': 1, '502': 1, '507': 1, '516': 1, '508': 1, '501': 1, '517': 1, '503': 1, '506': 1, '520': 1, '518': 1, '504': 1, '512': 1, '510': 1, '515': 1, '511': 1, '519': 1, '514': 1, '509': 1}}, 'link_id': {'link_uuid': {'uuid': '5ba1d9b6-120a-5680-b745-2ea24aec1cc3'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': 'c944aaeb-bbdf-5f2d-b31c-8cc8903045b6'}}, 'endpoint_uuid': {'uuid': 'd1e7e6c7-f1d7-56f3-be32-8982a72966f6'}}]}, {'name': 'R2-T2.2', 'optical_details': {'src_port': '3', 'dst_port': '2', 'local_peer_port': '13', 'remote_peer_port': '2', 'c_slots': {'17': 1, '16': 1, '3': 1, '18': 1, '4': 1, '5': 1, '8': 1, '15': 1, '6': 1, '1': 1, '2': 1, '10': 1, '19': 1, '9': 1, '13': 1, '12': 1, '14': 1, '11': 1, '7': 1, '20': 1}, 'l_slots': {'113': 1, '119': 1, '102': 1, '115': 1, '114': 1, '104': 1, '107': 1, '120': 1, '112': 1, '118': 1, '116': 1, '109': 1, '108': 1, '105': 1, '110': 1, '103': 1, '111': 1, '101': 1, '117': 1, '106': 1}, 's_slots': {'517': 1, '501': 1, '520': 1, '508': 1, '503': 1, '504': 1, '510': 1, '511': 1, '514': 1, '513': 1, '505': 1, '518': 1, '502': 1, '509': 1, '507': 1, '506': 1, '516': 1, '515': 1, '512': 1, '519': 1}}, 'link_id': {'link_uuid': {'uuid': '5f9f4309-d24d-52e0-9d60-ba84839a5bda'}}, 'link_endpoint_ids': [{'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': '463f5b52-bb8e-54e7-a63d-aeb4ad4b72bc'}}, {'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'}}]}, {'name': 'R1-T1.1', 'optical_details': {'src_port': '2', 'dst_port': '1', 'local_peer_port': '12', 'remote_peer_port': '1', 'c_slots': {'11': 1, '12': 1, '1': 1, '4': 1, '7': 1, '15': 1, '10': 1, '9': 1, '8': 1, '3': 1, '6': 1, '19': 1, '14': 1, '2': 1, '16': 1, '13': 1, '17': 1, '18': 1, '5': 1, '20': 1}, 'l_slots': {'118': 1, '112': 1, '107': 1, '115': 1, '108': 1, '101': 1, '113': 1, '103': 1, '117': 1, '114': 1, '109': 1, '120': 1, '119': 1, '105': 1, '110': 1, '104': 1, '106': 1, '111': 1, '102': 1, '116': 1}, 's_slots': {'509': 1, '504': 1, '503': 1, '505': 1, '520': 1, '507': 1, '502': 1, '511': 1, '513': 1, '519': 1, '508': 1, '510': 1, '516': 1, '517': 1, '506': 1, '501': 1, '518': 1, '515': 1, '514': 1, '512': 1}}, 'link_id': {'link_uuid': {'uuid': '63c6a257-f171-59f8-b1e8-e3c4086ba36a'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': '68741528-2e94-5274-ab3c-fddcd8dc05ef'}}, 'endpoint_uuid': {'uuid': 'c7b7a565-0469-5463-809b-8ef4851d89c4'}}]}, {'name': 'T1.2-R1', 'optical_details': {'src_port': '2', 'dst_port': '13', 'local_peer_port': '2', 'remote_peer_port': '3', 'c_slots': {'2': 1, '1': 1, '7': 1, '10': 1, '13': 1, '19': 1, '11': 1, '15': 1, '16': 1, '18': 1, '9': 1, '20': 1, '12': 1, '5': 1, '14': 1, '4': 1, '8': 1, '17': 1, '3': 1, '6': 1}, 'l_slots': {'110': 1, '102': 1, '109': 1, '119': 1, '113': 1, '117': 1, '120': 1, '105': 1, '114': 1, '103': 1, '104': 1, '118': 1, '108': 1, '112': 1, '101': 1, '116': 1, '115': 1, '111': 1, '106': 1, '107': 1}, 's_slots': {'510': 1, '506': 1, '505': 1, '512': 1, '502': 1, '516': 1, '507': 1, '514': 1, '511': 1, '517': 1, '513': 1, '503': 1, '508': 1, '519': 1, '518': 1, '504': 1, '501': 1, '515': 1, '520': 1, '509': 1}}, 'link_id': {'link_uuid': {'uuid': '817a2fcb-5dfd-55a6-b669-a141014cc38d'}}, 'link_endpoint_ids': [{'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': '27b6ed2a-b0d1-5be9-b9be-cc9a540ac0d1'}}, {'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'}}]}, {'name': 'T2.2-R2', 'optical_details': {'src_port': '2', 'dst_port': '13', 'local_peer_port': '2', 'remote_peer_port': '3', 'c_slots': {'18': 1, '14': 1, '2': 1, '8': 1, '4': 1, '5': 1, '17': 1, '20': 1, '9': 1, '19': 1, '11': 1, '12': 1, '1': 1, '15': 1, '16': 1, '3': 1, '7': 1, '10': 1, '6': 1, '13': 1}, 'l_slots': {'120': 1, '118': 1, '111': 1, '110': 1, '116': 1, '104': 1, '117': 1, '102': 1, '109': 1, '114': 1, '119': 1, '103': 1, '115': 1, '113': 1, '107': 1, '105': 1, '106': 1, '108': 1, '101': 1, '112': 1}, 's_slots': {'513': 1, '506': 1, '510': 1, '504': 1, '502': 1, '512': 1, '515': 1, '501': 1, '507': 1, '518': 1, '520': 1, '511': 1, '505': 1, '514': 1, '503': 1, '519': 1, '516': 1, '508': 1, '509': 1, '517': 1}}, 'link_id': {'link_uuid': {'uuid': '884c6c6a-ad1b-5228-a48f-e9db4bc174df'}}, 'link_endpoint_ids': [{'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': 'be24d4af-c784-50cc-baa4-976a499fcd5a'}}, {'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'}}]}, {'name': 'R1-T1.3', 'optical_details': {'src_port': '4', 'dst_port': '3', 'local_peer_port': '14', 'remote_peer_port': '3', 'c_slots': {'18': 1, '14': 1, '15': 1, '7': 1, '4': 1, '5': 1, '12': 1, '8': 1, '2': 1, '13': 1, '20': 1, '16': 1, '17': 1, '1': 1, '19': 1, '9': 1, '11': 1, '6': 1, '10': 1, '3': 1}, 'l_slots': {'119': 1, '107': 1, '103': 1, '108': 1, '116': 1, '105': 1, '120': 1, '113': 1, '114': 1, '106': 1, '104': 1, '109': 1, '110': 1, '101': 1, '112': 1, '111': 1, '117': 1, '102': 1, '115': 1, '118': 1}, 's_slots': {'505': 1, '501': 1, '519': 1, '503': 1, '502': 1, '510': 1, '517': 1, '518': 1, '506': 1, '515': 1, '514': 1, '507': 1, '511': 1, '504': 1, '512': 1, '516': 1, '508': 1, '509': 1, '520': 1, '513': 1}}, 'link_id': {'link_uuid': {'uuid': '89e3a6c6-d613-55bf-925c-c817ee24a133'}}, 'link_endpoint_ids': [{'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': '4fca89b8-237c-52bd-8131-9129316b524f'}}, {'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'}}]}, {'name': 'R1-T1.2', 'optical_details': {'src_port': '3', 'dst_port': '2', 'local_peer_port': '13', 'remote_peer_port': '2', 'c_slots': {'4': 1, '15': 1, '14': 1, '11': 1, '19': 1, '6': 1, '12': 1, '2': 1, '20': 1, '9': 1, '13': 1, '10': 1, '17': 1, '5': 1, '8': 1, '16': 1, '3': 1, '1': 1, '7': 1, '18': 1}, 'l_slots': {'118': 1, '104': 1, '103': 1, '112': 1, '107': 1, '102': 1, '105': 1, '109': 1, '110': 1, '108': 1, '120': 1, '106': 1, '114': 1, '117': 1, '101': 1, '119': 1, '113': 1, '111': 1, '116': 1, '115': 1}, 's_slots': {'502': 1, '501': 1, '508': 1, '514': 1, '506': 1, '509': 1, '513': 1, '518': 1, '504': 1, '505': 1, '515': 1, '517': 1, '520': 1, '519': 1, '512': 1, '510': 1, '516': 1, '507': 1, '503': 1, '511': 1}}, 'link_id': {'link_uuid': {'uuid': 'b11e2e7b-ef00-5c11-9dc6-5fd34bd11f6e'}}, 'link_endpoint_ids': [{'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': '1a8d66e2-5d94-520f-b94a-0aca4cfd891f'}}, {'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'}}]}, {'name': 'T2.3-R2', 'optical_details': {'src_port': '3', 'dst_port': '14', 'local_peer_port': '3', 'remote_peer_port': '4', 'c_slots': {'20': 1, '11': 1, '8': 1, '9': 1, '1': 1, '19': 1, '5': 1, '14': 1, '12': 1, '6': 1, '18': 1, '3': 1, '4': 1, '2': 1, '15': 1, '16': 1, '7': 1, '13': 1, '17': 1, '10': 1}, 'l_slots': {'119': 1, '111': 1, '120': 1, '113': 1, '115': 1, '105': 1, '117': 1, '108': 1, '104': 1, '106': 1, '103': 1, '107': 1, '114': 1, '109': 1, '116': 1, '101': 1, '102': 1, '112': 1, '110': 1, '118': 1}, 's_slots': {'504': 1, '508': 1, '506': 1, '512': 1, '502': 1, '507': 1, '520': 1, '501': 1, '516': 1, '514': 1, '511': 1, '518': 1, '510': 1, '503': 1, '517': 1, '515': 1, '519': 1, '505': 1, '513': 1, '509': 1}}, 'link_id': {'link_uuid': {'uuid': 'be7afc05-6e45-5899-896b-b331d6ab65c8'}}, 'link_endpoint_ids': [{'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': 'ac9e9079-6cf5-5d21-834d-1940c76fd78d'}}, {'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'}}]}, {'name': 'R2-T2.3', 'optical_details': {'src_port': '4', 'dst_port': '3', 'local_peer_port': '14', 'remote_peer_port': '3', 'c_slots': {'17': 1, '10': 1, '16': 1, '9': 1, '2': 1, '3': 1, '7': 1, '13': 1, '6': 1, '1': 1, '8': 1, '11': 1, '15': 1, '14': 1, '12': 1, '18': 1, '19': 1, '4': 1, '20': 1, '5': 1}, 'l_slots': {'103': 1, '102': 1, '114': 1, '111': 1, '117': 1, '115': 1, '108': 1, '113': 1, '109': 1, '116': 1, '118': 1, '120': 1, '110': 1, '104': 1, '112': 1, '119': 1, '106': 1, '101': 1, '105': 1, '107': 1}, 's_slots': {'512': 1, '518': 1, '503': 1, '516': 1, '504': 1, '520': 1, '513': 1, '511': 1, '501': 1, '517': 1, '519': 1, '514': 1, '507': 1, '506': 1, '509': 1, '505': 1, '502': 1, '510': 1, '508': 1, '515': 1}}, 'link_id': {'link_uuid': {'uuid': 'd4e89764-11c5-5f59-b7d6-a3aa2dab43df'}}, 'link_endpoint_ids': [{'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': '88a0bc2f-1ebf-5aca-b472-c339a1c302f9'}}, {'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'}}]}, {'name': 'R1-R2', 'optical_details': {'src_port': '101', 'dst_port': '111', 'local_peer_port': '111', 'remote_peer_port': '101', 'c_slots': {'3': 0, '20': 1, '16': 1, '9': 1, '6': 0, '14': 1, '13': 1, '12': 1, '1': 0, '15': 1, '7': 0, '2': 0, '8': 0, '4': 0, '5': 0, '18': 1, '10': 1, '11': 1, '17': 1, '19': 1}, 'l_slots': {'112': 1, '110': 1, '101': 1, '105': 1, '109': 1, '104': 1, '108': 1, '118': 1, '106': 1, '119': 1, '103': 1, '107': 1, '120': 1, '114': 1, '113': 1, '102': 1, '115': 1, '117': 1, '116': 1, '111': 1}, 's_slots': {'519': 1, '520': 1, '512': 1, '502': 1, '515': 1, '507': 1, '513': 1, '516': 1, '505': 1, '517': 1, '508': 1, '518': 1, '509': 1, '506': 1, '503': 1, '514': 1, '511': 1, '501': 1, '504': 1, '510': 1}}, 'link_id': {'link_uuid': {'uuid': 'e273644c-0dfa-5053-8850-0722995e7ba3'}}, 'link_endpoint_ids': [{'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': '811b34f9-112c-5cc5-a4e0-6e5f5e0bdada'}}, {'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': 'd777e553-af96-5ee7-a957-ce70b49e36ac'}}]}, {'name': 'T1.1-R1', 'optical_details': {'src_port': '1', 'dst_port': '12', 'local_peer_port': '1', 'remote_peer_port': '2', 'c_slots': {'4': 1, '3': 1, '10': 1, '9': 1, '2': 1, '13': 1, '8': 1, '6': 1, '17': 1, '5': 1, '20': 1, '1': 1, '18': 1, '14': 1, '19': 1, '11': 1, '15': 1, '12': 1, '7': 1, '16': 1}, 'l_slots': {'114': 1, '105': 1, '120': 1, '106': 1, '113': 1, '102': 1, '117': 1, '107': 1, '116': 1, '119': 1, '115': 1, '109': 1, '101': 1, '110': 1, '103': 1, '118': 1, '111': 1, '112': 1, '108': 1, '104': 1}, 's_slots': {'504': 1, '518': 1, '516': 1, '509': 1, '503': 1, '506': 1, '520': 1, '510': 1, '514': 1, '511': 1, '507': 1, '517': 1, '502': 1, '508': 1, '519': 1, '505': 1, '515': 1, '513': 1, '512': 1, '501': 1}}, 'link_id': {'link_uuid': {'uuid': 'e8bd9082-ebad-55b8-b110-7c21fddaf1cf'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': '68741528-2e94-5274-ab3c-fddcd8dc05ef'}}, 'endpoint_uuid': {'uuid': '690284c6-a8f7-54a0-82ed-19e721976221'}}]}, {'name': 'R2-R1', 'optical_details': {'src_port': '101', 'dst_port': '111', 'local_peer_port': '111', 'remote_peer_port': '101', 'c_slots': {'9': 1, '20': 1, '10': 1, '11': 1, '17': 1, '19': 1, '5': 1, '1': 1, '15': 1, '3': 1, '2': 1, '6': 1, '14': 1, '13': 1, '18': 1, '12': 1, '4': 1, '7': 1, '16': 1, '8': 1}, 'l_slots': {'101': 1, '119': 1, '111': 1, '116': 1, '109': 1, '103': 1, '110': 1, '106': 1, '105': 1, '102': 1, '108': 1, '114': 1, '113': 1, '112': 1, '104': 1, '117': 1, '118': 1, '107': 1, '120': 1, '115': 1}, 's_slots': {'518': 1, '505': 1, '506': 1, '514': 1, '516': 1, '502': 1, '501': 1, '508': 1, '509': 1, '519': 1, '520': 1, '517': 1, '515': 1, '512': 1, '511': 1, '504': 1, '503': 1, '510': 1, '507': 1, '513': 1}}, 'link_id': {'link_uuid': {'uuid': 'eae23f48-40de-5aae-b3d1-fa3cda231678'}}, 'link_endpoint_ids': [{'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': '4255273d-5038-512d-9838-d5dd921cb858'}}, {'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': 'f45593bb-41b1-50af-8944-524212ca012a'}}]}, {'name': 'T2.1-R2', 'optical_details': {'src_port': '1', 'dst_port': '12', 'local_peer_port': '1', 'remote_peer_port': '2', 'c_slots': {'18': 1, '6': 1, '16': 1, '7': 1, '2': 1, '4': 1, '3': 1, '17': 1, '11': 1, '20': 1, '15': 1, '19': 1, '10': 1, '9': 1, '5': 1, '13': 1, '8': 1, '1': 1, '12': 1, '14': 1}, 'l_slots': {'107': 1, '109': 1, '103': 1, '108': 1, '102': 1, '119': 1, '110': 1, '105': 1, '111': 1, '101': 1, '114': 1, '117': 1, '112': 1, '116': 1, '115': 1, '113': 1, '120': 1, '118': 1, '104': 1, '106': 1}, 's_slots': {'518': 1, '505': 1, '520': 1, '510': 1, '507': 1, '511': 1, '513': 1, '506': 1, '515': 1, '504': 1, '503': 1, '519': 1, '508': 1, '512': 1, '501': 1, '502': 1, '509': 1, '516': 1, '517': 1, '514': 1}}, 'link_id': {'link_uuid': {'uuid': 'ebb2ca0f-d4c1-51c4-ab41-dceea90f811f'}}, 'link_endpoint_ids': [{'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': '1b9f85aa-8cc9-5b9d-99dc-8f0eec714d67'}}, {'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'}}]}, {'name': 'T1.3-R1', 'optical_details': {'src_port': '3', 'dst_port': '14', 'local_peer_port': '3', 'remote_peer_port': '4', 'c_slots': {'5': 1, '9': 1, '4': 1, '2': 1, '10': 1, '16': 1, '17': 1, '8': 1, '19': 1, '11': 1, '20': 1, '7': 1, '14': 1, '1': 1, '12': 1, '3': 1, '6': 1, '18': 1, '15': 1, '13': 1}, 'l_slots': {'101': 1, '117': 1, '111': 1, '113': 1, '116': 1, '102': 1, '118': 1, '107': 1, '103': 1, '112': 1, '120': 1, '106': 1, '105': 1, '119': 1, '109': 1, '108': 1, '115': 1, '110': 1, '114': 1, '104': 1}, 's_slots': {'518': 1, '519': 1, '517': 1, '501': 1, '507': 1, '511': 1, '514': 1, '510': 1, '512': 1, '516': 1, '506': 1, '515': 1, '508': 1, '502': 1, '520': 1, '503': 1, '513': 1, '505': 1, '509': 1, '504': 1}}, 'link_id': {'link_uuid': {'uuid': 'f79a817c-a6a0-55d5-9398-a582a9835be9'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': '68741528-2e94-5274-ab3c-fddcd8dc05ef'}}, 'endpoint_uuid': {'uuid': 'dad62073-9e4f-5b05-947d-571e6c3a6068'}}]}]} -c_slots [1, 2, 3, 4] -INFO: Path forward computation completed -{'name': 'T1.1-R1', 'optical_details': {'src_port': '1', 'dst_port': '12', 'local_peer_port': '1', 'remote_peer_port': '2', 'c_slots': {'4': 0, '3': 0, '10': 1, '9': 1, '2': 0, '13': 1, '8': 1, '6': 1, '17': 1, '5': 1, '20': 1, '1': 0, '18': 1, '14': 1, '19': 1, '11': 1, '15': 1, '12': 1, '7': 1, '16': 1}, 'l_slots': {'114': 1, '105': 1, '120': 1, '106': 1, '113': 1, '102': 1, '117': 1, '107': 1, '116': 1, '119': 1, '115': 1, '109': 1, '101': 1, '110': 1, '103': 1, '118': 1, '111': 1, '112': 1, '108': 1, '104': 1}, 's_slots': {'504': 1, '518': 1, '516': 1, '509': 1, '503': 1, '506': 1, '520': 1, '510': 1, '514': 1, '511': 1, '507': 1, '517': 1, '502': 1, '508': 1, '519': 1, '505': 1, '515': 1, '513': 1, '512': 1, '501': 1}}, 'link_id': {'link_uuid': {'uuid': 'e8bd9082-ebad-55b8-b110-7c21fddaf1cf'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': '68741528-2e94-5274-ab3c-fddcd8dc05ef'}}, 'endpoint_uuid': {'uuid': '690284c6-a8f7-54a0-82ed-19e721976221'}}]} -{'name': 'R2-T2.1', 'optical_details': {'src_port': '2', 'dst_port': '1', 'local_peer_port': '12', 'remote_peer_port': '1', 'c_slots': {'5': 1, '18': 1, '9': 1, '20': 1, '16': 1, '11': 1, '19': 1, '17': 1, '10': 1, '15': 1, '12': 1, '13': 1, '6': 1, '1': 0, '4': 0, '7': 1, '2': 0, '14': 1, '8': 1, '3': 0}, 'l_slots': {'109': 1, '112': 1, '106': 1, '110': 1, '101': 1, '111': 1, '119': 1, '115': 1, '108': 1, '103': 1, '118': 1, '102': 1, '104': 1, '105': 1, '114': 1, '116': 1, '117': 1, '120': 1, '113': 1, '107': 1}, 's_slots': {'513': 1, '505': 1, '502': 1, '507': 1, '516': 1, '508': 1, '501': 1, '517': 1, '503': 1, '506': 1, '520': 1, '518': 1, '504': 1, '512': 1, '510': 1, '515': 1, '511': 1, '519': 1, '514': 1, '509': 1}}, 'link_id': {'link_uuid': {'uuid': '5ba1d9b6-120a-5680-b745-2ea24aec1cc3'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': 'c944aaeb-bbdf-5f2d-b31c-8cc8903045b6'}}, 'endpoint_uuid': {'uuid': 'd1e7e6c7-f1d7-56f3-be32-8982a72966f6'}}]} -{'optical_links': [{'name': 'R2-T2.1', 'optical_details': {'src_port': '2', 'dst_port': '1', 'local_peer_port': '12', 'remote_peer_port': '1', 'c_slots': {'5': 1, '18': 1, '9': 1, '20': 1, '16': 1, '11': 1, '19': 1, '17': 1, '10': 1, '15': 1, '12': 1, '13': 1, '6': 1, '1': 0, '4': 0, '7': 1, '2': 0, '14': 1, '8': 1, '3': 0}, 'l_slots': {'109': 1, '112': 1, '106': 1, '110': 1, '101': 1, '111': 1, '119': 1, '115': 1, '108': 1, '103': 1, '118': 1, '102': 1, '104': 1, '105': 1, '114': 1, '116': 1, '117': 1, '120': 1, '113': 1, '107': 1}, 's_slots': {'513': 1, '505': 1, '502': 1, '507': 1, '516': 1, '508': 1, '501': 1, '517': 1, '503': 1, '506': 1, '520': 1, '518': 1, '504': 1, '512': 1, '510': 1, '515': 1, '511': 1, '519': 1, '514': 1, '509': 1}}, 'link_id': {'link_uuid': {'uuid': '5ba1d9b6-120a-5680-b745-2ea24aec1cc3'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': 'c944aaeb-bbdf-5f2d-b31c-8cc8903045b6'}}, 'endpoint_uuid': {'uuid': 'd1e7e6c7-f1d7-56f3-be32-8982a72966f6'}}]}, {'name': 'R2-T2.2', 'optical_details': {'src_port': '3', 'dst_port': '2', 'local_peer_port': '13', 'remote_peer_port': '2', 'c_slots': {'17': 1, '16': 1, '3': 1, '18': 1, '4': 1, '5': 1, '8': 1, '15': 1, '6': 1, '1': 1, '2': 1, '10': 1, '19': 1, '9': 1, '13': 1, '12': 1, '14': 1, '11': 1, '7': 1, '20': 1}, 'l_slots': {'113': 1, '119': 1, '102': 1, '115': 1, '114': 1, '104': 1, '107': 1, '120': 1, '112': 1, '118': 1, '116': 1, '109': 1, '108': 1, '105': 1, '110': 1, '103': 1, '111': 1, '101': 1, '117': 1, '106': 1}, 's_slots': {'517': 1, '501': 1, '520': 1, '508': 1, '503': 1, '504': 1, '510': 1, '511': 1, '514': 1, '513': 1, '505': 1, '518': 1, '502': 1, '509': 1, '507': 1, '506': 1, '516': 1, '515': 1, '512': 1, '519': 1}}, 'link_id': {'link_uuid': {'uuid': '5f9f4309-d24d-52e0-9d60-ba84839a5bda'}}, 'link_endpoint_ids': [{'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': '463f5b52-bb8e-54e7-a63d-aeb4ad4b72bc'}}, {'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'}}]}, {'name': 'R1-T1.1', 'optical_details': {'src_port': '2', 'dst_port': '1', 'local_peer_port': '12', 'remote_peer_port': '1', 'c_slots': {'11': 1, '12': 1, '1': 1, '4': 1, '7': 1, '15': 1, '10': 1, '9': 1, '8': 1, '3': 1, '6': 1, '19': 1, '14': 1, '2': 1, '16': 1, '13': 1, '17': 1, '18': 1, '5': 1, '20': 1}, 'l_slots': {'118': 1, '112': 1, '107': 1, '115': 1, '108': 1, '101': 1, '113': 1, '103': 1, '117': 1, '114': 1, '109': 1, '120': 1, '119': 1, '105': 1, '110': 1, '104': 1, '106': 1, '111': 1, '102': 1, '116': 1}, 's_slots': {'509': 1, '504': 1, '503': 1, '505': 1, '520': 1, '507': 1, '502': 1, '511': 1, '513': 1, '519': 1, '508': 1, '510': 1, '516': 1, '517': 1, '506': 1, '501': 1, '518': 1, '515': 1, '514': 1, '512': 1}}, 'link_id': {'link_uuid': {'uuid': '63c6a257-f171-59f8-b1e8-e3c4086ba36a'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': '68741528-2e94-5274-ab3c-fddcd8dc05ef'}}, 'endpoint_uuid': {'uuid': 'c7b7a565-0469-5463-809b-8ef4851d89c4'}}]}, {'name': 'T1.2-R1', 'optical_details': {'src_port': '2', 'dst_port': '13', 'local_peer_port': '2', 'remote_peer_port': '3', 'c_slots': {'2': 1, '1': 1, '7': 1, '10': 1, '13': 1, '19': 1, '11': 1, '15': 1, '16': 1, '18': 1, '9': 1, '20': 1, '12': 1, '5': 1, '14': 1, '4': 1, '8': 1, '17': 1, '3': 1, '6': 1}, 'l_slots': {'110': 1, '102': 1, '109': 1, '119': 1, '113': 1, '117': 1, '120': 1, '105': 1, '114': 1, '103': 1, '104': 1, '118': 1, '108': 1, '112': 1, '101': 1, '116': 1, '115': 1, '111': 1, '106': 1, '107': 1}, 's_slots': {'510': 1, '506': 1, '505': 1, '512': 1, '502': 1, '516': 1, '507': 1, '514': 1, '511': 1, '517': 1, '513': 1, '503': 1, '508': 1, '519': 1, '518': 1, '504': 1, '501': 1, '515': 1, '520': 1, '509': 1}}, 'link_id': {'link_uuid': {'uuid': '817a2fcb-5dfd-55a6-b669-a141014cc38d'}}, 'link_endpoint_ids': [{'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': '27b6ed2a-b0d1-5be9-b9be-cc9a540ac0d1'}}, {'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'}}]}, {'name': 'T2.2-R2', 'optical_details': {'src_port': '2', 'dst_port': '13', 'local_peer_port': '2', 'remote_peer_port': '3', 'c_slots': {'18': 1, '14': 1, '2': 1, '8': 1, '4': 1, '5': 1, '17': 1, '20': 1, '9': 1, '19': 1, '11': 1, '12': 1, '1': 1, '15': 1, '16': 1, '3': 1, '7': 1, '10': 1, '6': 1, '13': 1}, 'l_slots': {'120': 1, '118': 1, '111': 1, '110': 1, '116': 1, '104': 1, '117': 1, '102': 1, '109': 1, '114': 1, '119': 1, '103': 1, '115': 1, '113': 1, '107': 1, '105': 1, '106': 1, '108': 1, '101': 1, '112': 1}, 's_slots': {'513': 1, '506': 1, '510': 1, '504': 1, '502': 1, '512': 1, '515': 1, '501': 1, '507': 1, '518': 1, '520': 1, '511': 1, '505': 1, '514': 1, '503': 1, '519': 1, '516': 1, '508': 1, '509': 1, '517': 1}}, 'link_id': {'link_uuid': {'uuid': '884c6c6a-ad1b-5228-a48f-e9db4bc174df'}}, 'link_endpoint_ids': [{'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': 'be24d4af-c784-50cc-baa4-976a499fcd5a'}}, {'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'}}]}, {'name': 'R1-T1.3', 'optical_details': {'src_port': '4', 'dst_port': '3', 'local_peer_port': '14', 'remote_peer_port': '3', 'c_slots': {'18': 1, '14': 1, '15': 1, '7': 1, '4': 1, '5': 1, '12': 1, '8': 1, '2': 1, '13': 1, '20': 1, '16': 1, '17': 1, '1': 1, '19': 1, '9': 1, '11': 1, '6': 1, '10': 1, '3': 1}, 'l_slots': {'119': 1, '107': 1, '103': 1, '108': 1, '116': 1, '105': 1, '120': 1, '113': 1, '114': 1, '106': 1, '104': 1, '109': 1, '110': 1, '101': 1, '112': 1, '111': 1, '117': 1, '102': 1, '115': 1, '118': 1}, 's_slots': {'505': 1, '501': 1, '519': 1, '503': 1, '502': 1, '510': 1, '517': 1, '518': 1, '506': 1, '515': 1, '514': 1, '507': 1, '511': 1, '504': 1, '512': 1, '516': 1, '508': 1, '509': 1, '520': 1, '513': 1}}, 'link_id': {'link_uuid': {'uuid': '89e3a6c6-d613-55bf-925c-c817ee24a133'}}, 'link_endpoint_ids': [{'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': '4fca89b8-237c-52bd-8131-9129316b524f'}}, {'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'}}]}, {'name': 'R1-T1.2', 'optical_details': {'src_port': '3', 'dst_port': '2', 'local_peer_port': '13', 'remote_peer_port': '2', 'c_slots': {'4': 1, '15': 1, '14': 1, '11': 1, '19': 1, '6': 1, '12': 1, '2': 1, '20': 1, '9': 1, '13': 1, '10': 1, '17': 1, '5': 1, '8': 1, '16': 1, '3': 1, '1': 1, '7': 1, '18': 1}, 'l_slots': {'118': 1, '104': 1, '103': 1, '112': 1, '107': 1, '102': 1, '105': 1, '109': 1, '110': 1, '108': 1, '120': 1, '106': 1, '114': 1, '117': 1, '101': 1, '119': 1, '113': 1, '111': 1, '116': 1, '115': 1}, 's_slots': {'502': 1, '501': 1, '508': 1, '514': 1, '506': 1, '509': 1, '513': 1, '518': 1, '504': 1, '505': 1, '515': 1, '517': 1, '520': 1, '519': 1, '512': 1, '510': 1, '516': 1, '507': 1, '503': 1, '511': 1}}, 'link_id': {'link_uuid': {'uuid': 'b11e2e7b-ef00-5c11-9dc6-5fd34bd11f6e'}}, 'link_endpoint_ids': [{'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': '1a8d66e2-5d94-520f-b94a-0aca4cfd891f'}}, {'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'}}]}, {'name': 'T2.3-R2', 'optical_details': {'src_port': '3', 'dst_port': '14', 'local_peer_port': '3', 'remote_peer_port': '4', 'c_slots': {'20': 1, '11': 1, '8': 1, '9': 1, '1': 1, '19': 1, '5': 1, '14': 1, '12': 1, '6': 1, '18': 1, '3': 1, '4': 1, '2': 1, '15': 1, '16': 1, '7': 1, '13': 1, '17': 1, '10': 1}, 'l_slots': {'119': 1, '111': 1, '120': 1, '113': 1, '115': 1, '105': 1, '117': 1, '108': 1, '104': 1, '106': 1, '103': 1, '107': 1, '114': 1, '109': 1, '116': 1, '101': 1, '102': 1, '112': 1, '110': 1, '118': 1}, 's_slots': {'504': 1, '508': 1, '506': 1, '512': 1, '502': 1, '507': 1, '520': 1, '501': 1, '516': 1, '514': 1, '511': 1, '518': 1, '510': 1, '503': 1, '517': 1, '515': 1, '519': 1, '505': 1, '513': 1, '509': 1}}, 'link_id': {'link_uuid': {'uuid': 'be7afc05-6e45-5899-896b-b331d6ab65c8'}}, 'link_endpoint_ids': [{'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': 'ac9e9079-6cf5-5d21-834d-1940c76fd78d'}}, {'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'}}]}, {'name': 'R2-T2.3', 'optical_details': {'src_port': '4', 'dst_port': '3', 'local_peer_port': '14', 'remote_peer_port': '3', 'c_slots': {'17': 1, '10': 1, '16': 1, '9': 1, '2': 1, '3': 1, '7': 1, '13': 1, '6': 1, '1': 1, '8': 1, '11': 1, '15': 1, '14': 1, '12': 1, '18': 1, '19': 1, '4': 1, '20': 1, '5': 1}, 'l_slots': {'103': 1, '102': 1, '114': 1, '111': 1, '117': 1, '115': 1, '108': 1, '113': 1, '109': 1, '116': 1, '118': 1, '120': 1, '110': 1, '104': 1, '112': 1, '119': 1, '106': 1, '101': 1, '105': 1, '107': 1}, 's_slots': {'512': 1, '518': 1, '503': 1, '516': 1, '504': 1, '520': 1, '513': 1, '511': 1, '501': 1, '517': 1, '519': 1, '514': 1, '507': 1, '506': 1, '509': 1, '505': 1, '502': 1, '510': 1, '508': 1, '515': 1}}, 'link_id': {'link_uuid': {'uuid': 'd4e89764-11c5-5f59-b7d6-a3aa2dab43df'}}, 'link_endpoint_ids': [{'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': '88a0bc2f-1ebf-5aca-b472-c339a1c302f9'}}, {'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'}}]}, {'name': 'R1-R2', 'optical_details': {'src_port': '101', 'dst_port': '111', 'local_peer_port': '111', 'remote_peer_port': '101', 'c_slots': {'3': 0, '20': 1, '16': 1, '9': 1, '6': 0, '14': 1, '13': 1, '12': 1, '1': 0, '15': 1, '7': 0, '2': 0, '8': 0, '4': 0, '5': 0, '18': 1, '10': 1, '11': 1, '17': 1, '19': 1}, 'l_slots': {'112': 1, '110': 1, '101': 1, '105': 1, '109': 1, '104': 1, '108': 1, '118': 1, '106': 1, '119': 1, '103': 1, '107': 1, '120': 1, '114': 1, '113': 1, '102': 1, '115': 1, '117': 1, '116': 1, '111': 1}, 's_slots': {'519': 1, '520': 1, '512': 1, '502': 1, '515': 1, '507': 1, '513': 1, '516': 1, '505': 1, '517': 1, '508': 1, '518': 1, '509': 1, '506': 1, '503': 1, '514': 1, '511': 1, '501': 1, '504': 1, '510': 1}}, 'link_id': {'link_uuid': {'uuid': 'e273644c-0dfa-5053-8850-0722995e7ba3'}}, 'link_endpoint_ids': [{'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': '811b34f9-112c-5cc5-a4e0-6e5f5e0bdada'}}, {'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': 'd777e553-af96-5ee7-a957-ce70b49e36ac'}}]}, {'name': 'T1.1-R1', 'optical_details': {'src_port': '1', 'dst_port': '12', 'local_peer_port': '1', 'remote_peer_port': '2', 'c_slots': {'4': 0, '3': 0, '10': 1, '9': 1, '2': 0, '13': 1, '8': 1, '6': 1, '17': 1, '5': 1, '20': 1, '1': 0, '18': 1, '14': 1, '19': 1, '11': 1, '15': 1, '12': 1, '7': 1, '16': 1}, 'l_slots': {'114': 1, '105': 1, '120': 1, '106': 1, '113': 1, '102': 1, '117': 1, '107': 1, '116': 1, '119': 1, '115': 1, '109': 1, '101': 1, '110': 1, '103': 1, '118': 1, '111': 1, '112': 1, '108': 1, '104': 1}, 's_slots': {'504': 1, '518': 1, '516': 1, '509': 1, '503': 1, '506': 1, '520': 1, '510': 1, '514': 1, '511': 1, '507': 1, '517': 1, '502': 1, '508': 1, '519': 1, '505': 1, '515': 1, '513': 1, '512': 1, '501': 1}}, 'link_id': {'link_uuid': {'uuid': 'e8bd9082-ebad-55b8-b110-7c21fddaf1cf'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': '68741528-2e94-5274-ab3c-fddcd8dc05ef'}}, 'endpoint_uuid': {'uuid': '690284c6-a8f7-54a0-82ed-19e721976221'}}]}, {'name': 'R2-R1', 'optical_details': {'src_port': '101', 'dst_port': '111', 'local_peer_port': '111', 'remote_peer_port': '101', 'c_slots': {'9': 1, '20': 1, '10': 1, '11': 1, '17': 1, '19': 1, '5': 1, '1': 1, '15': 1, '3': 1, '2': 1, '6': 1, '110.1.83.219 - - [25/Apr/2024 18:04:52] "PUT /OpticalTFS/AddFlexLightpath/T1.1/T2.1/100/0/100 HTTP/1.1" 200 - -INFO:werkzeug:10.1.83.219 - - [25/Apr/2024 18:04:52] "PUT /OpticalTFS/AddFlexLightpath/T1.1/T2.1/100/0/100 HTTP/1.1" 200 - -10.1.83.219 - - [25/Apr/2024 18:04:52] "GET /OpticalTFS/GetOpticalBand/1 HTTP/1.1" 200 - -INFO:werkzeug:10.1.83.219 - - [25/Apr/2024 18:04:52] "GET /OpticalTFS/GetOpticalBand/1 HTTP/1.1" 200 - -4': 1, '13': 1, '18': 1, '12': 1, '4': 1, '7': 1, '16': 1, '8': 1}, 'l_slots': {'101': 1, '119': 1, '111': 1, '116': 1, '109': 1, '103': 1, '110': 1, '106': 1, '105': 1, '102': 1, '108': 1, '114': 1, '113': 1, '112': 1, '104': 1, '117': 1, '118': 1, '107': 1, '120': 1, '115': 1}, 's_slots': {'518': 1, '505': 1, '506': 1, '514': 1, '516': 1, '502': 1, '501': 1, '508': 1, '509': 1, '519': 1, '520': 1, '517': 1, '515': 1, '512': 1, '511': 1, '504': 1, '503': 1, '510': 1, '507': 1, '513': 1}}, 'link_id': {'link_uuid': {'uuid': 'eae23f48-40de-5aae-b3d1-fa3cda231678'}}, 'link_endpoint_ids': [{'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': '4255273d-5038-512d-9838-d5dd921cb858'}}, {'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': 'f45593bb-41b1-50af-8944-524212ca012a'}}]}, {'name': 'T2.1-R2', 'optical_details': {'src_port': '1', 'dst_port': '12', 'local_peer_port': '1', 'remote_peer_port': '2', 'c_slots': {'18': 1, '6': 1, '16': 1, '7': 1, '2': 1, '4': 1, '3': 1, '17': 1, '11': 1, '20': 1, '15': 1, '19': 1, '10': 1, '9': 1, '5': 1, '13': 1, '8': 1, '1': 1, '12': 1, '14': 1}, 'l_slots': {'107': 1, '109': 1, '103': 1, '108': 1, '102': 1, '119': 1, '110': 1, '105': 1, '111': 1, '101': 1, '114': 1, '117': 1, '112': 1, '116': 1, '115': 1, '113': 1, '120': 1, '118': 1, '104': 1, '106': 1}, 's_slots': {'518': 1, '505': 1, '520': 1, '510': 1, '507': 1, '511': 1, '513': 1, '506': 1, '515': 1, '504': 1, '503': 1, '519': 1, '508': 1, '512': 1, '501': 1, '502': 1, '509': 1, '516': 1, '517': 1, '514': 1}}, 'link_id': {'link_uuid': {'uuid': 'ebb2ca0f-d4c1-51c4-ab41-dceea90f811f'}}, 'link_endpoint_ids': [{'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': '1b9f85aa-8cc9-5b9d-99dc-8f0eec714d67'}}, {'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'}}]}, {'name': 'T1.3-R1', 'optical_details': {'src_port': '3', 'dst_port': '14', 'local_peer_port': '3', 'remote_peer_port': '4', 'c_slots': {'5': 1, '9': 1, '4': 1, '2': 1, '10': 1, '16': 1, '17': 1, '8': 1, '19': 1, '11': 1, '20': 1, '7': 1, '14': 1, '1': 1, '12': 1, '3': 1, '6': 1, '18': 1, '15': 1, '13': 1}, 'l_slots': {'101': 1, '117': 1, '111': 1, '113': 1, '116': 1, '102': 1, '118': 1, '107': 1, '103': 1, '112': 1, '120': 1, '106': 1, '105': 1, '119': 1, '109': 1, '108': 1, '115': 1, '110': 1, '114': 1, '104': 1}, 's_slots': {'518': 1, '519': 1, '517': 1, '501': 1, '507': 1, '511': 1, '514': 1, '510': 1, '512': 1, '516': 1, '506': 1, '515': 1, '508': 1, '502': 1, '520': 1, '503': 1, '513': 1, '505': 1, '509': 1, '504': 1}}, 'link_id': {'link_uuid': {'uuid': 'f79a817c-a6a0-55d5-9398-a582a9835be9'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': '68741528-2e94-5274-ab3c-fddcd8dc05ef'}}, 'endpoint_uuid': {'uuid': 'dad62073-9e4f-5b05-947d-571e6c3a6068'}}]}]} -{'T1.1': {'f': {'in': '0', 'out': '1'}, 'b': {}}, 'R1': {'f': {'in': '12', 'out': '101'}, 'b': {}}, 'R2': {'f': {'in': '111', 'out': '2'}, 'b': {}}, 'T2.1': {'f': {'in': '1', 'out': '0'}, 'b': {}}} -INFO: Flow matrix computed for Flex Lightpath -[1, 2, 3, 4] -pari 4 -2 -192025.0 -192031250 50000 -INFO: RSA completed for FLex Lightpath with new OB -INFO: time elapsed = 187.212890625 ms -{'optical_band_id': 1, 'bidir': 0, 'src': 'R1', 'dst': 'R2', 'flows': {'R1': {'f': {'in': '0', 'out': '101'}, 'b': {}}, 'R2': {'f': {'in': '111', 'out': '0'}, 'b': {}}}, 'band_type': 'c_slots', 'fiber_forward': {}, 'fiber_backward': {}, 'op-mode': 0, 'n_slots': 8, 'links': ['R1-R2'], 'path': ['R1', 'R2'], 'band': 100000, 'freq': 192056250, 'is_active': True, 'src_port': '101', 'dst_port': '111', 'rev_dst_port': '111', 'rev_src_port': '101', 'c_slots': {'1': 0, '2': 0, '3': 0, '4': 0, '5': 1, '6': 1, '7': 1, '8': 1}, 'served_lightpaths': [1]} -T1.1-R1 -{'name': 'T1.1-R1', 'optical_details': {'src_port': '1', 'dst_port': '12', 'local_peer_port': '1', 'remote_peer_port': '2', 'c_slots': {'4': 0, '3': 0, '10': 1, '9': 1, '2': 0, '13': 1, '8': 1, '6': 1, '17': 1, '5': 1, '20': 1, '1': 0, '18': 1, '14': 1, '19': 1, '11': 1, '15': 1, '12': 1, '7': 1, '16': 1}, 'l_slots': {'114': 1, '105': 1, '120': 1, '106': 1, '113': 1, '102': 1, '117': 1, '107': 1, '116': 1, '119': 1, '115': 1, '109': 1, '101': 1, '110': 1, '103': 1, '118': 1, '111': 1, '112': 1, '108': 1, '104': 1}, 's_slots': {'504': 1, '518': 1, '516': 1, '509': 1, '503': 1, '506': 1, '520': 1, '510': 1, '514': 1, '511': 1, '507': 1, '517': 1, '502': 1, '508': 1, '519': 1, '505': 1, '515': 1, '513': 1, '512': 1, '501': 1}}, 'link_id': {'link_uuid': {'uuid': 'e8bd9082-ebad-55b8-b110-7c21fddaf1cf'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': '68741528-2e94-5274-ab3c-fddcd8dc05ef'}}, 'endpoint_uuid': {'uuid': '690284c6-a8f7-54a0-82ed-19e721976221'}}]} -R2-T2.1 -{'name': 'R2-T2.1', 'optical_details': {'src_port': '2', 'dst_port': '1', 'local_peer_port': '12', 'remote_peer_port': '1', 'c_slots': {'5': 1, '18': 1, '9': 1, '20': 1, '16': 1, '11': 1, '19': 1, '17': 1, '10': 1, '15': 1, '12': 1, '13': 1, '6': 1, '1': 0, '4': 0, '7': 1, '2': 0, '14': 1, '8': 1, '3': 0}, 'l_slots': {'109': 1, '112': 1, '106': 1, '110': 1, '101': 1, '111': 1, '119': 1, '115': 1, '108': 1, '103': 1, '118': 1, '102': 1, '104': 1, '105': 1, '114': 1, '116': 1, '117': 1, '120': 1, '113': 1, '107': 1}, 's_slots': {'513': 1, '505': 1, '502': 1, '507': 1, '516': 1, '508': 1, '501': 1, '517': 1, '503': 1, '506': 1, '520': 1, '518': 1, '504': 1, '512': 1, '510': 1, '515': 1, '511': 1, '519': 1, '514': 1, '509': 1}}, 'link_id': {'link_uuid': {'uuid': '5ba1d9b6-120a-5680-b745-2ea24aec1cc3'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': 'c944aaeb-bbdf-5f2d-b31c-8cc8903045b6'}}, 'endpoint_uuid': {'uuid': 'd1e7e6c7-f1d7-56f3-be32-8982a72966f6'}}]} -{'optical_links': [{'name': 'R2-T2.1', 'optical_details': {'src_port': '2', 'dst_port': '1', 'local_peer_port': '12', 'remote_peer_port': '1', 'c_slots': {'5': 1, '18': 1, '9': 1, '20': 1, '16': 1, '11': 1, '19': 1, '17': 1, '10': 1, '15': 1, '12': 1, '13': 1, '6': 1, '1': 0, '4': 0, '7': 1, '2': 0, '14': 1, '8': 1, '3': 0}, 'l_slots': {'109': 1, '112': 1, '106': 1, '110': 1, '101': 1, '111': 1, '119': 1, '115': 1, '108': 1, '103': 1, '118': 1, '102': 1, '104': 1, '105': 1, '114': 1, '116': 1, '117': 1, '120': 1, '113': 1, '107': 1}, 's_slots': {'513': 1, '505': 1, '502': 1, '507': 1, '516': 1, '508': 1, '501': 1, '517': 1, '503': 1, '506': 1, '520': 1, '518': 1, '504': 1, '512': 1, '510': 1, '515': 1, '511': 1, '519': 1, '514': 1, '509': 1}}, 'link_id': {'link_uuid': {'uuid': '5ba1d9b6-120a-5680-b745-2ea24aec1cc3'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': 'c944aaeb-bbdf-5f2d-b31c-8cc8903045b6'}}, 'endpoint_uuid': {'uuid': 'd1e7e6c7-f1d7-56f3-be32-8982a72966f6'}}]}, {'name': 'R2-T2.2', 'optical_details': {'src_port': '3', 'dst_port': '2', 'local_peer_port': '13', 'remote_peer_port': '2', 'c_slots': {'17': 1, '16': 1, '3': 1, '18': 1, '4': 1, '5': 1, '8': 1, '15': 1, '6': 1, '1': 1, '2': 1, '10': 1, '19': 1, '9': 1, '13': 1, '12': 1, '14': 1, '11': 1, '7': 1, '20': 1}, 'l_slots': {'113': 1, '119': 1, '102': 1, '115': 1, '114': 1, '104': 1, '107': 1, '120': 1, '112': 1, '118': 1, '116': 1, '109': 1, '108': 1, '105': 1, '110': 1, '103': 1, '111': 1, '101': 1, '117': 1, '106': 1}, 's_slots': {'517': 1, '501': 1, '520': 1, '508': 1, '503': 1, '504': 1, '510': 1, '511': 1, '514': 1, '513': 1, '505': 1, '518': 1, '502': 1, '509': 1, '507': 1, '506': 1, '516': 1, '515': 1, '512': 1, '519': 1}}, 'link_id': {'link_uuid': {'uuid': '5f9f4309-d24d-52e0-9d60-ba84839a5bda'}}, 'link_endpoint_ids': [{'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': '463f5b52-bb8e-54e7-a63d-aeb4ad4b72bc'}}, {'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'}}]}, {'name': 'R1-T1.1', 'optical_details': {'src_port': '2', 'dst_port': '1', 'local_peer_port': '12', 'remote_peer_port': '1', 'c_slots': {'11': 1, '12': 1, '1': 1, '4': 1, '7': 1, '15': 1, '10': 1, '9': 1, '8': 1, '3': 1, '6': 1, '19': 1, '14': 1, '2': 1, '16': 1, '13': 1, '17': 1, '18': 1, '5': 1, '20': 1}, 'l_slots': {'118': 1, '112': 1, '107': 1, '115': 1, '108': 1, '101': 1, '113': 1, '103': 1, '117': 1, '114': 1, '109': 1, '120': 1, '119': 1, '105': 1, '110': 1, '104': 1, '106': 1, '111': 1, '102': 1, '116': 1}, 's_slots': {'509': 1, '504': 1, '503': 1, '505': 1, '520': 1, '507': 1, '502': 1, '511': 1, '513': 1, '519': 1, '508': 1, '510': 1, '516': 1, '517': 1, '506': 1, '501': 1, '518': 1, '515': 1, '514': 1, '512': 1}}, 'link_id': {'link_uuid': {'uuid': '63c6a257-f171-59f8-b1e8-e3c4086ba36a'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': '68741528-2e94-5274-ab3c-fddcd8dc05ef'}}, 'endpoint_uuid': {'uuid': 'c7b7a565-0469-5463-809b-8ef4851d89c4'}}]}, {'name': 'T1.2-R1', 'optical_details': {'src_port': '2', 'dst_port': '13', 'local_peer_port': '2', 'remote_peer_port': '3', 'c_slots': {'2': 1, '1': 1, '7': 1, '10': 1, '13': 1, '19': 1, '11': 1, '15': 1, '16': 1, '18': 1, '9': 1, '20': 1, '12': 1, '5': 1, '14': 1, '4': 1, '8': 1, '17': 1, '3': 1, '6': 1}, 'l_slots': {'110': 1, '102': 1, '109': 1, '119': 1, '113': 1, '117': 1, '120': 1, '105': 1, '114': 1, '103': 1, '104': 1, '118': 1, '108': 1, '112': 1, '101': 1, '116': 1, '115': 1, '111': 1, '106': 1, '107': 1}, 's_slots': {'510': 1, '506': 1, '505': 1, '512': 1, '502': 1, '516': 1, '507': 1, '514': 1, '511': 1, '517': 1, '513': 1, '503': 1, '508': 1, '519': 1, '518': 1, '504': 1, '501': 1, '515': 1, '520': 1, '509': 1}}, 'link_id': {'link_uuid': {'uuid': '817a2fcb-5dfd-55a6-b669-a141014cc38d'}}, 'link_endpoint_ids': [{'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': '27b6ed2a-b0d1-5be9-b9be-cc9a540ac0d1'}}, {'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'}}]}, {'name': 'T2.2-R2', 'optical_details': {'src_port': '2', 'dst_port': '13', 'local_peer_port': '2', 'remote_peer_port': '3', 'c_slots': {'18': 1, '14': 1, '2': 1, '8': 1, '4': 1, '5': 1, '17': 1, '20': 1, '9': 1, '19': 1, '11': 1, '12': 1, '1': 1, '15': 1, '16': 1, '3': 1, '7': 1, '10': 1, '6': 1, '13': 1}, 'l_slots': {'120': 1, '118': 1, '111': 1, '110': 1, '116': 1, '104': 1, '117': 1, '102': 1, '109': 1, '114': 1, '119': 1, '103': 1, '115': 1, '113': 1, '107': 1, '105': 1, '106': 1, '108': 1, '101': 1, '112': 1}, 's_slots': {'513': 1, '506': 1, '510': 1, '504': 1, '502': 1, '512': 1, '515': 1, '501': 1, '507': 1, '518': 1, '520': 1, '511': 1, '505': 1, '514': 1, '503': 1, '519': 1, '516': 1, '508': 1, '509': 1, '517': 1}}, 'link_id': {'link_uuid': {'uuid': '884c6c6a-ad1b-5228-a48f-e9db4bc174df'}}, 'link_endpoint_ids': [{'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': 'be24d4af-c784-50cc-baa4-976a499fcd5a'}}, {'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'}}]}, {'name': 'R1-T1.3', 'optical_details': {'src_port': '4', 'dst_port': '3', 'local_peer_port': '14', 'remote_peer_port': '3', 'c_slots': {'18': 1, '14': 1, '15': 1, '7': 1, '4': 1, '5': 1, '12': 1, '8': 1, '2': 1, '13': 1, '20': 1, '16': 1, '17': 1, '1': 1, '19': 1, '9': 1, '11': 1, '6': 1, '10': 1, '3': 1}, 'l_slots': {'119': 1, '107': 1, '103': 1, '108': 1, '116': 1, '105': 1, '120': 1, '113': 1, '114': 1, '106': 1, '104': 1, '109': 1, '110': 1, '101': 1, '112': 1, '111': 1, '117': 1, '102': 1, '115': 1, '118': 1}, 's_slots': {'505': 1, '501': 1, '519': 1, '503': 1, '502': 1, '510': 1, '517': 1, '518': 1, '506': 1, '515': 1, '514': 1, '507': 1, '511': 1, '504': 1, '512': 1, '516': 1, '508': 1, '509': 1, '520': 1, '513': 1}}, 'link_id': {'link_uuid': {'uuid': '89e3a6c6-d613-55bf-925c-c817ee24a133'}}, 'link_endpoint_ids': [{'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': '4fca89b8-237c-52bd-8131-9129316b524f'}}, {'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'}}]}, {'name': 'R1-T1.2', 'optical_details': {'src_port': '3', 'dst_port': '2', 'local_peer_port': '13', 'remote_peer_port': '2', 'c_slots': {'4': 1, '15': 1, '14': 1, '11': 1, '19': 1, '6': 1, '12': 1, '2': 1, '20': 1, '9': 1, '13': 1, '10': 1, '17': 1, '5': 1, '8': 1, '16': 1, '3': 1, '1': 1, '7': 1, '18': 1}, 'l_slots': {'118': 1, '104': 1, '103': 1, '112': 1, '107': 1, '102': 1, '105': 1, '109': 1, '110': 1, '108': 1, '120': 1, '106': 1, '114': 1, '117': 1, '101': 1, '119': 1, '113': 1, '111': 1, '116': 1, '115': 1}, 's_slots': {'502': 1, '501': 1, '508': 1, '514': 1, '506': 1, '509': 1, '513': 1, '518': 1, '504': 1, '505': 1, '515': 1, '517': 1, '520': 1, '519': 1, '512': 1, '510': 1, '516': 1, '507': 1, '503': 1, '511': 1}}, 'link_id': {'link_uuid': {'uuid': 'b11e2e7b-ef00-5c11-9dc6-5fd34bd11f6e'}}, 'link_endpoint_ids': [{'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': '1a8d66e2-5d94-520f-b94a-0aca4cfd891f'}}, {'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'}}]}, {'name': 'T2.3-R2', 'optical_details': {'src_port': '3', 'dst_port': '14', 'local_peer_port': '3', 'remote_peer_port': '4', 'c_slots': {'20': 1, '11': 1, '8': 1, '9': 1, '1': 1, '19': 1, '5': 1, '14': 1, '12': 1, '6': 1, '18': 1, '3': 1, '4': 1, '2': 1, '15': 1, '16': 1, '7': 1, '13': 1, '17': 1, '10': 1}, 'l_slots': {'119': 1, '111': 1, '120': 1, '113': 1, '115': 1, '105': 1, '117': 1, '108': 1, '104': 1, '106': 1, '103': 1, '107': 1, '114': 1, '109': 1, '116': 1, '101': 1, '102': 1, '112': 1, '110': 1, '118': 1}, 's_slots': {'504': 1, '508': 1, '506': 1, '512': 1, '502': 1, '507': 1, '520': 1, '501': 1, '516': 1, '514': 1, '511': 1, '518': 1, '510': 1, '503': 1, '517': 1, '515': 1, '519': 1, '505': 1, '513': 1, '509': 1}}, 'link_id': {'link_uuid': {'uuid': 'be7afc05-6e45-5899-896b-b331d6ab65c8'}}, 'link_endpoint_ids': [{'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': 'ac9e9079-6cf5-5d21-834d-1940c76fd78d'}}, {'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'}}]}, {'name': 'R2-T2.3', 'optical_details': {'src_port': '4', 'dst_port': '3', 'local_peer_port': '14', 'remote_peer_port': '3', 'c_slots': {'17': 1, '10': 1, '16': 1, '9': 1, '2': 1, '3': 1, '7': 1, '13': 1, '6': 1, '1': 1, '8': 1, '11': 1, '15': 1, '14': 1, '12': 1, '18': 1, '19': 1, '4': 1, '20': 1, '5': 1}, 'l_slots': {'103': 1, '102': 1, '114': 1, '111': 1, '117': 1, '115': 1, '108': 1, '113': 1, '109': 1, '116': 1, '118': 1, '120': 1, '110': 1, '104': 1, '112': 1, '119': 1, '106': 1, '101': 1, '105': 1, '107': 1}, 's_slots': {'512': 1, '518': 1, '503': 1, '516': 1, '504': 1, '520': 1, '513': 1, '511': 1, '501': 1, '517': 1, '519': 1, '514': 1, '507': 1, '506': 1, '509': 1, '505': 1, '502': 1, '510': 1, '508': 1, '515': 1}}, 'link_id': {'link_uuid': {'uuid': 'd4e89764-11c5-5f59-b7d6-a3aa2dab43df'}}, 'link_endpoint_ids': [{'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': '88a0bc2f-1ebf-5aca-b472-c339a1c302f9'}}, {'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'}}]}, {'name': 'R1-R2', 'optical_details': {'src_port': '101', 'dst_port': '111', 'local_peer_port': '111', 'remote_peer_port': '101', 'c_slots': {'3': 0, '20': 1, '16': 1, '9': 1, '6': 0, '14': 1, '13': 1, '12': 1, '1': 0, '15': 1, '7': 0, '2': 0, '8': 0, '4': 0, '5': 0, '18': 1, '10': 1, '11': 1, '17': 1, '19': 1}, 'l_slots': {'112': 1, '110': 1, '101': 1, '105': 1, '109': 1, '104': 1, '108': 1, '118': 1, '106': 1, '119': 1, '103': 1, '107': 1, '120': 1, '114': 1, '113': 1, '102': 1, '115': 1, '117': 1, '116': 1, '111': 1}, 's_slots': {'519': 1, '520': 1, '512': 1, '502': 1, '515': 1, '507': 1, '513': 1, '516': 1, '505': 1, '517': 1, '508': 1, '518': 1, '509': 1, '506': 1, '503': 1, '514': 1, '511': 1, '501': 1, '504': 1, '510': 1}}, 'link_id': {'link_uuid': {'uuid': 'e273644c-0dfa-5053-8850-0722995e7ba3'}}, 'link_endpoint_ids': [{'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': '811b34f9-112c-5cc5-a4e0-6e5f5e0bdada'}}, {'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': 'd777e553-af96-5ee7-a957-ce70b49e36ac'}}]}, {'name': 'T1.1-R1', 'optical_details': {'src_port': '1', 'dst_port': '12', 'local_peer_port': '1', 'remote_peer_port': '2', 'c_slots': {'4': 0, '3': 0, '10': 1, '9': 1, '2': 0, '13': 1, '8': 1, '6': 1, '17': 1, '5': 1, '20': 1, '1': 0, '18': 1, '14': 1, '19': 1, '11': 1, '15': 1, '12': 1, '7': 1, '16': 1}, 'l_slots': {'114': 1, '105': 1, '120': 1, '106': 1, '113': 1, '102': 1, '117': 1, '107': 1, '116': 1, '119': 1, '115': 1, '109': 1, '101': 1, '110': 1, '103': 1, '118': 1, '111': 1, '112': 1, '108': 1, '104': 1}, 's_slots': {'504': 1, '518': 1, '516': 1, '509': 1, '503': 1, '506': 1, '520': 1, '510': 1, '514': 1, '511': 1, '507': 1, '517': 1, '502': 1, '508': 1, '519': 1, '505': 1, '515': 1, '513': 1, '512': 1, '501': 1}}, 'link_id': {'link_uuid': {'uuid': 'e8bd9082-ebad-55b8-b110-7c21fddaf1cf'}}, 'link_endpoint_ids': [{'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'}}, 'device_id': {'device_uuid': {'uuid': '68741528-2e94-5274-ab3c-fddcd8dc05ef'}}, 'endpoint_uuid': {'uuid': '690284c6-a8f7-54a0-82ed-19e721976221'}}]}, {'name': 'R2-R1', 'optical_details': {'src_port': '101', 'dst_port': '111', 'local_peer_port': '111', 'remote_peer_port': '101', 'c_slots': {'9': 1, '20': 1, '10': 1, '11': 1, '17': 1, '19': 1, '5': 1, '1': 1, '15': 1, '3': 1, '2': 1, '6': 1, '110.1.83.219 - - [25/Apr/2024 18:06:28] "DELETE /OpticalTFS/DelLightpath/1/T1.1/T2.1/100 HTTP/1.1" 200 - -INFO:werkzeug:10.1.83.219 - - [25/Apr/2024 18:06:28] "DELETE /OpticalTFS/DelLightpath/1/T1.1/T2.1/100 HTTP/1.1" 200 - diff --git a/manifests/analyticsservice.yaml b/manifests/analyticsservice.yaml index 0fa3ed0be6eda8cf944e199543e3c2cd59cc98d6..536bb185286ba5444ad22d17d00706a066172e4c 100644 --- a/manifests/analyticsservice.yaml +++ b/manifests/analyticsservice.yaml @@ -37,9 +37,13 @@ spec: env: - name: LOG_LEVEL value: "INFO" + - name: CRDB_DATABASE + value: "tfs_analytics" + - name: METRICS_PORT + value: "9192" envFrom: - secretRef: - name: crdb-analytics + name: crdb-data - secretRef: name: kfk-kpi-data readinessProbe: @@ -60,10 +64,12 @@ spec: imagePullPolicy: Always ports: - containerPort: 30090 - - containerPort: 9192 + - containerPort: 9193 env: - name: LOG_LEVEL value: "INFO" + - name: METRICS_PORT + value: "9193" envFrom: - secretRef: name: kfk-kpi-data @@ -92,18 +98,22 @@ spec: selector: app: analyticsservice ports: - - name: frontend-grpc + - name: grpc protocol: TCP port: 30080 targetPort: 30080 - - name: backend-grpc + - name: grpc-backend protocol: TCP port: 30090 targetPort: 30090 - - name: metrics + - name: metrics-frontend protocol: TCP port: 9192 targetPort: 9192 + - name: metrics-backend + protocol: TCP + port: 9193 + targetPort: 9193 --- apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler diff --git a/manifests/automationservice.yaml b/manifests/automationservice.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f6c97f7fb7635e4b04431d41dbf20ca3edc51475 --- /dev/null +++ b/manifests/automationservice.yaml @@ -0,0 +1,80 @@ +# Copyright 2022-2024 ETSI OSG/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. + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: automationservice +spec: + selector: + matchLabels: + app: automationservice + replicas: 1 + template: + metadata: + annotations: + # Required for IETF L2VPN SBI when both parent and child run in same K8s cluster with Linkerd + config.linkerd.io/skip-outbound-ports: "2002" + labels: + app: automationservice + spec: + terminationGracePeriodSeconds: 5 + containers: + - name: server + image: labs.etsi.org:5050/tfs/controller/automation:latest + imagePullPolicy: Always + ports: + - containerPort: 30200 + - containerPort: 9192 + env: + - name: LOG_LEVEL + value: "INFO" + startupProbe: + exec: + command: ["/bin/grpc_health_probe", "-addr=:30200"] + failureThreshold: 30 + periodSeconds: 1 + readinessProbe: + exec: + command: ["/bin/grpc_health_probe", "-addr=:30200"] + livenessProbe: + exec: + command: ["/bin/grpc_health_probe", "-addr=:30200"] + resources: + requests: + cpu: 250m + memory: 128Mi + limits: + cpu: 1000m + memory: 1024Mi +--- +apiVersion: v1 +kind: Service +metadata: + name: automationservice + labels: + app: automationservice +spec: + type: ClusterIP + selector: + app: automationservice + ports: + - name: grpc + protocol: TCP + port: 30200 + targetPort: 30200 + - name: metrics + protocol: TCP + port: 9192 + targetPort: 9192 diff --git a/manifests/contextservice.yaml b/manifests/contextservice.yaml index 3abc4f208da8b4820b589b798a328c4a971f55f0..0fc8a1c44f7358a962276ebcf38a165d2db986cd 100644 --- a/manifests/contextservice.yaml +++ b/manifests/contextservice.yaml @@ -45,6 +45,8 @@ spec: value: "FALSE" - name: ALLOW_EXPLICIT_ADD_LINK_TO_TOPOLOGY value: "FALSE" + - name: CRDB_DATABASE + value: "tfs_context" envFrom: - secretRef: name: crdb-data diff --git a/manifests/e2e_orchestratorservice.yaml b/manifests/e2e_orchestratorservice.yaml index b6354c7a8aef7dc565b61d84703f905055b9303f..893f3464fabea2d1151c007a612e781d1f999093 100644 --- a/manifests/e2e_orchestratorservice.yaml +++ b/manifests/e2e_orchestratorservice.yaml @@ -20,8 +20,12 @@ spec: selector: matchLabels: app: e2e-orchestratorservice + replicas: 1 template: metadata: + annotations: + config.linkerd.io/skip-outbound-ports: "8761" + config.linkerd.io/skip-inbound-ports: "8761" labels: app: e2e-orchestratorservice spec: @@ -33,9 +37,18 @@ spec: ports: - containerPort: 10050 - containerPort: 9192 + - containerPort: 8761 env: - name: LOG_LEVEL value: "INFO" + - name: WS_IP_HOST + value: "nbiservice.tfs-ip.svc.cluster.local" + - name: WS_IP_PORT + value: "8761" + - name: WS_E2E_HOST + value: "e2e-orchestratorservice.tfs-e2e.svc.cluster.local" + - name: WS_E2E_PORT + value: "8762" readinessProbe: exec: command: ["/bin/grpc_health_probe", "-addr=:10050"] @@ -67,25 +80,6 @@ spec: - name: metrics port: 9192 targetPort: 9192 ---- -apiVersion: autoscaling/v2 -kind: HorizontalPodAutoscaler -metadata: - name: e2e-orchestratorservice-hpa -spec: - scaleTargetRef: - apiVersion: apps/v1 - kind: Deployment - name: e2e-orchestratorservice - minReplicas: 1 - maxReplicas: 20 - metrics: - - type: Resource - resource: - name: cpu - target: - type: Utilization - averageUtilization: 80 - #behavior: - # scaleDown: - # stabilizationWindowSeconds: 30 + - name: ws + port: 8761 + targetPort: 8761 diff --git a/manifests/kpi_managerservice.yaml b/manifests/kpi_managerservice.yaml index 984d783a9de7ed3c0c02e87d82ec673dc19c9508..f8ee8ff821ec1acb689cbe8d0bb8f8f407c971e3 100644 --- a/manifests/kpi_managerservice.yaml +++ b/manifests/kpi_managerservice.yaml @@ -39,9 +39,11 @@ spec: env: - name: LOG_LEVEL value: "INFO" + - name: CRDB_DATABASE + value: "tfs_kpi_mgmt" envFrom: - secretRef: - name: crdb-kpi-data + name: crdb-data readinessProbe: exec: command: ["/bin/grpc_health_probe", "-addr=:30010"] diff --git a/manifests/nbiservice.yaml b/manifests/nbiservice.yaml index d3892118a3d8330335b58459a0953bb45e4854ea..72cfde514341b0ef89b3b8eb91ab01b23a27c14b 100644 --- a/manifests/nbiservice.yaml +++ b/manifests/nbiservice.yaml @@ -23,6 +23,9 @@ spec: replicas: 1 template: metadata: + annotations: + config.linkerd.io/skip-inbound-ports: "8762" + config.linkerd.io/skip-outbound-ports: "8762" labels: app: nbiservice spec: @@ -35,9 +38,14 @@ spec: - containerPort: 8080 - containerPort: 9090 - containerPort: 9192 + - containerPort: 8762 env: - name: LOG_LEVEL value: "INFO" + - name: IETF_NETWORK_RENDERER + value: "LIBYANG" + - name: WS_E2E_PORT + value: "8762" readinessProbe: exec: command: ["/bin/grpc_health_probe", "-addr=:9090"] @@ -75,3 +83,7 @@ spec: protocol: TCP port: 9192 targetPort: 9192 + - name: ws + protocol: TCP + port: 8762 + targetPort: 8762 diff --git a/manifests/nginx_ingress_http.yaml b/manifests/nginx_ingress_http.yaml index ed713bf29ad8228ab3f5b051af24519c2fb9ef09..619d85f7a82af48c71464038bf14a833903d1a58 100644 --- a/manifests/nginx_ingress_http.yaml +++ b/manifests/nginx_ingress_http.yaml @@ -66,6 +66,6 @@ spec: pathType: Prefix backend: service: - name: qkd-appservice + name: nbiservice port: - number: 8005 + number: 8080 diff --git a/manifests/qkd_appservice.yaml b/manifests/qkd_appservice.yaml index 4f89d6c6f8400b509dc595f551e8f181e70b2f51..ba02e2e1da34ac670f68e17c28e9847603401d3a 100644 --- a/manifests/qkd_appservice.yaml +++ b/manifests/qkd_appservice.yaml @@ -28,36 +28,35 @@ spec: spec: terminationGracePeriodSeconds: 5 containers: - - name: server - image: labs.etsi.org:5050/tfs/controller/qkd_app:latest - imagePullPolicy: Always - ports: - - containerPort: 10060 - - containerPort: 9192 - - containerPort: 8005 - env: - - name: LOG_LEVEL - value: "DEBUG" - - name: CRDB_DATABASE_APP - value: "qkd_app" - envFrom: - - secretRef: - name: crdb-data - - secretRef: - name: nats-data - readinessProbe: - exec: - command: ["/bin/grpc_health_probe", "-addr=:10060"] - livenessProbe: - exec: - command: ["/bin/grpc_health_probe", "-addr=:10060"] - resources: - requests: - cpu: 150m - memory: 128Mi - limits: - cpu: 500m - memory: 512Mi + - name: server + image: labs.etsi.org:5050/tfs/controller/qkd_app:latest + imagePullPolicy: Always + ports: + - containerPort: 10060 + - containerPort: 9192 + env: + - name: LOG_LEVEL + value: "INFO" + - name: CRDB_DATABASE + value: "qkd_app" + envFrom: + - secretRef: + name: crdb-data + - secretRef: + name: nats-data + readinessProbe: + exec: + command: ["/bin/grpc_health_probe", "-addr=:10060"] + livenessProbe: + exec: + command: ["/bin/grpc_health_probe", "-addr=:10060"] + resources: + requests: + cpu: 150m + memory: 128Mi + limits: + cpu: 500m + memory: 512Mi --- apiVersion: v1 kind: Service @@ -70,14 +69,11 @@ spec: selector: app: qkd-appservice ports: - - name: grpc - protocol: TCP - port: 10060 - targetPort: 10060 - - name: metrics - protocol: TCP - port: 9192 - targetPort: 9192 - - name: http - port: 8005 - targetPort: 8005 + - name: grpc + protocol: TCP + port: 10060 + targetPort: 10060 + - name: metrics + protocol: TCP + port: 9192 + targetPort: 9192 diff --git a/manifests/qos_profileservice.yaml b/manifests/qos_profileservice.yaml new file mode 100644 index 0000000000000000000000000000000000000000..801607880bbcd9a51bacbec396f797dda7132d81 --- /dev/null +++ b/manifests/qos_profileservice.yaml @@ -0,0 +1,101 @@ +# Copyright 2022-2024 ETSI OSG/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. + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: qos-profileservice +spec: + selector: + matchLabels: + app: qos-profileservice + #replicas: 1 + template: + metadata: + annotations: + config.linkerd.io/skip-outbound-ports: "4222" + labels: + app: qos-profileservice + spec: + terminationGracePeriodSeconds: 5 + containers: + - name: server + image: labs.etsi.org:5050/tfs/controller/qos_profile:latest + imagePullPolicy: Always + ports: + - containerPort: 20040 + - containerPort: 9192 + env: + - name: LOG_LEVEL + value: "INFO" + - name: CRDB_DATABASE + value: "tfs_qos_profile" + envFrom: + - secretRef: + name: crdb-data + readinessProbe: + exec: + command: ["/bin/grpc_health_probe", "-addr=:20040"] + livenessProbe: + exec: + command: ["/bin/grpc_health_probe", "-addr=:20040"] + resources: + requests: + cpu: 250m + memory: 128Mi + limits: + cpu: 1000m + memory: 1024Mi +--- +apiVersion: v1 +kind: Service +metadata: + name: qos-profileservice + labels: + app: qos-profileservice +spec: + type: ClusterIP + selector: + app: qos-profileservice + ports: + - name: grpc + protocol: TCP + port: 20040 + targetPort: 20040 + - name: metrics + protocol: TCP + port: 9192 + targetPort: 9192 +--- +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: qos-profileservice-hpa +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: qos-profileservice + minReplicas: 1 + maxReplicas: 20 + metrics: + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: 80 + #behavior: + # scaleDown: + # stabilizationWindowSeconds: 30 diff --git a/manifests/servicemonitors.yaml b/manifests/servicemonitors.yaml index 716c1c6891802d7fcc55da798d06c650373fb1b5..8a8fe6f39eff87d12582f2f83734c07dc695cea3 100644 --- a/manifests/servicemonitors.yaml +++ b/manifests/servicemonitors.yaml @@ -475,3 +475,156 @@ spec: any: false matchNames: - tfs # namespace where the app is running +--- +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + namespace: monitoring # namespace where prometheus is running + name: tfs-analyticsservice-metric + labels: + app: analyticsservice + #release: prometheus + #release: prom # name of the release + # ( VERY IMPORTANT: You need to know the correct release name by viewing + # the servicemonitor of Prometheus itself: Without the correct name, + # Prometheus cannot identify the metrics of the Flask app as the target.) +spec: + selector: + matchLabels: + # Target app service + #namespace: tfs + app: analyticsservice # same as above + #release: prometheus # same as above + endpoints: + - port: metrics-frontend # named port in target app + scheme: http + path: /metrics # path to scrape + interval: 5s # scrape interval + - port: metrics-backend # named port in target app + scheme: http + path: /metrics # path to scrape + interval: 5s # scrape interval + namespaceSelector: + any: false + matchNames: + - tfs # namespace where the app is running +--- +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + namespace: monitoring # namespace where prometheus is running + name: tfs-telemetryservice-metric + labels: + app: telemetryservice + #release: prometheus + #release: prom # name of the release + # ( VERY IMPORTANT: You need to know the correct release name by viewing + # the servicemonitor of Prometheus itself: Without the correct name, + # Prometheus cannot identify the metrics of the Flask app as the target.) +spec: + selector: + matchLabels: + # Target app service + #namespace: tfs + app: telemetryservice # same as above + #release: prometheus # same as above + endpoints: + - port: metrics-frontend # named port in target app + scheme: http + path: /metrics # path to scrape + interval: 5s # scrape interval + - port: metrics-backend # named port in target app + scheme: http + path: /metrics # path to scrape + interval: 5s # scrape interval + namespaceSelector: + any: false + matchNames: + - tfs # namespace where the app is running +--- +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + namespace: monitoring # namespace where prometheus is running + name: tfs-kpi-managerservice-metric + labels: + app: kpi-managerservice + #release: prometheus + #release: prom # name of the release + # ( VERY IMPORTANT: You need to know the correct release name by viewing + # the servicemonitor of Prometheus itself: Without the correct name, + # Prometheus cannot identify the metrics of the Flask app as the target.) +spec: + selector: + matchLabels: + # Target app service + #namespace: tfs + app: kpi-managerservice # same as above + #release: prometheus # same as above + endpoints: + - port: metrics # named port in target app + scheme: http + path: /metrics # path to scrape + interval: 5s # scrape interval + namespaceSelector: + any: false + matchNames: + - tfs # namespace where the app is running +--- +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + namespace: monitoring # namespace where prometheus is running + name: tfs-kpi_value_apiservice-metric + labels: + app: kpi_value_apiservice + #release: prometheus + #release: prom # name of the release + # ( VERY IMPORTANT: You need to know the correct release name by viewing + # the servicemonitor of Prometheus itself: Without the correct name, + # Prometheus cannot identify the metrics of the Flask app as the target.) +spec: + selector: + matchLabels: + # Target app service + #namespace: tfs + app: kpi_value_apiservice # same as above + #release: prometheus # same as above + endpoints: + - port: metrics # named port in target app + scheme: http + path: /metrics # path to scrape + interval: 5s # scrape interval + namespaceSelector: + any: false + matchNames: + - tfs # namespace where the app is running +--- +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + namespace: monitoring # namespace where prometheus is running + name: tfs-kpi_value_writerservice-metric + labels: + app: kpi_value_writerservice + #release: prometheus + #release: prom # name of the release + # ( VERY IMPORTANT: You need to know the correct release name by viewing + # the servicemonitor of Prometheus itself: Without the correct name, + # Prometheus cannot identify the metrics of the Flask app as the target.) +spec: + selector: + matchLabels: + # Target app service + #namespace: tfs + app: kpi_value_writerservice # same as above + #release: prometheus # same as above + endpoints: + - port: metrics # named port in target app + scheme: http + path: /metrics # path to scrape + interval: 5s # scrape interval + namespaceSelector: + any: false + matchNames: + - tfs # namespace where the app is running diff --git a/manifests/telemetryservice.yaml b/manifests/telemetryservice.yaml index 2f9917499a425b95d436ffa8cdb311d29483d2ca..86d864157838513dd68f10679d44d11b074c422c 100644 --- a/manifests/telemetryservice.yaml +++ b/manifests/telemetryservice.yaml @@ -37,9 +37,13 @@ spec: env: - name: LOG_LEVEL value: "INFO" + - name: CRDB_DATABASE + value: "tfs_telemetry" + - name: METRICS_PORT + value: "9192" envFrom: - secretRef: - name: crdb-telemetry + name: crdb-data - secretRef: name: kfk-kpi-data readinessProbe: @@ -60,10 +64,12 @@ spec: imagePullPolicy: Always ports: - containerPort: 30060 - - containerPort: 9192 + - containerPort: 9193 env: - name: LOG_LEVEL value: "INFO" + - name: METRICS_PORT + value: "9193" envFrom: - secretRef: name: kfk-kpi-data @@ -92,18 +98,22 @@ spec: selector: app: telemetryservice ports: - - name: frontend-grpc + - name: grpc protocol: TCP port: 30050 targetPort: 30050 - - name: backend-grpc + - name: grpc-backend protocol: TCP port: 30060 targetPort: 30060 - - name: metrics + - name: metrics-frontend protocol: TCP port: 9192 targetPort: 9192 + - name: metrics-backend + protocol: TCP + port: 9193 + targetPort: 9193 --- apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler diff --git a/manifests/vnt_managerservice.yaml b/manifests/vnt_managerservice.yaml new file mode 100644 index 0000000000000000000000000000000000000000..62c575139e972d9d7ae26f1218f78f725291cc5b --- /dev/null +++ b/manifests/vnt_managerservice.yaml @@ -0,0 +1,77 @@ +# Copyright 2022-2024 ETSI OSG/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. + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: vnt-managerservice +spec: + selector: + matchLabels: + app: vnt-managerservice + replicas: 1 + template: + metadata: + annotations: + config.linkerd.io/skip-outbound-ports: "8765" + config.linkerd.io/skip-inbound-ports: "8765" + labels: + app: vnt-managerservice + spec: + terminationGracePeriodSeconds: 5 + containers: + - name: server + image: labs.etsi.org:5050/tfs/controller/vnt_manager:latest + imagePullPolicy: Always + ports: + - containerPort: 10080 + - containerPort: 9192 + env: + - name: LOG_LEVEL + value: "INFO" + - name: WS_IP_PORT + value: "8761" + - name: WS_E2E_PORT + value: "8762" + readinessProbe: + exec: + command: ["/bin/grpc_health_probe", "-addr=:10080"] + livenessProbe: + exec: + command: ["/bin/grpc_health_probe", "-addr=:10080"] + resources: + requests: + cpu: 250m + memory: 128Mi + limits: + cpu: 1000m + memory: 1024Mi +--- +apiVersion: v1 +kind: Service +metadata: + name: vnt-managerservice + labels: + app: vnt-managerservice +spec: + type: ClusterIP + selector: + app: vnt-managerservice + ports: + - name: grpc + port: 10080 + targetPort: 10080 + - name: metrics + port: 9192 + targetPort: 9192 diff --git a/my_deploy.sh b/my_deploy.sh index 68b6bb044f25f7bdc4091327ade6850b5d6db565..8d2e733d462ae743c7187eb9b6a58d7da14033a7 100755 --- a/my_deploy.sh +++ b/my_deploy.sh @@ -20,13 +20,16 @@ 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 qkd_app service slice webui nbi " +export TFS_COMPONENTS="context device pathcomp service slice nbi webui" # 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" +#export TFS_COMPONENTS="${TFS_COMPONENTS} kpi_manager kpi_value_writer kpi_value_api telemetry analytics automation" + +# Uncomment to activate QoS Profiles +#export TFS_COMPONENTS="${TFS_COMPONENTS} qos_profile" # Uncomment to activate BGP-LS Speaker #export TFS_COMPONENTS="${TFS_COMPONENTS} bgpls_speaker" @@ -62,6 +65,9 @@ export TFS_COMPONENTS="context device pathcomp opticalcontroller qkd_app service # Uncomment to activate E2E Orchestrator #export TFS_COMPONENTS="${TFS_COMPONENTS} e2e_orchestrator" +# Uncomment to activate VNT Manager +#export TFS_COMPONENTS="${TFS_COMPONENTS} vnt_manager" + # Uncomment to activate DLT and Interdomain #export TFS_COMPONENTS="${TFS_COMPONENTS} interdomain dlt" #if [[ "$TFS_COMPONENTS" == *"dlt"* ]]; then @@ -80,6 +86,9 @@ export TFS_COMPONENTS="context device pathcomp opticalcontroller qkd_app service # export TFS_COMPONENTS="${BEFORE} qkd_app service ${AFTER}" #fi +# Uncomment to activate Load Generator +#export TFS_COMPONENTS="${TFS_COMPONENTS} load_generator" + # Set the tag you want to use for your images. export TFS_IMAGE_TAG="dev" @@ -131,7 +140,7 @@ export CRDB_DEPLOY_MODE="single" export CRDB_DROP_DATABASE_IF_EXISTS="" # Disable flag for re-deploying CockroachDB from scratch. -export CRDB_REDEPLOY="YES" +export CRDB_REDEPLOY="" # ----- NATS ------------------------------------------------------------------- diff --git a/proto/analytics_frontend.proto b/proto/analytics_frontend.proto index ace0581db816bee1d0d20746f2b864dce602567b..bb6afb2e424b646fd8d9a6810c38a8a6863c230f 100644 --- a/proto/analytics_frontend.proto +++ b/proto/analytics_frontend.proto @@ -20,7 +20,7 @@ import "kpi_manager.proto"; //import "kpi_sample_types.proto"; service AnalyticsFrontendService { - rpc StartAnalyzer (Analyzer ) returns (AnalyzerId ) {} + rpc StartAnalyzer (Analyzer ) returns (AnalyzerId) {} rpc StopAnalyzer (AnalyzerId ) returns (context.Empty) {} rpc SelectAnalyzers(AnalyzerFilter) returns (AnalyzerList ) {} } diff --git a/proto/automation.proto b/proto/automation.proto new file mode 100644 index 0000000000000000000000000000000000000000..edb1ef404171270e740e2b30944151d98607292c --- /dev/null +++ b/proto/automation.proto @@ -0,0 +1,69 @@ +// Copyright 2022-2024 ETSI OSG/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. + +syntax = "proto3"; +package automation; + +import "context.proto"; +import "policy.proto"; + +// Automation service RPCs +service AutomationService { + rpc ZSMCreate (ZSMCreateRequest ) returns (ZSMService ) {} + rpc ZSMUpdate (ZSMCreateUpdate ) returns (ZSMService ) {} + rpc ZSMDelete (ZSMServiceID ) returns (ZSMServiceState) {} + rpc ZSMGetById (ZSMServiceID ) returns (ZSMService ) {} + rpc ZSMGetByService (context.ServiceId) returns (ZSMService ) {} +} + +// ZSM service states +enum ZSMServiceStateEnum { + ZSM_UNDEFINED = 0; // Undefined ZSM loop state + ZSM_FAILED = 1; // ZSM loop failed + ZSM_ACTIVE = 2; // ZSM loop is currently active + ZSM_INACTIVE = 3; // ZSM loop is currently inactive + ZSM_UPDATED = 4; // ZSM loop is updated + ZSM_REMOVED = 5; // ZSM loop is removed +} + +message ZSMCreateRequest { + context.ServiceId serviceId = 1; + policy.PolicyRuleList policyList = 2; +} + +message ZSMCreateUpdate { + context.Uuid ZSMServiceID = 1; + policy.PolicyRuleList policyList = 2; +} + +// A unique identifier per ZSM service +message ZSMServiceID { + context.Uuid uuid = 1; +} + +// The state of a ZSM service +message ZSMServiceState { + ZSMServiceStateEnum zsmServiceState = 1; + string zsmServiceStateMessage = 2; +} + +// Basic ZSM service attributes +message ZSMService { + ZSMServiceID zsmServiceId = 1; + + context.ServiceId serviceId = 2; + policy.PolicyRuleList policyList = 3; + + // TODO: When new Analytics and updated Monitoring are in place, add the necessary binding to them +} diff --git a/proto/context.proto b/proto/context.proto index 64a01526522889644ab68aa0b7a24e3db428416c..f7659a01e101e0f61168cb0503133bf75bc892a9 100644 --- a/proto/context.proto +++ b/proto/context.proto @@ -77,20 +77,20 @@ service ContextService { // ------------------------------ Experimental ----------------------------- - rpc GetOpticalConfig (Empty ) returns ( OpticalConfigList ) {} - rpc SetOpticalConfig (OpticalConfig ) returns ( OpticalConfigId ) {} - rpc UpdateOpticalConfig (OpticalConfig ) returns ( OpticalConfigId ) {} - rpc SelectOpticalConfig (OpticalConfigId ) returns ( OpticalConfig ) {} - rpc DeleteOpticalConfig (OpticalConfigId ) returns ( Empty ) {} - rpc DeleteOpticalChannel (OpticalConfig ) returns ( Empty ) {} + rpc GetOpticalConfig (Empty ) returns (OpticalConfigList) {} + rpc SetOpticalConfig (OpticalConfig ) returns (OpticalConfigId ) {} + rpc UpdateOpticalConfig (OpticalConfig ) returns (OpticalConfigId ) {} + rpc SelectOpticalConfig (OpticalConfigId ) returns (OpticalConfig ) {} + rpc DeleteOpticalConfig (OpticalConfigId ) returns (Empty ) {} + rpc DeleteOpticalChannel (OpticalConfig ) returns (Empty ) {} - rpc SetOpticalLink (OpticalLink ) returns ( Empty ) {} - rpc GetOpticalLink (LinkId ) returns ( OpticalLink ) {} - rpc DeleteOpticalLink (LinkId ) returns ( Empty ) {} - rpc GetOpticalLinkList (Empty ) returns ( OpticalLinkList ) {} + rpc SetOpticalLink (OpticalLink ) returns (Empty ) {} + rpc GetOpticalLink (LinkId ) returns (OpticalLink ) {} + rpc DeleteOpticalLink (LinkId ) returns (Empty ) {} + rpc GetOpticalLinkList (Empty ) returns (OpticalLinkList ) {} - rpc DeleteServiceConfigRule (ServiceConfigRule ) returns ( Empty ) {} - } + rpc DeleteServiceConfigRule(ServiceConfigRule) returns (Empty ) {} +} // ----- Generic ------------------------------------------------------------------------------------------------------- message Empty {} @@ -154,8 +154,7 @@ message Topology { string name = 2; repeated DeviceId device_ids = 3; repeated LinkId link_ids = 4; - - repeated LinkId optical_link_ids=5; + repeated LinkId optical_link_ids = 5; } message TopologyDetails { @@ -163,8 +162,7 @@ message TopologyDetails { string name = 2; repeated Device devices = 3; repeated Link links = 4; - - repeated OpticalLink optical_links =5 ; + repeated OpticalLink optical_links = 5; } message TopologyIdList { @@ -270,6 +268,7 @@ message Link { string name = 2; repeated EndPointId link_endpoint_ids = 3; LinkAttributes attributes = 4; + LinkTypeEnum link_type = 5; } message LinkIdList { @@ -285,6 +284,13 @@ message LinkEvent { LinkId link_id = 2; } +enum LinkTypeEnum { + LINKTYPE_UNKNOWN = 0; + LINKTYPE_COPPER = 1; + LINKTYPE_VIRTUAL_COPPER = 2; + LINKTYPE_OPTICAL = 3; + LINKTYPE_VIRTUAL_OPTICAL = 4; +} // ----- Service ------------------------------------------------------------------------------------------------------- message ServiceId { @@ -321,7 +327,6 @@ enum ServiceStatusEnum { SERVICESTATUS_UPDATING = 3; SERVICESTATUS_PENDING_REMOVAL = 4; SERVICESTATUS_SLA_VIOLATED = 5; - } message ServiceStatus { @@ -547,7 +552,7 @@ message Constraint_Custom { } message Constraint_Schedule { - float start_timestamp = 1; + double start_timestamp = 1; float duration_days = 2; } @@ -613,6 +618,16 @@ message Constraint_Exclusions { repeated LinkId link_ids = 4; } + +message QoSProfileId { + context.Uuid qos_profile_id = 1; +} + +message Constraint_QoSProfile { + QoSProfileId qos_profile_id = 1; + string qos_profile_name = 2; +} + message Constraint { ConstraintActionEnum action = 1; oneof constraint { @@ -625,6 +640,7 @@ message Constraint { Constraint_SLA_Availability sla_availability = 8; Constraint_SLA_Isolation_level sla_isolation = 9; Constraint_Exclusions exclusions = 10; + Constraint_QoSProfile qos_profile = 11; } } @@ -664,7 +680,6 @@ message OpticalConfigEvent { // ---- Optical Link ---- message OpticalEndPointId { - DeviceId device_id = 2; Uuid endpoint_uuid = 3; } @@ -683,16 +698,16 @@ message OpticalLinkDetails { string local_peer_port = 4; string remote_peer_port = 5 ; bool used = 6 ; - map< string ,int32 > c_slots = 7; - map< string ,int32 > l_slots = 8; - map< string ,int32 > s_slots = 9; + map c_slots = 7; + map l_slots = 8; + map s_slots = 9; } message OpticalLink { string name = 1; OpticalLinkDetails optical_details = 2; LinkId link_id = 3; - repeated EndPointId link_endpoint_ids=4; + repeated EndPointId link_endpoint_ids=4; } @@ -702,4 +717,4 @@ message OpticalLink { message ServiceConfigRule { ServiceId service_id =1; ConfigRule_Custom configrule_custom =2; -} \ No newline at end of file +} diff --git a/proto/e2eorchestrator.proto b/proto/e2eorchestrator.proto index d8f539f9fa7a7adaeaf48add127dd3077c904375..731016934300a45e6664b90e73ba458cb03ecfb7 100644 --- a/proto/e2eorchestrator.proto +++ b/proto/e2eorchestrator.proto @@ -20,7 +20,8 @@ import "context.proto"; service E2EOrchestratorService { - rpc Compute(E2EOrchestratorRequest) returns (E2EOrchestratorReply) {} + rpc Compute(E2EOrchestratorRequest) returns (E2EOrchestratorReply) {} + rpc PushTopology(context.Topology) returns (context.Empty) {} } message E2EOrchestratorRequest { diff --git a/proto/kpi_value_api.proto b/proto/kpi_value_api.proto index dff96272e3d05756dd19a49ecaede7311b196540..a97b0ae2b023dfe0a535aa3cb1ba63b00b418371 100644 --- a/proto/kpi_value_api.proto +++ b/proto/kpi_value_api.proto @@ -19,18 +19,19 @@ import "context.proto"; import "kpi_manager.proto"; service KpiValueAPIService { - rpc StoreKpiValues (KpiValueList) returns (context.Empty) {} - rpc SelectKpiValues (KpiValueFilter) returns (KpiValueList) {} + rpc StoreKpiValues (KpiValueList ) returns (context.Empty ) {} + rpc SelectKpiValues (KpiValueFilter ) returns (KpiValueList ) {} + rpc GetKpiAlarms (kpi_manager.KpiId) returns (stream KpiAlarms) {} } message KpiValue { - kpi_manager.KpiId kpi_id = 1; - context.Timestamp timestamp = 2; - KpiValueType kpi_value_type = 3; + kpi_manager.KpiId kpi_id = 1; + context.Timestamp timestamp = 2; + KpiValueType kpi_value_type = 3; } message KpiValueList { - repeated KpiValue kpi_value_list = 1; + repeated KpiValue kpi_value_list = 1; } message KpiValueType { @@ -46,7 +47,14 @@ message KpiValueType { } message KpiValueFilter { - repeated kpi_manager.KpiId kpi_id = 1; - repeated context.Timestamp start_timestamp = 2; - repeated context.Timestamp end_timestamp = 3; + repeated kpi_manager.KpiId kpi_id = 1; + repeated context.Timestamp start_timestamp = 2; + repeated context.Timestamp end_timestamp = 3; +} + +message KpiAlarms { + context.Timestamp start_timestamp = 1; + context.Timestamp end_timestamp = 2; + kpi_manager.KpiId kpi_id = 3; + map alarms = 4; } diff --git a/proto/optical_device.proto b/proto/optical_device.proto index 2be96a2a066ce5b14e926860490e5935215d008b..39eb92e4420bf28979b5da9d93ec9264a07dacb3 100644 --- a/proto/optical_device.proto +++ b/proto/optical_device.proto @@ -18,9 +18,8 @@ package optical_device; import "context.proto"; service OpenConfigService { - rpc AddOpenConfigDevice (context.OpticalConfig) returns (context.OpticalConfigId) {} - rpc ConfigureOpticalDevice(context.OpticalConfig) returns (context.Empty ) {} - rpc DisableOpticalDevice(context.OpticalConfig) returns (context.Empty ) {} - rpc GetDeviceConfiguration(context.OpticalConfigList) returns (context.Empty) {} - + rpc AddOpenConfigDevice (context.OpticalConfig ) returns (context.OpticalConfigId) {} + rpc ConfigureOpticalDevice(context.OpticalConfig ) returns (context.Empty ) {} + rpc DisableOpticalDevice (context.OpticalConfig ) returns (context.Empty ) {} + rpc GetDeviceConfiguration(context.OpticalConfigList) returns (context.Empty ) {} } diff --git a/proto/qkd_app.proto b/proto/qkd_app.proto index 7b6c47330833849b889e770aac43844ec6e6072c..b22948d6cd3040146677d378a080283786d44f96 100644 --- a/proto/qkd_app.proto +++ b/proto/qkd_app.proto @@ -1,11 +1,26 @@ +// Copyright 2022-2024 ETSI OSG/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. + syntax = "proto3"; package qkd_app; import "context.proto"; -// Optare: Change this if you want to change App's structure or enums. -// Optare: If a message (structure) is changed it must be changed in src/app/service/database +// Define Empty message if you don't want to use google.protobuf.Empty. +message Empty {} +// Enum representing possible states of a QKD application. enum QKDAppStatusEnum { QKDAPPSTATUS_ON = 0; QKDAPPSTATUS_DISCONNECTED = 1; @@ -13,16 +28,26 @@ enum QKDAppStatusEnum { QKDAPPSTATUS_ZOMBIE = 3; } +// Enum representing QKD application types. enum QKDAppTypesEnum { QKDAPPTYPES_INTERNAL = 0; QKDAPPTYPES_CLIENT = 1; } +// Message representing a QKDL (Quantum Key Distribution Link) identifier. message QKDLId { context.Uuid qkdl_uuid = 1; } +// Define QoS parameters for QKD applications +message QoS { + uint32 max_bandwidth = 1; // Maximum bandwidth (in bits per second) + uint32 min_bandwidth = 2; // Minimum bandwidth (optional) + uint32 jitter = 3; // Maximum jitter (in milliseconds) + uint32 ttl = 4; // Time-to-live (in seconds) +} +// Main message representing a QKD application with all required fields. message App { AppId app_id = 1; QKDAppStatusEnum app_status = 2; @@ -32,22 +57,24 @@ message App { repeated QKDLId backing_qkdl_id = 6; context.DeviceId local_device_id = 7; context.DeviceId remote_device_id = 8; + QoS qos = 9; // Include QoS in the App message } - +// Message representing an identifier for an app. message AppId { context.ContextId context_id = 1; context.Uuid app_uuid = 2; } - +// Service definition for AppService, including app registration and listing. service AppService { rpc RegisterApp(App) returns (context.Empty) {} - rpc ListApps (context.ContextId ) returns ( AppList ) {} - } - - + rpc ListApps(context.ContextId) returns (AppList) {} + rpc GetApp(AppId) returns (App) {} + rpc DeleteApp (AppId) returns (Empty) {} // Use locally defined Empty +} - message AppList { +// Message representing a list of apps. +message AppList { repeated App apps = 1; } diff --git a/proto/qos_profile.proto b/proto/qos_profile.proto new file mode 100644 index 0000000000000000000000000000000000000000..d032addf4889c8a7a19c260c23df6c74c8ffe55b --- /dev/null +++ b/proto/qos_profile.proto @@ -0,0 +1,58 @@ +// Copyright 2022-2024 ETSI OSG/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. + +syntax = "proto3"; +package qos_profile; + +import "context.proto"; + +message QoSProfileValueUnitPair { + int32 value = 1; + string unit = 2; +} + +message QoDConstraintsRequest { + context.QoSProfileId qos_profile_id = 1; + double start_timestamp = 2; + float duration = 3; +} + +message QoSProfile { + context.QoSProfileId qos_profile_id = 1; + string name = 2; + string description = 3; + string status = 4; + QoSProfileValueUnitPair targetMinUpstreamRate = 5; + QoSProfileValueUnitPair maxUpstreamRate = 6; + QoSProfileValueUnitPair maxUpstreamBurstRate = 7; + QoSProfileValueUnitPair targetMinDownstreamRate = 8; + QoSProfileValueUnitPair maxDownstreamRate = 9; + QoSProfileValueUnitPair maxDownstreamBurstRate = 10; + QoSProfileValueUnitPair minDuration = 11; + QoSProfileValueUnitPair maxDuration = 12; + int32 priority = 13; + QoSProfileValueUnitPair packetDelayBudget = 14; + QoSProfileValueUnitPair jitter = 15; + int32 packetErrorLossRate = 16; +} + + +service QoSProfileService { + rpc CreateQoSProfile (QoSProfile ) returns ( QoSProfile ) {} + rpc UpdateQoSProfile (QoSProfile ) returns ( QoSProfile ) {} + rpc DeleteQoSProfile (context.QoSProfileId ) returns ( context.Empty ) {} + rpc GetQoSProfile (context.QoSProfileId ) returns ( QoSProfile ) {} + rpc GetQoSProfiles (context.Empty ) returns (stream QoSProfile ) {} + rpc GetConstraintListFromQoSProfile (QoDConstraintsRequest) returns (stream context.Constraint) {} +} diff --git a/proto/vnt_manager.proto b/proto/vnt_manager.proto new file mode 100644 index 0000000000000000000000000000000000000000..1e1d67e122fa0cbb7088b366c5001a712a38a1f0 --- /dev/null +++ b/proto/vnt_manager.proto @@ -0,0 +1,37 @@ +// Copyright 2022-2024 ETSI OSG/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. + +// protocol buffers documentation: https://developers.google.com/protocol-buffers/docs/proto3 +syntax = "proto3"; +package vnt_manager; +import "context.proto"; + + +service VNTManagerService { + rpc VNTSubscript (VNTSubscriptionRequest) returns (VNTSubscriptionReply) {} + rpc ListVirtualLinkIds (context.Empty) returns (context.LinkIdList) {} + rpc ListVirtualLinks (context.Empty) returns (context.LinkList) {} + rpc GetVirtualLink (context.LinkId) returns (context.Link) {} + rpc SetVirtualLink (context.Link) returns (context.LinkId) {} + rpc RemoveVirtualLink (context.LinkId) returns (context.Empty) {} +} + +message VNTSubscriptionRequest { + string host = 1; + string port = 2; +} + +message VNTSubscriptionReply { + string subscription = 1; +} diff --git a/scripts/run_tests_locally-analytics-DB.sh b/scripts/run_tests_locally-analytics-DB.sh index 9df5068d6bde361a4a1e73b96990c0d407c88cb4..3efc8f97177ee821d7c4c1ce19ccb0a0f8731cce 100755 --- a/scripts/run_tests_locally-analytics-DB.sh +++ b/scripts/run_tests_locally-analytics-DB.sh @@ -19,6 +19,6 @@ PROJECTDIR=`pwd` cd $PROJECTDIR/src RCFILE=$PROJECTDIR/coverage/.coveragerc CRDB_SQL_ADDRESS=$(kubectl get service cockroachdb-public --namespace crdb -o jsonpath='{.spec.clusterIP}') -export CRDB_URI="cockroachdb://tfs:tfs123@${CRDB_SQL_ADDRESS}:26257/tfs_kpi_mgmt?sslmode=require" +export CRDB_URI="cockroachdb://tfs:tfs123@${CRDB_SQL_ADDRESS}:26257/tfs_analytics?sslmode=require" python3 -m pytest --log-level=DEBUG --log-cli-level=DEBUG --verbose \ analytics/tests/test_analytics_db.py diff --git a/scripts/run_tests_locally-analytics-backend.sh b/scripts/run_tests_locally-analytics-backend.sh new file mode 100755 index 0000000000000000000000000000000000000000..f2e0120278f07f01e41ccd90357a5ee863cb5698 --- /dev/null +++ b/scripts/run_tests_locally-analytics-backend.sh @@ -0,0 +1,25 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + + +PROJECTDIR=`pwd` + +cd $PROJECTDIR/src +RCFILE=$PROJECTDIR/coverage/.coveragerc +export KFK_SERVER_ADDRESS='127.0.0.1:9092' +CRDB_SQL_ADDRESS=$(kubectl get service cockroachdb-public --namespace crdb -o jsonpath='{.spec.clusterIP}') +export CRDB_URI="cockroachdb://tfs:tfs123@${CRDB_SQL_ADDRESS}:26257/tfs_analytics?sslmode=require" +python3 -m pytest --log-level=DEBUG --log-cli-level=DEBUG --verbose \ + analytics/backend/tests/test_backend.py diff --git a/scripts/run_tests_locally-analytics-frontend.sh b/scripts/run_tests_locally-analytics-frontend.sh index e30d30da623b2d0eee3d925d69a846b4b1f516a3..ea04e0323b79c3308e279add86421bdc2d1a46bd 100755 --- a/scripts/run_tests_locally-analytics-frontend.sh +++ b/scripts/run_tests_locally-analytics-frontend.sh @@ -18,7 +18,8 @@ PROJECTDIR=`pwd` cd $PROJECTDIR/src RCFILE=$PROJECTDIR/coverage/.coveragerc +export KFK_SERVER_ADDRESS='127.0.0.1:9092' CRDB_SQL_ADDRESS=$(kubectl get service cockroachdb-public --namespace crdb -o jsonpath='{.spec.clusterIP}') -export CRDB_URI="cockroachdb://tfs:tfs123@${CRDB_SQL_ADDRESS}:26257/tfs_kpi_mgmt?sslmode=require" +export CRDB_URI="cockroachdb://tfs:tfs123@${CRDB_SQL_ADDRESS}:26257/tfs_analytics?sslmode=require" python3 -m pytest --log-level=DEBUG --log-cli-level=DEBUG --verbose \ analytics/frontend/tests/test_frontend.py diff --git a/scripts/run_tests_locally-device-gnmi-openconfig.sh b/scripts/run_tests_locally-device-gnmi-openconfig.sh new file mode 100755 index 0000000000000000000000000000000000000000..92e8448126f53a7f34b97c480585fea25f2b0411 --- /dev/null +++ b/scripts/run_tests_locally-device-gnmi-openconfig.sh @@ -0,0 +1,25 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + + +PROJECTDIR=`pwd` + +cd $PROJECTDIR/src +RCFILE=$PROJECTDIR/coverage/.coveragerc + +# Run unitary tests and analyze coverage of code at same time +# helpful pytest flags: --log-level=INFO -o log_cli=true --verbose --maxfail=1 --durations=0 +coverage run --rcfile=$RCFILE --append -m pytest --log-level=INFO --verbose \ + device/tests/gnmi_openconfig/test_unitary_gnmi_openconfig.py diff --git a/scripts/run_tests_locally-device-openconfig-arista-l2vpn.sh b/scripts/run_tests_locally-device-openconfig-arista-l2vpn.sh new file mode 100755 index 0000000000000000000000000000000000000000..9e151dd3e4c482d90342af91de0cbb018fb1bf78 --- /dev/null +++ b/scripts/run_tests_locally-device-openconfig-arista-l2vpn.sh @@ -0,0 +1,25 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + + +PROJECTDIR=`pwd` + +cd $PROJECTDIR/src +RCFILE=$PROJECTDIR/coverage/.coveragerc + +# Run unitary tests and analyze coverage of code at same time +# helpful pytest flags: --log-level=INFO -o log_cli=true --verbose --maxfail=1 --durations=0 +coverage run --rcfile=$RCFILE --append -m pytest --log-level=INFO -o log_cli=true --verbose \ + device/tests/test_unitary_openconfig_arista_l2vpn.py diff --git a/scripts/run_tests_locally-kpi-DB.sh b/scripts/run_tests_locally-kpi-DB.sh index 4953b49e0a437becfda1648c722bcdcf92c58d93..29c6595102c22bc47fa221eb80459aea934cbcd9 100755 --- a/scripts/run_tests_locally-kpi-DB.sh +++ b/scripts/run_tests_locally-kpi-DB.sh @@ -24,7 +24,7 @@ cd $PROJECTDIR/src # python3 kpi_manager/tests/test_unitary.py RCFILE=$PROJECTDIR/coverage/.coveragerc -CRDB_SQL_ADDRESS=$(kubectl --namespace ${CRDB_NAMESPACE} get service cockroachdb-public -o 'jsonpath={.spec.clusterIP}') +CRDB_SQL_ADDRESS=$(kubectl get service --namespace ${CRDB_NAMESPACE} cockroachdb-public -o 'jsonpath={.spec.clusterIP}') export CRDB_URI="cockroachdb://tfs:tfs123@${CRDB_SQL_ADDRESS}:26257/tfs_kpi_mgmt?sslmode=require" python3 -m pytest --log-level=DEBUG --log-cli-level=DEBUG --verbose \ kpi_manager/tests/test_kpi_db.py diff --git a/scripts/run_tests_locally-kpi-value-API.sh b/scripts/run_tests_locally-kpi-value-API.sh index 3953d2a89c6fbe2bd3546e648246b9b018e5fdb0..96ac558bad5f0bf6bc6f5ee90a26cd11fda69273 100755 --- a/scripts/run_tests_locally-kpi-value-API.sh +++ b/scripts/run_tests_locally-kpi-value-API.sh @@ -19,8 +19,9 @@ PROJECTDIR=`pwd` cd $PROJECTDIR/src RCFILE=$PROJECTDIR/coverage/.coveragerc -KAFKA_IP=$(docker inspect kafka --format "{{.NetworkSettings.Networks.teraflowbridge.IPAddress}}") -KFK_SERVER_ADDRESS=${KAFKA_IP}:9092 +# KAFKA_IP=$(docker inspect kafka --format "{{.NetworkSettings.Networks.teraflowbridge.IPAddress}}") +# export KFK_SERVER_ADDRESS=${KAFKA_IP}:9092 +export KFK_SERVER_ADDRESS='127.0.0.1:9092' # helpful pytest flags: --log-level=INFO -o log_cli=true --verbose --maxfail=1 --durations=0 python3 -m pytest --log-level=DEBUG --log-cli-level=DEBUG -o log_cli=true --verbose \ kpi_value_api/tests/test_kpi_value_api.py diff --git a/scripts/run_tests_locally-kpi-value-writer.sh b/scripts/run_tests_locally-kpi-value-writer.sh index 8faaeb6d895a240278d7ceb0c5c0b2855fa25910..6c3f16261a2d0e2083b17bcd205011b4347205be 100755 --- a/scripts/run_tests_locally-kpi-value-writer.sh +++ b/scripts/run_tests_locally-kpi-value-writer.sh @@ -18,6 +18,7 @@ PROJECTDIR=`pwd` cd $PROJECTDIR/src +export KFK_SERVER_ADDRESS='127.0.0.1:9092' RCFILE=$PROJECTDIR/coverage/.coveragerc python3 -m pytest --log-level=DEBUG --log-cli-level=DEBUG --verbose \ kpi_value_writer/tests/test_kpi_value_writer.py diff --git a/scripts/run_tests_locally-telemetry-DB.sh b/scripts/run_tests_locally-telemetry-DB.sh index 4b9a417603cc42a4e7e8b19c7394cc38633817fa..b9f86a208aab3fddbf243ba986de153775f30c2c 100755 --- a/scripts/run_tests_locally-telemetry-DB.sh +++ b/scripts/run_tests_locally-telemetry-DB.sh @@ -20,7 +20,8 @@ cd $PROJECTDIR/src # RCFILE=$PROJECTDIR/coverage/.coveragerc # coverage run --rcfile=$RCFILE --append -m pytest --log-level=INFO --verbose \ # kpi_manager/tests/test_unitary.py - +CRDB_SQL_ADDRESS=$(kubectl get service --namespace ${CRDB_NAMESPACE} cockroachdb-public -o 'jsonpath={.spec.clusterIP}') +export CRDB_URI="cockroachdb://tfs:tfs123@${CRDB_SQL_ADDRESS}:26257/tfs_telemetry?sslmode=require" RCFILE=$PROJECTDIR/coverage/.coveragerc python3 -m pytest --log-level=DEBUG --log-cli-level=debug --verbose \ telemetry/tests/test_telemetryDB.py diff --git a/scripts/run_tests_locally-telemetry-backend.sh b/scripts/run_tests_locally-telemetry-backend.sh index 79db05fcf1259365e8a909ee99395eb59dfb9437..f711282401d8fff9b6c98cea7c9240482f1ba24b 100755 --- a/scripts/run_tests_locally-telemetry-backend.sh +++ b/scripts/run_tests_locally-telemetry-backend.sh @@ -22,7 +22,11 @@ cd $PROJECTDIR/src # kpi_manager/tests/test_unitary.py # python3 kpi_manager/tests/test_unitary.py - +export KFK_SERVER_ADDRESS='127.0.0.1:9092' +CRDB_SQL_ADDRESS=$(kubectl get service cockroachdb-public --namespace crdb -o jsonpath='{.spec.clusterIP}') +export CRDB_URI="cockroachdb://tfs:tfs123@${CRDB_SQL_ADDRESS}:26257/tfs_telemetry?sslmode=require" RCFILE=$PROJECTDIR/coverage/.coveragerc + + python3 -m pytest --log-level=INFO --log-cli-level=debug --verbose \ telemetry/backend/tests/test_TelemetryBackend.py diff --git a/scripts/run_tests_locally-telemetry-frontend.sh b/scripts/run_tests_locally-telemetry-frontend.sh index a2a1de52340cac527d4d1c446c76740d38ce7783..4bb7bc3fa8e198ead54224148f60044e079ccdf3 100755 --- a/scripts/run_tests_locally-telemetry-frontend.sh +++ b/scripts/run_tests_locally-telemetry-frontend.sh @@ -17,12 +17,11 @@ PROJECTDIR=`pwd` cd $PROJECTDIR/src -# RCFILE=$PROJECTDIR/coverage/.coveragerc -# coverage run --rcfile=$RCFILE --append -m pytest --log-level=INFO --verbose \ -# kpi_manager/tests/test_unitary.py # python3 kpi_manager/tests/test_unitary.py - +export KFK_SERVER_ADDRESS='127.0.0.1:9092' +CRDB_SQL_ADDRESS=$(kubectl get service cockroachdb-public --namespace crdb -o jsonpath='{.spec.clusterIP}') +export CRDB_URI="cockroachdb://tfs:tfs123@${CRDB_SQL_ADDRESS}:26257/tfs_telemetry?sslmode=require" RCFILE=$PROJECTDIR/coverage/.coveragerc python3 -m pytest --log-level=DEBUG --log-cli-level=DEBUG --verbose \ telemetry/frontend/tests/test_frontend.py diff --git a/scripts/show_logs_automation.sh b/scripts/show_logs_automation.sh index 8a0e417d9a7ddf1ffe0b4e4529606683ae600ecd..26684298091403f4dc737fc0d1ca5b05d82ad374 100755 --- a/scripts/show_logs_automation.sh +++ b/scripts/show_logs_automation.sh @@ -24,4 +24,4 @@ export TFS_K8S_NAMESPACE=${TFS_K8S_NAMESPACE:-"tfs"} # Automated steps start here ######################################################################################################################## -kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/ztpservice +kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/automationservice diff --git a/scripts/show_logs_e2eorchestrator.sh b/scripts/show_logs_e2eorchestrator.sh old mode 100644 new mode 100755 index 5ac39c6cba06e57720368dd37454986fdc0e1e29..bf1fb5987e4a65fd231f057f71cc3ffcffc14655 --- a/scripts/show_logs_e2eorchestrator.sh +++ b/scripts/show_logs_e2eorchestrator.sh @@ -24,4 +24,4 @@ export TFS_K8S_NAMESPACE=${TFS_K8S_NAMESPACE:-"tfs"} # Automated steps start here ######################################################################################################################## -kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/e2eorchestratorservice -c server +kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/e2e-orchestratorservice -c server diff --git a/scripts/show_logs_qos_profile.sh b/scripts/show_logs_qos_profile.sh new file mode 100755 index 0000000000000000000000000000000000000000..744bed9a62af6c376e94d7d13492b796821ecc53 --- /dev/null +++ b/scripts/show_logs_qos_profile.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + +######################################################################################################################## +# Define your deployment settings here +######################################################################################################################## + +# If not already set, set the name of the Kubernetes namespace to deploy to. +export TFS_K8S_NAMESPACE=${TFS_K8S_NAMESPACE:-"tfs"} + +######################################################################################################################## +# Automated steps start here +######################################################################################################################## + +kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/qos_profileservice -c server diff --git a/scripts/show_logs_telemetry-backend.sh b/scripts/show_logs_telemetry-backend.sh new file mode 100755 index 0000000000000000000000000000000000000000..c28083dcbf5c7056145d1a0696116da66b5e9828 --- /dev/null +++ b/scripts/show_logs_telemetry-backend.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + +######################################################################################################################## +# Define your deployment settings here +######################################################################################################################## + +# If not already set, set the name of the Kubernetes namespace to deploy to. +export TFS_K8S_NAMESPACE=${TFS_K8S_NAMESPACE:-"tfs"} + +######################################################################################################################## +# Automated steps start here +######################################################################################################################## + +kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/telemetryservice -c backend diff --git a/scripts/show_logs_telemetry-frontend.sh b/scripts/show_logs_telemetry-frontend.sh new file mode 100755 index 0000000000000000000000000000000000000000..821dc275b22ebf7ffc63d2e8c41dfab684407895 --- /dev/null +++ b/scripts/show_logs_telemetry-frontend.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + +######################################################################################################################## +# Define your deployment settings here +######################################################################################################################## + +# If not already set, set the name of the Kubernetes namespace to deploy to. +export TFS_K8S_NAMESPACE=${TFS_K8S_NAMESPACE:-"tfs"} + +######################################################################################################################## +# Automated steps start here +######################################################################################################################## + +kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/telemetryservice -c frontend diff --git a/scripts/show_logs_vntmanager.sh b/scripts/show_logs_vntmanager.sh new file mode 100755 index 0000000000000000000000000000000000000000..0dba86567bd5118b685c72fd17b1904acfe698cc --- /dev/null +++ b/scripts/show_logs_vntmanager.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + +######################################################################################################################## +# Define your deployment settings here +######################################################################################################################## + +# If not already set, set the name of the Kubernetes namespace to deploy to. +export TFS_K8S_NAMESPACE=${TFS_K8S_NAMESPACE:-"tfs"} + +######################################################################################################################## +# Automated steps start here +######################################################################################################################## + +kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/vnt_managerservice -c server diff --git a/scripts/update_license_headers.py b/scripts/update_license_headers.py index 1de9f9b7c2795505aba53276a0deb2acdcccc703..34d620ed8bc1a0817509916c2d1f857979cdd431 100644 --- a/scripts/update_license_headers.py +++ b/scripts/update_license_headers.py @@ -32,6 +32,7 @@ STR_NEW_COPYRIGHT = 'Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https:/ RE_OLD_COPYRIGHTS = [ r'Copyright\ 2021\-2023\ H2020\ TeraFlow\ \(https\:\/\/www\.teraflow\-h2020\.eu\/\)', r'Copyright\ 2022\-2023\ ETSI\ TeraFlowSDN\ \-\ TFS\ OSG\ \(https\:\/\/tfs\.etsi\.org\/\)', + r'Copyright\ 2022\-2024\ ETSI\ TeraFlowSDN\ \-\ TFS\ OSG\ \(https\:\/\/tfs\.etsi\.org\/\)', ] RE_OLD_COPYRIGHTS = [ (re.compile(r'.*{}.*'.format(re_old_copyright)), re.compile(re_old_copyright)) diff --git a/src/analytics/.gitlab-ci.yml b/src/analytics/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..dfc5f2195eeee621e95465bbc996d5a9af3e6c9c --- /dev/null +++ b/src/analytics/.gitlab-ci.yml @@ -0,0 +1,206 @@ +# Copyright 2022-2024 ETSI OSG/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. + +# Build, tag, and push the Docker image to the GitLab Docker registry +build analytics: + variables: + IMAGE_NAME: 'analytics' # name of the microservice + IMAGE_TAG: 'latest' # tag of the container image (production, development, etc) + stage: build + before_script: + - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY + script: + # This first build tags the builder resulting image to prevent being removed by dangling image removal command + # - docker buildx build -t "${IMAGE_NAME}-backend:${IMAGE_TAG}-builder" --target builder -f ./src/$IMAGE_NAME/backend/Dockerfile . + - docker buildx build -t "${IMAGE_NAME}-frontend:$IMAGE_TAG" -f ./src/$IMAGE_NAME/frontend/Dockerfile . + - docker buildx build -t "${IMAGE_NAME}-backend:$IMAGE_TAG" -f ./src/$IMAGE_NAME/backend/Dockerfile . + - docker tag "${IMAGE_NAME}-frontend:$IMAGE_TAG" "$CI_REGISTRY_IMAGE/${IMAGE_NAME}-frontend:$IMAGE_TAG" + - docker tag "${IMAGE_NAME}-backend:$IMAGE_TAG" "$CI_REGISTRY_IMAGE/${IMAGE_NAME}-backend:$IMAGE_TAG" + - docker push "$CI_REGISTRY_IMAGE/${IMAGE_NAME}-frontend:$IMAGE_TAG" + - docker push "$CI_REGISTRY_IMAGE/${IMAGE_NAME}-backend:$IMAGE_TAG" + after_script: + - docker images --filter="dangling=true" --quiet | xargs -r docker rmi + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)' + - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"' + - changes: + - src/common/**/*.py + - proto/*.proto + - src/$IMAGE_NAME/.gitlab-ci.yml + - src/$IMAGE_NAME/frontend/**/*.{py,in,yml} + - src/$IMAGE_NAME/frontend/Dockerfile + - src/$IMAGE_NAME/frontend/tests/*.py + - src/$IMAGE_NAME/backend/Dockerfile + - src/$IMAGE_NAME/backend/**/*.{py,in,yml} + - src/$IMAGE_NAME/backend/tests/*.py + - manifests/${IMAGE_NAME}service.yaml + - .gitlab-ci.yml + +# Apply unit test to the component +unit_test analytics-backend: + variables: + IMAGE_NAME: 'analytics' # name of the microservice + IMAGE_TAG: 'latest' # tag of the container image (production, development, etc) + stage: unit_test + needs: + - build analytics + before_script: + - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY + - if docker network list | grep teraflowbridge; then echo "teraflowbridge is already created"; else docker network create -d bridge teraflowbridge; fi + - if docker container ls | grep kafka; then docker rm -f kafka; else echo "Kafka container is not in the system"; fi + - if docker container ls | grep zookeeper; then docker rm -f zookeeper; else echo "Zookeeper container is not in the system"; fi + # - if docker container ls | grep ${IMAGE_NAME}-frontend; then docker rm -f ${IMAGE_NAME}-frontend; else echo "${IMAGE_NAME}-frontend container is not in the system"; fi + - if docker container ls | grep ${IMAGE_NAME}-backend; then docker rm -f ${IMAGE_NAME}-backend; else echo "${IMAGE_NAME}-backend container is not in the system"; fi + - docker container prune -f + script: + - docker pull "$CI_REGISTRY_IMAGE/${IMAGE_NAME}-backend:$IMAGE_TAG" + - docker pull "bitnami/zookeeper:latest" + - docker pull "bitnami/kafka:latest" + - > + docker run --name zookeeper -d --network=teraflowbridge -p 2181:2181 + --env ALLOW_ANONYMOUS_LOGIN=yes + bitnami/zookeeper:latest + - sleep 10 # Wait for Zookeeper to start + - > + docker run --name kafka -d --network=teraflowbridge -p 9092:9092 + --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 + --env ALLOW_PLAINTEXT_LISTENER=yes + bitnami/kafka:latest + - sleep 20 # Wait for Kafka to start + - KAFKA_IP=$(docker inspect kafka --format "{{.NetworkSettings.Networks.teraflowbridge.IPAddress}}") + - echo $KAFKA_IP + - > + docker run --name $IMAGE_NAME-backend -d -p 30060:30060 + --env "KFK_SERVER_ADDRESS=${KAFKA_IP}:9092" + --volume "$PWD/src/$IMAGE_NAME/backend/tests:/opt/results" + --network=teraflowbridge + $CI_REGISTRY_IMAGE/${IMAGE_NAME}-backend:$IMAGE_TAG + - docker ps -a + - sleep 5 + - docker logs ${IMAGE_NAME}-backend + - > + docker exec -i ${IMAGE_NAME}-backend bash -c + "coverage run -m pytest --log-level=INFO --verbose --junitxml=/opt/results/${IMAGE_NAME}-backend_report.xml $IMAGE_NAME/backend/tests/test_*.py" + - docker exec -i ${IMAGE_NAME}-backend bash -c "coverage report --include='${IMAGE_NAME}/*' --show-missing" + coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/' + after_script: + - docker rm -f ${IMAGE_NAME}-backend + - docker rm -f kafka + - docker rm -f zookeeper + - docker network rm teraflowbridge + - docker volume prune --force + - docker image prune --force + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)' + - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"' + - changes: + - src/common/**/*.py + - proto/*.proto + - src/$IMAGE_NAME/backend/**/*.{py,in,yml} + - src/$IMAGE_NAME/backend/Dockerfile + - src/$IMAGE_NAME/backend/tests/*.py + - manifests/${IMAGE_NAME}service.yaml + - .gitlab-ci.yml + artifacts: + when: always + reports: + junit: src/$IMAGE_NAME/backend/tests/${IMAGE_NAME}-backend_report.xml + +# Apply unit test to the component +unit_test analytics-frontend: + variables: + IMAGE_NAME: 'analytics' # name of the microservice + IMAGE_TAG: 'latest' # tag of the container image (production, development, etc) + stage: unit_test + needs: + - build analytics + before_script: + - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY + - if docker network list | grep teraflowbridge; then echo "teraflowbridge is already created"; else docker network create -d bridge teraflowbridge; fi + - if docker container ls | grep crdb; then docker rm -f crdb; else echo "CockroachDB container is not in the system"; fi + - if docker volume ls | grep crdb; then docker volume rm -f crdb; else echo "CockroachDB volume is not in the system"; fi + - if docker container ls | grep kafka; then docker rm -f kafka; else echo "Kafka container is not in the system"; fi + - if docker container ls | grep zookeeper; then docker rm -f zookeeper; else echo "Zookeeper container is not in the system"; fi + - if docker container ls | grep ${IMAGE_NAME}-frontend; then docker rm -f ${IMAGE_NAME}-frontend; else echo "${IMAGE_NAME}-frontend container is not in the system"; fi + - docker container prune -f + script: + - docker pull "$CI_REGISTRY_IMAGE/${IMAGE_NAME}-frontend:$IMAGE_TAG" + - docker pull "bitnami/zookeeper:latest" + - docker pull "bitnami/kafka:latest" + - docker pull "cockroachdb/cockroach:latest-v22.2" + - docker volume create crdb + - > + docker run --name crdb -d --network=teraflowbridge -p 26257:26257 -p 8080:8080 + --env COCKROACH_DATABASE=tfs_test --env COCKROACH_USER=tfs --env COCKROACH_PASSWORD=tfs123 + --volume "crdb:/cockroach/cockroach-data" + cockroachdb/cockroach:latest-v22.2 start-single-node + - echo "Waiting for initialization..." + - while ! docker logs crdb 2>&1 | grep -q 'finished creating default user \"tfs\"'; do sleep 1; done + # - docker logs crdb + # - docker ps -a + - CRDB_ADDRESS=$(docker inspect crdb --format "{{.NetworkSettings.Networks.teraflowbridge.IPAddress}}") + - echo $CRDB_ADDRESS + - > + docker run --name zookeeper -d --network=teraflowbridge -p 2181:2181 + --env ALLOW_ANONYMOUS_LOGIN=yes + bitnami/zookeeper:latest + - sleep 10 # Wait for Zookeeper to start + - > + docker run --name kafka -d --network=teraflowbridge -p 9092:9092 + --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 + --env ALLOW_PLAINTEXT_LISTENER=yes + bitnami/kafka:latest + - sleep 20 # Wait for Kafka to start + - KAFKA_IP=$(docker inspect kafka --format "{{.NetworkSettings.Networks.teraflowbridge.IPAddress}}") + - echo $KAFKA_IP + - docker logs zookeeper + - docker logs kafka + - > + docker run --name $IMAGE_NAME-frontend -d -p 30050:30050 + --env "CRDB_URI=cockroachdb://tfs:tfs123@${CRDB_ADDRESS}:26257/tfs_test?sslmode=require" + --env "KFK_SERVER_ADDRESS=${KAFKA_IP}:9092" + --volume "$PWD/src/$IMAGE_NAME/frontend/tests:/opt/results" + --network=teraflowbridge + $CI_REGISTRY_IMAGE/${IMAGE_NAME}-frontend:$IMAGE_TAG + - docker ps -a + - sleep 5 + - docker logs ${IMAGE_NAME}-frontend + - > + docker exec -i ${IMAGE_NAME}-frontend bash -c + "coverage run -m pytest --log-level=INFO --verbose --junitxml=/opt/results/${IMAGE_NAME}-frontend_report.xml $IMAGE_NAME/frontend/tests/test_*.py" + - docker exec -i ${IMAGE_NAME}-frontend bash -c "coverage report --include='${IMAGE_NAME}/*' --show-missing" + coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/' + after_script: + - docker rm -f ${IMAGE_NAME}-frontend + - docker rm -f zookeeper + - docker rm -f kafka + - docker volume rm -f crdb + - docker volume prune --force + - docker image prune --force + - docker network rm teraflowbridge + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)' + - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"' + - changes: + - src/common/**/*.py + - proto/*.proto + - src/$IMAGE_NAME/frontend/**/*.{py,in,yml} + - src/$IMAGE_NAME/frontend/Dockerfile + - src/$IMAGE_NAME/frontend/tests/*.py + - manifests/${IMAGE_NAME}service.yaml + - .gitlab-ci.yml + artifacts: + when: always + reports: + junit: src/$IMAGE_NAME/frontend/tests/${IMAGE_NAME}-frontend_report.xml diff --git a/src/analytics/README.md b/src/analytics/README.md index 9663e5321ace6866491b90553553d9ccbf5793a1..ece11ea969caf1cf92fb474ae1371c9979231ac2 100644 --- a/src/analytics/README.md +++ b/src/analytics/README.md @@ -1,4 +1,118 @@ -# How to locally run and test Analytic service (To be added soon) +# How to Locally Run and Test Analytic Frontend Service ### Pre-requisets -The following requirements should be fulfilled before the execuation of Telemetry service. +The following requirements should be fulfilled before the execuation of Analytics service. + +1. A virtual enviornment exist with all the required packages listed in [requirements.in](https://labs.etsi.org/rep/tfs/controller/-/blob/develop/src/analytics/frontend/requirements.in) sucessfully installed. +2. Verify the creation of required database and table. The +[Analytics DB test](https://labs.etsi.org/rep/tfs/controller/-/blob/develop/src/analytics/tests/test_analytics_db.py) python file lists the functions to create tables and the database. +3. The Analytics backend service should be running. + +4. All required Kafka topics must exist. Call `create_all_topics` from the [Kafka class](https://labs.etsi.org/rep/tfs/controller/-/blob/develop/src/common/tools/kafka/Variables.py) to create any topics that do not already exist. +``` +from common.tools.kafka.Variables import KafkaTopic +KafkaTopic.create_all_topics() +``` + +5. There will be an input stream on the Kafka topic that the Spark Streamer will consume and apply a defined thresholds. +- A JSON encoded string should be generated in the following format: +``` +'{"time_stamp": "2024-09-03T12:36:26Z", "kpi_id": "6e22f180-ba28-4641-b190-2287bf448888", "kpi_value": 44.22}' +``` +- `kpi_value` should be float or int. +- The Kafka producer key should be the UUID of the Analyzer used when creating it. +- Use the following Kafka topic to generate the stream: `KafkaTopic.ANALYTICS_RESPONSE.value`. + +## Steps to create and start Analyzer +The analyzer can be declared as below but there are many other ways to declare: + +The given object creation process for `_create_analyzer` involves defining an instance of the `Analyzer` message from the [gRPC definition](https://labs.etsi.org/rep/tfs/controller/-/blob/feat/194-unable-to-correctly-extract-the-aggregation-function-names-from-the-dictionary-received-as/proto/analytics_frontend.proto) and populating its fields. + +``` +from common.proto.analytics_frontend_pb2 import AnalyzerId +_create_analyzer_id = AnalyzerId() +``` + +Here is a breakdown of how each field is populated: + +### 1. **Analyzer ID** + - `analyzer_id`: This field uses a unique ID to identify the analyzer. In this case, the ID is a UUID. + ```python + _create_analyzer.analyzer_id.analyzer_id.uuid = "efef4d95-1cf1-43c4-9742-95c283ddd7a6" + ``` + - The commented-out code shows how the UUID can be generated dynamically using Python's `uuid.uuid4()`. However, for now, a static UUID is used. + +### 2. **Algorithm Name** + - `algorithm_name`: Specifies the name of the algorithm to be executed by the analyzer. + ```python + _create_analyzer.algorithm_name = "Test_Aggergate_and_Threshold" + ``` + +### 3. **Operation Mode** + - `operation_mode`: Sets the mode in which the analyzer operates, in this case, it's set to `ANALYZEROPERATIONMODE_STREAMING`. + ```python + _create_analyzer.operation_mode = AnalyzerOperationMode.ANALYZEROPERATIONMODE_STREAMING + ``` + +### 4. **Input KPI IDs** + - `input_kpi_ids`: This is a list of KPI IDs that will be used as input for the analysis. KPI IDs are represented using `KpiId`, and UUIDs are assigned to each input. The Spark streamer assume that the provided KPIs exists in the KPI Descriptor database. + ```python + _kpi_id = KpiId() + _kpi_id.kpi_id.uuid = "6e22f180-ba28-4641-b190-2287bf448888" + _create_analyzer.input_kpi_ids.append(_kpi_id) + + _kpi_id.kpi_id.uuid = "1e22f180-ba28-4641-b190-2287bf446666" + _create_analyzer.input_kpi_ids.append(_kpi_id) + ``` + +### 5. **Output KPI IDs** + - `output_kpi_ids`: A list of KPI IDs that are produced as output after analysis. Each one is generated and appended to the list. + ```python + _kpi_id = KpiId() + _create_analyzer.output_kpi_ids.append(_kpi_id) + ``` + +### 6. **Parameters** + - `parameters`: This is a dictionary containing key-value pairs of various parameters used by the analyzer. These values are often algorithm-specific. + - **Thresholds**: A dictionary containing threshold possible values (min, max, avg, first, last, stdev)_. For example: "min_latency", "max_bandwidth", "avg_datarate" etc. + ```python + _threshold_dict = { + 'min_latency' : (00, 10), + 'max_bandwidth': (40, 50), + 'avg_datarate': (00, 10) + } + _create_analyzer.parameters['thresholds'] = json.dumps(_threshold_dict) + ``` + - **Window Size**: Specifies the size of the time window (e.g., `60 seconds`). + ```python + _create_analyzer.parameters['window_size'] = "60 seconds" + ``` + - **Window Slider**: Defines the sliding window interval (e.g., `30 seconds`). + ```python + _create_analyzer.parameters['window_slider'] = "30 seconds" + ``` + +### **Calling `StartAnalyzer` with an Analyzer Frontend Object** + - The following code demonstrates how to call `StartAnalyzer()` with an Analyzer object: +```python +from analytics.frontend.client.AnalyticsFrontendClient import AnalyticsFrontendClient + +analytics_client_object = AnalyticsFrontendClient() +analytics_client_object.StartAnalyzer(_create_analyzer_id) +``` + +### **How to Receive Analyzer Responses** + - There is a non-gRPC method in the analyzer frontend called `StartResponseListener()`. The `analyzer_uuid` is the UUID of the analyzer provided when calling `StartAnalyzer()`. The following code will log the responses: +```python +from analytics.frontend.service.AnalyticsFrontendServiceServicerImpl import AnalyticsFrontendServiceServicerImpl + +analytic_frontend_service_object = AnalyticsFrontendServiceServicerImpl() +for response in analytic_frontend_service_object.StartResponseListener(): + LOGGER.debug(response) +``` + +### **Understanding the Output of the Analyzer** +- **Output Column Names**: The output JSON string will include two keys for each defined threshold. For example, the `min_latency` threshold will generate two keys: `min_latency_THRESHOLD_FAIL` and `min_latency_THRESHOLD_RAISE`. + - `min_latency_THRESHOLD_FAIL` is triggered if the average latency calculated within the defined window size is less than the specified threshold range. + - `min_latency_THRESHOLD_RAISE` is triggered if the average latency calculated within the defined window size exceeds the specified threshold range. +- The thresholds `min_latency_THRESHOLD_FAIL` and `min_latency_THRESHOLD_RAISE` will have a value of `TRUE` if activated; otherwise, they will be set to `FALSE`. diff --git a/src/analytics/backend/requirements.in b/src/analytics/backend/requirements.in index 9df678fe819f33d479b8f5090ca9ac4eb1f4047c..360d94f4668b19feba305df76a65ef70b26e091f 100644 --- a/src/analytics/backend/requirements.in +++ b/src/analytics/backend/requirements.in @@ -12,5 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -pyspark==3.5.2 +dask==2024.1.0 +distributed==2024.1.0 +pandas==2.2.3 confluent-kafka==2.3.* diff --git a/src/analytics/backend/service/AnalyticsBackendService.py b/src/analytics/backend/service/AnalyticsBackendService.py index 595603567fe537d9f7b33224cba0fe016a439631..2e57e1e8a70d141474b395b5e13f21bd4840abc5 100755 --- a/src/analytics/backend/service/AnalyticsBackendService.py +++ b/src/analytics/backend/service/AnalyticsBackendService.py @@ -12,18 +12,18 @@ # See the License for the specific language governing permissions and # limitations under the License. - +import time import json import logging import threading from common.tools.service.GenericGrpcService import GenericGrpcService -from analytics.backend.service.SparkStreaming import SparkStreamer from common.tools.kafka.Variables import KafkaConfig, KafkaTopic from confluent_kafka import Consumer as KafkaConsumer from confluent_kafka import KafkaError from common.Constants import ServiceNameEnum from common.Settings import get_service_port_grpc - +from threading import Thread, Event +from .DaskStreaming import DaskStreamer LOGGER = logging.getLogger(__name__) @@ -40,58 +40,18 @@ class AnalyticsBackendService(GenericGrpcService): 'group.id' : 'analytics-frontend', 'auto.offset.reset' : 'latest'}) - def StartSparkStreamer(self, analyzer_uuid, analyzer): - kpi_list = analyzer['input_kpis'] - oper_list = [s.replace('_value', '') for s in list(analyzer["thresholds"].keys())] # TODO: update this line... - thresholds = analyzer['thresholds'] - window_size = analyzer['window_size'] - window_slider = analyzer['window_slider'] - print ("Received parameters: {:} - {:} - {:} - {:} - {:}".format( - kpi_list, oper_list, thresholds, window_size, window_slider)) - LOGGER.debug ("Received parameters: {:} - {:} - {:} - {:} - {:}".format( - kpi_list, oper_list, thresholds, window_size, window_slider)) - try: - stop_event = threading.Event() - thread = threading.Thread(target=SparkStreamer, - args=(analyzer_uuid, kpi_list, oper_list, thresholds, stop_event, - window_size, window_slider, None )) - self.running_threads[analyzer_uuid] = (thread, stop_event) - thread.start() - print ("Initiated Analyzer backend: {:}".format(analyzer_uuid)) - LOGGER.info("Initiated Analyzer backend: {:}".format(analyzer_uuid)) - return True - except Exception as e: - print ("Failed to initiate Analyzer backend: {:}".format(e)) - LOGGER.error("Failed to initiate Analyzer backend: {:}".format(e)) - return False - - def StopRequestListener(self, threadInfo: tuple): - try: - thread, stop_event = threadInfo - stop_event.set() - thread.join() - print ("Terminating Analytics backend RequestListener") - LOGGER.info("Terminating Analytics backend RequestListener") - return True - except Exception as e: - print ("Failed to terminate analytics backend {:}".format(e)) - LOGGER.error("Failed to terminate analytics backend {:}".format(e)) - return False + def install_servicers(self): + threading.Thread(target=self.RequestListener, args=()).start() - def install_services(self): - stop_event = threading.Event() - thread = threading.Thread(target=self.RequestListener, - args=(stop_event,) ) - thread.start() - return (thread, stop_event) - - def RequestListener(self, stop_event): + def RequestListener(self): """ listener for requests on Kafka topic. """ + LOGGER.info("Request Listener is initiated ...") + # print ("Request Listener is initiated ...") consumer = self.kafka_consumer consumer.subscribe([KafkaTopic.ANALYTICS_REQUEST.value]) - while not stop_event.is_set(): + while True: receive_msg = consumer.poll(2.0) if receive_msg is None: continue @@ -99,34 +59,66 @@ class AnalyticsBackendService(GenericGrpcService): if receive_msg.error().code() == KafkaError._PARTITION_EOF: continue else: - print("Consumer error: {}".format(receive_msg.error())) + LOGGER.error("Consumer error: {:}".format(receive_msg.error())) + # print ("Consumer error: {:}".format(receive_msg.error())) break - analyzer = json.loads(receive_msg.value().decode('utf-8')) - analyzer_uuid = receive_msg.key().decode('utf-8') - LOGGER.debug('Recevied Analyzer: {:} - {:}'.format(analyzer_uuid, analyzer)) - print ('Recevied Analyzer: {:} - {:}'.format(analyzer_uuid, analyzer)) + try: + analyzer = json.loads(receive_msg.value().decode('utf-8')) + analyzer_uuid = receive_msg.key().decode('utf-8') + LOGGER.debug('Recevied Analyzer: {:} - {:}'.format(analyzer_uuid, analyzer)) + # print ('Recevied Analyzer: {:} - {:}'.format(analyzer_uuid, analyzer)) - if analyzer["algo_name"] is None and analyzer["oper_mode"] is None: - self.TerminateAnalyzerBackend(analyzer_uuid) - else: - self.StartSparkStreamer(analyzer_uuid, analyzer) - LOGGER.debug("Stop Event activated. Terminating...") - print ("Stop Event activated. Terminating...") + if analyzer["algo_name"] is None and analyzer["oper_mode"] is None: + self.StopDaskListener(analyzer_uuid) + else: + self.StartDaskListener(analyzer_uuid, analyzer) + except Exception as e: + LOGGER.warning("Unable to consume message from topic: {:}. ERROR: {:}".format(KafkaTopic.ANALYTICS_REQUEST.value, e)) + # print ("Unable to consume message from topic: {:}. ERROR: {:}".format(KafkaTopic.ANALYTICS_REQUEST.value, e)) + + def StartDaskListener(self, analyzer_uuid, analyzer): + kpi_list = analyzer[ 'input_kpis' ] + thresholds = analyzer[ 'thresholds' ] + window_size = analyzer[ 'window_size' ] + window_slider = analyzer[ 'window_slider'] + + LOGGER.debug ("Received parameters: {:} - {:} - {:} - {:}".format( + kpi_list, thresholds, window_size, window_slider)) + # print ("Received parameters: {:} - {:} - {:} - {:}".format( + # kpi_list, thresholds, window_size, window_slider)) + try: + stop_event = Event() + thread = Thread( + target=DaskStreamer, + # args=(analyzer_uuid, kpi_list, oper_list, thresholds, stop_event), + args=(analyzer['output_kpis'][0] , kpi_list, thresholds, stop_event), + kwargs={ + "window_size" : window_size, + } + ) + thread.start() + self.running_threads[analyzer_uuid] = (thread, stop_event) + # print ("Initiated Analyzer backend: {:}".format(analyzer_uuid)) + LOGGER.info("Initiated Analyzer backend: {:}".format(analyzer_uuid)) + return True + except Exception as e: + # print ("Failed to initiate Analyzer backend: {:}".format(e)) + LOGGER.error("Failed to initiate Analyzer backend: {:}".format(e)) + return False - def TerminateAnalyzerBackend(self, analyzer_uuid): + def StopDaskListener(self, analyzer_uuid): if analyzer_uuid in self.running_threads: try: thread, stop_event = self.running_threads[analyzer_uuid] stop_event.set() thread.join() del self.running_threads[analyzer_uuid] - print ("Terminating backend (by TerminateBackend): Analyzer Id: {:}".format(analyzer_uuid)) + # print ("Terminating backend (by TerminateBackend): Analyzer Id: {:}".format(analyzer_uuid)) LOGGER.info("Terminating backend (by TerminateBackend): Analyzer Id: {:}".format(analyzer_uuid)) return True except Exception as e: LOGGER.error("Failed to terminate. Analyzer Id: {:} - ERROR: {:}".format(analyzer_uuid, e)) return False else: - print ("Analyzer not found in active collectors. Analyzer Id: {:}".format(analyzer_uuid)) - LOGGER.warning("Analyzer not found in active collectors: Analyzer Id: {:}".format(analyzer_uuid)) - # generate confirmation towards frontend + # print ("Analyzer not found in active collectors. Analyzer Id: {:}".format(analyzer_uuid)) + LOGGER.warning("Analyzer not found in active collectors: Analyzer Id: {:}".format(analyzer_uuid)) diff --git a/src/analytics/backend/service/DaskStreaming.py b/src/analytics/backend/service/DaskStreaming.py new file mode 100644 index 0000000000000000000000000000000000000000..cdfe10bd35f68264865d4847c0d292658c330eec --- /dev/null +++ b/src/analytics/backend/service/DaskStreaming.py @@ -0,0 +1,268 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import logging +import time +import json +from confluent_kafka import Consumer, Producer, KafkaException, KafkaError +import pandas as pd +from dask.distributed import Client, LocalCluster +from common.tools.kafka.Variables import KafkaConfig, KafkaTopic + +logging.basicConfig(level=logging.INFO) +LOGGER = logging.getLogger(__name__) + +def SettingKafkaConsumerParams(): + return {'bootstrap.servers' : KafkaConfig.get_kafka_address(), + 'group.id' : 'analytics-backend', + 'auto.offset.reset' : 'latest'} + +def GetAggregationMappings(thresholds): + agg_dict = {} + for threshold_key in thresholds.keys(): + parts = threshold_key.split('_', 1) + if len(parts) != 2: + LOGGER.warning(f"Threshold key '{threshold_key}' does not follow the '_' format. Skipping.") + continue + aggregation, metric_name = parts + # Ensure that the aggregation function is valid in pandas + if aggregation not in ['mean', 'min', 'max', 'first', 'last', 'std']: + LOGGER.warning(f"Unsupported aggregation '{aggregation}' in threshold key '{threshold_key}'. Skipping.") + continue + agg_dict[threshold_key] = ('kpi_value', aggregation) + return agg_dict + + +def ApplyThresholds(aggregated_df, thresholds): + """ + Apply thresholds (TH-Fall and TH-Raise) based on the thresholds dictionary + on the aggregated DataFrame. + Args: aggregated_df (pd.DataFrame): DataFrame with aggregated metrics. + thresholds (dict): Thresholds dictionary with keys in the format '_'. + Returns: pd.DataFrame: DataFrame with additional threshold columns. + """ + for threshold_key, threshold_values in thresholds.items(): + if threshold_key not in aggregated_df.columns: + + LOGGER.warning(f"Threshold key '{threshold_key}' does not correspond to any aggregation result. Skipping threshold application.") + continue + if isinstance(threshold_values, (list, tuple)) and len(threshold_values) == 2: + fail_th, raise_th = threshold_values + aggregated_df["THRESHOLD_FALL"] = aggregated_df[threshold_key] < fail_th + aggregated_df["THRESHOLD_RAISE"] = aggregated_df[threshold_key] > raise_th + aggregated_df["value"] = aggregated_df[threshold_key] + else: + LOGGER.warning(f"Threshold values for '{threshold_key}' are not a list or tuple of length 2. Skipping threshold application.") + return aggregated_df + +def initialize_dask_client(): + """ + Initialize a local Dask cluster and client. + """ + cluster = LocalCluster(n_workers=2, threads_per_worker=2) + client = Client(cluster) + LOGGER.info(f"Dask Client Initialized: {client}") + return client, cluster + +def initialize_kafka_producer(): + return Producer({'bootstrap.servers': KafkaConfig.get_kafka_address()}) + +def delivery_report(err, msg): + if err is not None: + LOGGER.error(f"Message delivery failed: {err}") + else: + LOGGER.info(f"Message delivered to {msg.topic()} [{msg.partition()}] at offset {msg.offset()}") + +def process_batch(batch, agg_mappings, thresholds, key): + """ + Process a batch of data and apply thresholds. + Args: batch (list of dict): List of messages from Kafka. + agg_mappings (dict): Mapping from threshold key to aggregation function. + thresholds (dict): Thresholds dictionary. + Returns: list of dict: Processed records ready to be sent to Kafka. + """ + if not batch: + LOGGER.info("Empty batch received. Skipping processing.") + return [] + + + df = pd.DataFrame(batch) + LOGGER.info(f"df {df} ") + df['time_stamp'] = pd.to_datetime(df['time_stamp'], errors='coerce') + df.dropna(subset=['time_stamp'], inplace=True) + LOGGER.info(f"df {df} ") + required_columns = {'time_stamp', 'kpi_id', 'kpi_value'} + if not required_columns.issubset(df.columns): + LOGGER.warning(f"Batch contains missing required columns. Required columns: {required_columns}. Skipping batch.") + return [] + if df.empty: + LOGGER.info("No data after filtering by KPI IDs. Skipping processing.") + return [] + + # Perform aggregations using named aggregation + try: + agg_dict = {key: value for key, value in agg_mappings.items()} + + df_agg_ = df.groupby(['window_start']).agg(**agg_dict).reset_index() + + #example: agg_dict = {'min_latency_E2E': ('kpi_value', 'min') + + #given that threshold has 1 value + second_value_tuple = next(iter(agg_dict.values()))[1] + #in case we have multiple thresholds! + #second_values_tuples = [value[1] for value in agg_dict.values()] + if second_value_tuple=="min": + df_agg = df_agg_.min(numeric_only=True).to_frame().T + elif second_value_tuple == "max": + df_agg = df_agg_.max(numeric_only=True).to_frame().T + elif second_value_tuple == "std": + df_agg = df_agg_.sted(numeric_only=True).to_frame().T + else: + df_agg = df_agg_.mean(numeric_only=True).to_frame().T + + # Assign the first value of window_start from the original aggregated data + df_agg['window_start'] = df_agg_['window_start'].iloc[0] + + # Reorder columns to place 'window_start' first if needed + cols = ['window_start'] + [col for col in df_agg.columns if col != 'window_start'] + df_agg = df_agg[cols] + + except Exception as e: + LOGGER.error(f"Aggregation error: {e}") + return [] + + # Apply thresholds + + + df_thresholded = ApplyThresholds(df_agg, thresholds) + df_thresholded['kpi_id'] = key + df_thresholded['window_start'] = df_thresholded['window_start'].dt.strftime('%Y-%m-%dT%H:%M:%SZ') + # Convert aggregated DataFrame to list of dicts + result = df_thresholded.to_dict(orient='records') + LOGGER.info(f"Processed batch with {len(result)} records after aggregation and thresholding.") + return result + +def produce_result(result, producer, destination_topic): + for record in result: + try: + producer.produce( + destination_topic, + key=str(record.get('kpi_id', '')), + value=json.dumps(record), + callback=delivery_report + ) + except KafkaException as e: + LOGGER.error(f"Failed to produce message: {e}") + producer.flush() + LOGGER.info(f"Produced {len(result)} aggregated records to '{destination_topic}'.") + +def DaskStreamer(key, kpi_list, thresholds, stop_event, + window_size="30s", time_stamp_col="time_stamp"): + client, cluster = initialize_dask_client() + consumer_conf = SettingKafkaConsumerParams() + consumer = Consumer(consumer_conf) + consumer.subscribe([KafkaTopic.VALUE.value]) + producer = initialize_kafka_producer() + + # Parse window_size to seconds + try: + window_size_td = pd.to_timedelta(window_size) + window_size_seconds = window_size_td.total_seconds() + except Exception as e: + LOGGER.error(f"Invalid window_size format: {window_size}. Error: {e}") + window_size_seconds = 30 + LOGGER.info(f"Batch processing interval set to {window_size_seconds} seconds.") + + # Extract aggregation mappings from thresholds + agg_mappings = GetAggregationMappings(thresholds) + if not agg_mappings: + LOGGER.error("No valid aggregation mappings extracted from thresholds. Exiting streamer.") + consumer.close() + producer.flush() + client.close() + cluster.close() + return + try: + batch = [] + last_batch_time = time.time() + LOGGER.info("Starting to consume messages...") + + while not stop_event.is_set(): + msg = consumer.poll(1.0) + + if msg is None: + current_time = time.time() + if (current_time - last_batch_time) >= window_size_seconds and batch: + LOGGER.info("Time-based batch threshold reached. Processing batch.") + future = client.submit(process_batch, batch, agg_mappings, thresholds) + future.add_done_callback(lambda fut: produce_result(fut.result(), producer, KafkaTopic.ALARMS.value)) + batch = [] + last_batch_time = current_time + continue + + if msg.error(): + if msg.error().code() == KafkaError._PARTITION_EOF: + LOGGER.warning(f"End of partition reached {msg.topic()} [{msg.partition()}] at offset {msg.offset()}") + else: + LOGGER.error(f"Kafka error: {msg.error()}") + continue + + try: + message_value = json.loads(msg.value().decode('utf-8')) + except json.JSONDecodeError as e: + LOGGER.error(f"JSON decode error: {e}") + continue + + try: + message_timestamp = pd.to_datetime(message_value[time_stamp_col], errors='coerce') + LOGGER.warning(f"message_timestamp: {message_timestamp}. Skipping message.") + + if pd.isna(message_timestamp): + LOGGER.warning(f"Invalid timestamp in message: {message_value}. Skipping message.") + continue + window_start = message_timestamp.floor(window_size) + LOGGER.warning(f"window_start: {window_start}. Skipping message.") + message_value['window_start'] = window_start + except Exception as e: + LOGGER.error(f"Error processing timestamp: {e}. Skipping message.") + continue + + if message_value['kpi_id'] not in kpi_list: + LOGGER.debug(f"KPI ID '{message_value['kpi_id']}' not in kpi_list. Skipping message.") + continue + + batch.append(message_value) + + current_time = time.time() + if (current_time - last_batch_time) >= window_size_seconds and batch: + LOGGER.info("Time-based batch threshold reached. Processing batch.") + future = client.submit(process_batch, batch, agg_mappings, thresholds, key) + future.add_done_callback(lambda fut: produce_result(fut.result(), producer, KafkaTopic.ALARMS.value)) + batch = [] + last_batch_time = current_time + + except Exception as e: + LOGGER.exception(f"Error in Dask streaming process: {e}") + finally: + # Process any remaining messages in the batch + if batch: + LOGGER.info("Processing remaining messages in the batch.") + future = client.submit(process_batch, batch, agg_mappings, thresholds) + future.add_done_callback(lambda fut: produce_result(fut.result(), producer, KafkaTopic.ALARMS.value)) + consumer.close() + producer.flush() + LOGGER.info("Kafka consumer and producer closed.") + client.close() + cluster.close() + LOGGER.info("Dask client and cluster closed.") diff --git a/src/analytics/backend/service/SparkStreaming.py b/src/analytics/backend/service/SparkStreaming.py index 96e1aa05d898ffdd23c533b74ee87fbf03f54576..f204c6247436177cd032c777c048ecb165051ec2 100644 --- a/src/analytics/backend/service/SparkStreaming.py +++ b/src/analytics/backend/service/SparkStreaming.py @@ -33,7 +33,7 @@ def SettingKafkaConsumerParams(): # TODO: create get_kafka_consumer() in comm return { # "kafka.bootstrap.servers": '127.0.0.1:9092', "kafka.bootstrap.servers": KafkaConfig.get_kafka_address(), - "subscribe" : KafkaTopic.VALUE.value, + "subscribe" : KafkaTopic.VALUE.value, # topic should have atleast one message before spark session "startingOffsets" : 'latest', "failOnDataLoss" : 'false' # Optional: Set to "true" to fail the query on data loss } @@ -64,7 +64,7 @@ def ApplyThresholds(aggregated_df, thresholds): for col_name, (fail_th, raise_th) in thresholds.items(): # Apply TH-Fail condition (if column value is less than the fail threshold) aggregated_df = aggregated_df.withColumn( - f"{col_name}_THRESHOLD_FAIL", + f"{col_name}_THRESHOLD_FALL", when(col(col_name) < fail_th, True).otherwise(False) ) # Apply TH-RAISE condition (if column value is greater than the raise threshold) @@ -128,11 +128,11 @@ def SparkStreamer(key, kpi_list, oper_list, thresholds, stop_event, # --- This will write output to Kafka: ACTUAL IMPLEMENTATION query = thresholded_stream_data \ - .selectExpr(f"'{key}' AS key", "to_json(struct(*)) AS value") \ + .selectExpr(f"CAST(kpi_id AS STRING) AS key", "to_json(struct(*)) AS value") \ .writeStream \ .format("kafka") \ .option("kafka.bootstrap.servers", KafkaConfig.get_kafka_address()) \ - .option("topic", KafkaTopic.ANALYTICS_RESPONSE.value) \ + .option("topic", KafkaTopic.ALARMS.value) \ .option("checkpointLocation", "analytics/.spark/checkpoint") \ .outputMode("update") diff --git a/src/analytics/backend/tests/messages.py b/src/analytics/backend/tests/messages.py index 9acd6ad9dffe4a5b10b107a6923ed85170ee141f..b3780d29bada491311fb9662934f2d6c234abc93 100644 --- a/src/analytics/backend/tests/messages.py +++ b/src/analytics/backend/tests/messages.py @@ -12,6 +12,11 @@ # See the License for the specific language governing permissions and # limitations under the License. +import uuid +import json +from common.proto.kpi_manager_pb2 import KpiId +from common.proto.analytics_frontend_pb2 import ( AnalyzerOperationMode, + Analyzer, AnalyzerId ) def get_kpi_id_list(): return ["6e22f180-ba28-4641-b190-2287bf448888", "1e22f180-ba28-4641-b190-2287bf446666"] @@ -32,3 +37,78 @@ def get_threshold_dict(): return { op + '_value': threshold_dict[op+'_value'] for op in get_operation_list() if op + '_value' in threshold_dict } + +def create_analyzer_id(): + _create_analyzer_id = AnalyzerId() + # _create_analyzer_id.analyzer_id.uuid = str(uuid.uuid4()) + # _create_analyzer_id.analyzer_id.uuid = "efef4d95-1cf1-43c4-9742-95c283ddd7a6" + _create_analyzer_id.analyzer_id.uuid = "1e22f180-ba28-4641-b190-2287bf446666" + return _create_analyzer_id + + +def create_analyzer(): + _create_analyzer = Analyzer() + # _create_analyzer.analyzer_id.analyzer_id.uuid = str(uuid.uuid4()) + _create_analyzer.analyzer_id.analyzer_id.uuid = "20540c4f-6797-45e5-af70-6491b49283f9" + _create_analyzer.algorithm_name = "Test_Aggergate_and_Threshold" + _create_analyzer.operation_mode = AnalyzerOperationMode.ANALYZEROPERATIONMODE_STREAMING + + _kpi_id = KpiId() + # input IDs to analyze + _kpi_id.kpi_id.uuid = str(uuid.uuid4()) + _kpi_id.kpi_id.uuid = "5716c369-932b-4a02-b4c7-6a2e808b92d7" + _create_analyzer.input_kpi_ids.append(_kpi_id) + _kpi_id.kpi_id.uuid = str(uuid.uuid4()) + _kpi_id.kpi_id.uuid = "8f70d908-cc48-48de-8664-dc9be2de0089" + _create_analyzer.input_kpi_ids.append(_kpi_id) + _kpi_id.kpi_id.uuid = str(uuid.uuid4()) + _create_analyzer.input_kpi_ids.append(_kpi_id) + # output IDs after analysis + _kpi_id.kpi_id.uuid = str(uuid.uuid4()) + _create_analyzer.output_kpi_ids.append(_kpi_id) + _kpi_id.kpi_id.uuid = str(uuid.uuid4()) + _create_analyzer.output_kpi_ids.append(_kpi_id) + # parameter + _threshold_dict = { + # 'avg_value' :(20, 30), 'min_value' :(00, 10), 'max_value' :(45, 50), + 'first_value' :(00, 10), 'last_value' :(40, 50), 'stdev_value':(00, 10)} + _create_analyzer.parameters['thresholds'] = json.dumps(_threshold_dict) + _create_analyzer.parameters['window_size'] = "60 seconds" # Such as "10 seconds", "2 minutes", "3 hours", "4 days" or "5 weeks" + _create_analyzer.parameters['window_slider'] = "30 seconds" # should be less than window size + _create_analyzer.parameters['store_aggregate'] = str(False) # TRUE to store. No implemented yet + + return _create_analyzer + +def create_analyzer_dask(): + _create_analyzer = Analyzer() + _create_analyzer.analyzer_id.analyzer_id.uuid = str(uuid.uuid4()) + # _create_analyzer.analyzer_id.analyzer_id.uuid = "1e22f180-ba28-4641-b190-2287bf446666" + _create_analyzer.algorithm_name = "Test_Aggergate_and_Threshold" + _create_analyzer.operation_mode = AnalyzerOperationMode.ANALYZEROPERATIONMODE_STREAMING + + _kpi_id = KpiId() + # input IDs to analyze + # _kpi_id.kpi_id.uuid = str(uuid.uuid4()) + _kpi_id.kpi_id.uuid = "6e22f180-ba28-4641-b190-2287bf448888" + _create_analyzer.input_kpi_ids.append(_kpi_id) + # _kpi_id.kpi_id.uuid = str(uuid.uuid4()) + _kpi_id.kpi_id.uuid = "1e22f180-ba28-4641-b190-2287bf446666" + _create_analyzer.input_kpi_ids.append(_kpi_id) + # _kpi_id.kpi_id.uuid = str(uuid.uuid4()) + _create_analyzer.input_kpi_ids.append(_kpi_id) + # output IDs after analysis + _kpi_id.kpi_id.uuid = str(uuid.uuid4()) + _create_analyzer.output_kpi_ids.append(_kpi_id) + _kpi_id.kpi_id.uuid = str(uuid.uuid4()) + _create_analyzer.output_kpi_ids.append(_kpi_id) + # parameter + + _threshold_dict = { + 'mean_latency' :(20, 30), 'min_latency' :(00, 10), 'max_latency' :(45, 50),#} + 'first_value' :(00, 50), 'last_value' :(50, 100), 'std_value' :(0, 90)} + _create_analyzer.parameters['thresholds'] = json.dumps(_threshold_dict) + _create_analyzer.parameters['oper_list'] = json.dumps([key.split('_')[0] for key in _threshold_dict.keys()]) + _create_analyzer.parameters['window_size'] = "10s" # Such as "10 seconds", "2 minutes", "3 hours", "4 days" or "5 weeks" + _create_analyzer.parameters['window_slider'] = "5s" # should be less than window size + _create_analyzer.parameters['store_aggregate'] = str(False) # TRUE to store. No implemented yet + return _create_analyzer diff --git a/src/analytics/backend/tests/test_backend.py b/src/analytics/backend/tests/test_backend.py index 2f40faba94ef7081db609116e8fd869e3d119a24..86de220a21b4c2c1c38d518c01ae13f33ee200d5 100644 --- a/src/analytics/backend/tests/test_backend.py +++ b/src/analytics/backend/tests/test_backend.py @@ -12,12 +12,16 @@ # See the License for the specific language governing permissions and # limitations under the License. -import time +import time, json +from typing import Dict import logging -import threading +from threading import Event, Thread from common.tools.kafka.Variables import KafkaTopic from analytics.backend.service.AnalyticsBackendService import AnalyticsBackendService from analytics.backend.tests.messages import get_kpi_id_list, get_operation_list, get_threshold_dict +from .messages import create_analyzer, create_analyzer_dask +from threading import Thread, Event +from ..service.DaskStreaming import DaskStreamer LOGGER = logging.getLogger(__name__) @@ -32,26 +36,117 @@ def test_validate_kafka_topics(): response = KafkaTopic.create_all_topics() assert isinstance(response, bool) + +# --- To test Dask Streamer functionality --- +# def test_StartDaskStreamer(): # Directly from the Streamer class +# LOGGER.debug(" >>> test_StartSparkStreamer: START <<< ") +# stop_event = Event() +# kpi_list = ["1e22f180-ba28-4641-b190-2287bf446666", "6e22f180-ba28-4641-b190-2287bf448888", 'kpi_3'] +# oper_list = ['avg', 'min', 'max',] +# thresholds = { +# 'avg_value': (10.0, 90.0), +# 'min_value': (5.0, 95.0), +# 'max_value': (15.0, 85.0), +# 'latency' : (2.0, 10.0) +# } + +# # Start the DaskStreamer in a separate thread +# streamer_thread = Thread( +# target=DaskStreamer, +# args=("analytics_stream", kpi_list, oper_list, thresholds, stop_event), +# kwargs={ +# "window_size": "60s", +# "win_slide_duration": "30s", +# "time_stamp_col": "time_stamp" +# } +# ) +# streamer_thread.start() +# try: +# while True: +# time.sleep(10) +# except KeyboardInterrupt: +# LOGGER.info("KeyboardInterrupt received. Stopping streamer...") +# stop_event.set() +# streamer_thread.join() +# LOGGER.info("Streamer stopped gracefully.") + +# --- To test Start Streamer functionality --- +# def test_StartDaskStreamer(): +# LOGGER.debug(" >>> test_StartBaskStreamer: START <<< ") +# analyzer_obj = create_analyzer_dask() +# # LOGGER.info("Created Analyzer Object: {:}".format(analyzer_obj)) +# analyzer_uuid = analyzer_obj.analyzer_id.analyzer_id.uuid +# analyzer_to_generate : Dict = { +# "algo_name" : analyzer_obj.algorithm_name, +# "input_kpis" : [k.kpi_id.uuid for k in analyzer_obj.input_kpi_ids], +# "output_kpis" : [k.kpi_id.uuid for k in analyzer_obj.output_kpi_ids], +# "oper_mode" : analyzer_obj.operation_mode, +# "thresholds" : json.loads(analyzer_obj.parameters["thresholds"]), +# "oper_list" : json.loads(analyzer_obj.parameters["oper_list"]), +# # "oper_list" : analyzer_obj.parameters["oper_list"], +# "window_size" : analyzer_obj.parameters["window_size"], +# "window_slider" : analyzer_obj.parameters["window_slider"], +# # "store_aggregate" : analyzer_obj.parameters["store_aggregate"] +# } +# AnalyticsBackendServiceObj = AnalyticsBackendService() +# LOGGER.info("Analyzer to be generated: {:}".format((analyzer_to_generate))) +# response = AnalyticsBackendServiceObj.StartDaskListener(analyzer_uuid, analyzer_to_generate) +# assert isinstance(response, bool) +# time.sleep(100) +# LOGGER.info('Initiating StopRequestListener...') +# # AnalyticsBackendServiceObj = AnalyticsBackendService() +# response = AnalyticsBackendServiceObj.StopDaskListener(analyzer_uuid) +# LOGGER.debug(str(response)) +# assert isinstance(response, bool) + +# --- To test Start Streamer functionality --- +# def test_StartSparkStreamer(): +# LOGGER.debug(" >>> test_StartSparkStreamer: START <<< ") +# analyzer_obj = create_analyzer() +# analyzer_uuid = analyzer_obj.analyzer_id.analyzer_id.uuid +# analyzer_to_generate : Dict = { +# "algo_name" : analyzer_obj.algorithm_name, +# "input_kpis" : [k.kpi_id.uuid for k in analyzer_obj.input_kpi_ids], +# "output_kpis" : [k.kpi_id.uuid for k in analyzer_obj.output_kpi_ids], +# "oper_mode" : analyzer_obj.operation_mode, +# "thresholds" : json.loads(analyzer_obj.parameters["thresholds"]), +# "window_size" : analyzer_obj.parameters["window_size"], +# "window_slider" : analyzer_obj.parameters["window_slider"], +# # "store_aggregate" : analyzer_obj.parameters["store_aggregate"] +# } +# AnalyticsBackendServiceObj = AnalyticsBackendService() +# response = AnalyticsBackendServiceObj.StartSparkStreamer(analyzer_uuid, analyzer_to_generate) +# assert isinstance(response, bool) + +# --- To TEST StartRequestListenerFunctionality # def test_StartRequestListener(): # LOGGER.info('test_RunRequestListener') # AnalyticsBackendServiceObj = AnalyticsBackendService() -# response = AnalyticsBackendServiceObj.StartRequestListener() # response is Tuple (thread, stop_event) -# LOGGER.debug(str(response)) -# assert isinstance(response, tuple) +# AnalyticsBackendServiceObj.stop_event = Event() +# listener_thread = Thread(target=AnalyticsBackendServiceObj.RequestListener, args=()) +# listener_thread.start() + +# time.sleep(100) + + # AnalyticsBackendServiceObj.stop_event.set() + # LOGGER.info('Backend termination initiated. waiting for termination... 10 seconds') + # listener_thread.join(timeout=10) + # assert not listener_thread.is_alive(), "RequestListener thread did not terminate as expected." + # LOGGER.info('Completed test_RunRequestListener') # To test START and STOP communication together -def test_StopRequestListener(): - LOGGER.info('test_RunRequestListener') - LOGGER.info('Initiating StartRequestListener...') - AnalyticsBackendServiceObj = AnalyticsBackendService() - response_thread = AnalyticsBackendServiceObj.StartRequestListener() # response is Tuple (thread, stop_event) - # LOGGER.debug(str(response_thread)) - time.sleep(10) - LOGGER.info('Initiating StopRequestListener...') - AnalyticsBackendServiceObj = AnalyticsBackendService() - response = AnalyticsBackendServiceObj.StopRequestListener(response_thread) - LOGGER.debug(str(response)) - assert isinstance(response, bool) +# def test_StopRequestListener(): +# LOGGER.info('test_RunRequestListener') +# LOGGER.info('Initiating StartRequestListener...') +# AnalyticsBackendServiceObj = AnalyticsBackendService() +# response_thread = AnalyticsBackendServiceObj.StartRequestListener() # response is Tuple (thread, stop_event) +# # LOGGER.debug(str(response_thread)) +# time.sleep(10) +# LOGGER.info('Initiating StopRequestListener...') +# AnalyticsBackendServiceObj = AnalyticsBackendService() +# response = AnalyticsBackendServiceObj.StopRequestListener(response_thread) +# LOGGER.debug(str(response)) +# assert isinstance(response, bool) # To independently tests the SparkListener functionality # def test_SparkListener(): diff --git a/src/analytics/database/Analyzer_DB.py b/src/analytics/database/Analyzer_DB.py index 1ba68989a066e4638adc12e65289ed50b740731d..ab0b50f2ebba8e2590f1fcb4f2801f42a9c5d208 100644 --- a/src/analytics/database/Analyzer_DB.py +++ b/src/analytics/database/Analyzer_DB.py @@ -13,138 +13,44 @@ # limitations under the License. import logging -import sqlalchemy_utils +from common.method_wrappers.Decorator import MetricsPool +from common.tools.database.GenericDatabase import Database +from common.method_wrappers.ServiceExceptions import OperationFailedException -from sqlalchemy import inspect, or_ -from sqlalchemy.orm import sessionmaker +LOGGER = logging.getLogger(__name__) +METRICS_POOL = MetricsPool('KpiManager', 'Database') -from analytics.database.AnalyzerModel import Analyzer as AnalyzerModel -from analytics.database.AnalyzerEngine import AnalyzerEngine -from common.method_wrappers.ServiceExceptions import (OperationFailedException, AlreadyExistsException) +class AnalyzerDB(Database): + def __init__(self, model) -> None: + LOGGER.info('Init KpiManagerService') + super().__init__(model) -LOGGER = logging.getLogger(__name__) -DB_NAME = "tfs_analyzer" # TODO: export name from enviornment variable - -class AnalyzerDB: - def __init__(self): - self.db_engine = AnalyzerEngine.get_engine() - if self.db_engine is None: - LOGGER.error('Unable to get SQLAlchemy DB Engine...') - return False - self.db_name = DB_NAME - self.Session = sessionmaker(bind=self.db_engine) - - def create_database(self): - if not sqlalchemy_utils.database_exists(self.db_engine.url): - LOGGER.debug("Database created. {:}".format(self.db_engine.url)) - sqlalchemy_utils.create_database(self.db_engine.url) - - def drop_database(self) -> None: - if sqlalchemy_utils.database_exists(self.db_engine.url): - sqlalchemy_utils.drop_database(self.db_engine.url) - - def create_tables(self): - try: - AnalyzerModel.metadata.create_all(self.db_engine) # type: ignore - LOGGER.debug("Tables created in the database: {:}".format(self.db_name)) - except Exception as e: - LOGGER.debug("Tables cannot be created in the database. {:s}".format(str(e))) - raise OperationFailedException ("Tables can't be created", extra_details=["unable to create table {:}".format(e)]) - - def verify_tables(self): - try: - inspect_object = inspect(self.db_engine) - if(inspect_object.has_table('analyzer', None)): - LOGGER.info("Table exists in DB: {:}".format(self.db_name)) - except Exception as e: - LOGGER.info("Unable to fetch Table names. {:s}".format(str(e))) - -# ----------------- CURD OPERATIONS --------------------- - - def add_row_to_db(self, row): - session = self.Session() - try: - session.add(row) - session.commit() - LOGGER.debug(f"Row inserted into {row.__class__.__name__} table.") - return True - except Exception as e: - session.rollback() - if "psycopg2.errors.UniqueViolation" in str(e): - LOGGER.error(f"Unique key voilation: {row.__class__.__name__} table. {str(e)}") - raise AlreadyExistsException(row.__class__.__name__, row, - extra_details=["Unique key voilation: {:}".format(e)] ) - else: - LOGGER.error(f"Failed to insert new row into {row.__class__.__name__} table. {str(e)}") - raise OperationFailedException ("Deletion by column id", extra_details=["unable to delete row {:}".format(e)]) - finally: - session.close() - - def search_db_row_by_id(self, model, col_name, id_to_search): - session = self.Session() - try: - entity = session.query(model).filter_by(**{col_name: id_to_search}).first() - if entity: - # LOGGER.debug(f"{model.__name__} ID found: {str(entity)}") - return entity - else: - LOGGER.debug(f"{model.__name__} ID not found, No matching row: {str(id_to_search)}") - print("{:} ID not found, No matching row: {:}".format(model.__name__, id_to_search)) - return None - except Exception as e: - session.rollback() - LOGGER.debug(f"Failed to retrieve {model.__name__} ID. {str(e)}") - raise OperationFailedException ("search by column id", extra_details=["unable to search row {:}".format(e)]) - finally: - session.close() - - def delete_db_row_by_id(self, model, col_name, id_to_search): - session = self.Session() - try: - record = session.query(model).filter_by(**{col_name: id_to_search}).first() - if record: - session.delete(record) - session.commit() - LOGGER.debug("Deleted %s with %s: %s", model.__name__, col_name, id_to_search) - else: - LOGGER.debug("%s with %s %s not found", model.__name__, col_name, id_to_search) - return None - except Exception as e: - session.rollback() - LOGGER.error("Error deleting %s with %s %s: %s", model.__name__, col_name, id_to_search, e) - raise OperationFailedException ("Deletion by column id", extra_details=["unable to delete row {:}".format(e)]) - finally: - session.close() - def select_with_filter(self, model, filter_object): + """ + Generic method to create filters dynamically based on filter_object attributes. + params: model: SQLAlchemy model class to query. + filter_object: Object that contains filtering criteria as attributes. + return: SQLAlchemy session, query and Model + """ session = self.Session() try: - query = session.query(AnalyzerModel) - + query = session.query(model) # Apply filters based on the filter_object if filter_object.analyzer_id: - query = query.filter(AnalyzerModel.analyzer_id.in_([a.analyzer_id.uuid for a in filter_object.analyzer_id])) + query = query.filter(model.analyzer_id.in_([a.analyzer_id.uuid for a in filter_object.analyzer_id])) if filter_object.algorithm_names: - query = query.filter(AnalyzerModel.algorithm_name.in_(filter_object.algorithm_names)) + query = query.filter(model.algorithm_name.in_(filter_object.algorithm_names)) if filter_object.input_kpi_ids: input_kpi_uuids = [k.kpi_id.uuid for k in filter_object.input_kpi_ids] - query = query.filter(AnalyzerModel.input_kpi_ids.op('&&')(input_kpi_uuids)) + query = query.filter(model.input_kpi_ids.op('&&')(input_kpi_uuids)) if filter_object.output_kpi_ids: output_kpi_uuids = [k.kpi_id.uuid for k in filter_object.output_kpi_ids] - query = query.filter(AnalyzerModel.output_kpi_ids.op('&&')(output_kpi_uuids)) - - result = query.all() - # query should be added to return all rows - if result: - LOGGER.debug(f"Fetched filtered rows from {model.__name__} table with filters: {filter_object}") # - Results: {result} - else: - LOGGER.warning(f"No matching row found in {model.__name__} table with filters: {filter_object}") - return result + query = query.filter(model.output_kpi_ids.op('&&')(output_kpi_uuids)) except Exception as e: - LOGGER.error(f"Error fetching filtered rows from {model.__name__} table with filters {filter_object} ::: {e}") - raise OperationFailedException ("Select by filter", extra_details=["unable to apply the filter {:}".format(e)]) - finally: - session.close() + LOGGER.error(f"Error creating filter of {model.__name__} table. ERROR: {e}") + raise OperationFailedException ("CreateKpiDescriptorFilter", extra_details=["unable to create the filter {:}".format(e)]) + + return super().select_with_filter(query, session, model) diff --git a/src/analytics/frontend/client/AnalyticsFrontendClient.py b/src/analytics/frontend/client/AnalyticsFrontendClient.py index 90e95d661d46f24ae5ffaeb7bcfa19b7e1f36526..809c957ea48a07a657fe1edc244c9c0f125e9058 100644 --- a/src/analytics/frontend/client/AnalyticsFrontendClient.py +++ b/src/analytics/frontend/client/AnalyticsFrontendClient.py @@ -28,8 +28,8 @@ RETRY_DECORATOR = retry(max_retries=MAX_RETRIES, delay_function=DELAY_FUNCTION, class AnalyticsFrontendClient: def __init__(self, host=None, port=None): - if not host: host = get_service_host(ServiceNameEnum.ANALYTICSFRONTEND) - if not port: port = get_service_port_grpc(ServiceNameEnum.ANALYTICSFRONTEND) + if not host: host = get_service_host(ServiceNameEnum.ANALYTICS) + if not port: port = get_service_port_grpc(ServiceNameEnum.ANALYTICS) self.endpoint = '{:s}:{:s}'.format(str(host), str(port)) LOGGER.debug('Creating channel to {:s}...'.format(str(self.endpoint))) self.channel = None diff --git a/src/analytics/frontend/requirements.in b/src/analytics/frontend/requirements.in index d81b9ddbeafeff94c830d48ca5594e775b9ce240..0b1ec921b8bb77c0d26e8240585a19ef165f0eec 100644 --- a/src/analytics/frontend/requirements.in +++ b/src/analytics/frontend/requirements.in @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -apscheduler==3.10.4 +apscheduler==3.10.1 confluent-kafka==2.3.* psycopg2-binary==2.9.* SQLAlchemy==1.4.* diff --git a/src/analytics/frontend/service/AnalyticsFrontendService.py b/src/analytics/frontend/service/AnalyticsFrontendService.py index 42a7fc9b60418c1c0fc5af6f320ae5c330ce8871..8d2536fe091459d6026941f4eae52f58f7cd3f3a 100644 --- a/src/analytics/frontend/service/AnalyticsFrontendService.py +++ b/src/analytics/frontend/service/AnalyticsFrontendService.py @@ -20,7 +20,7 @@ from analytics.frontend.service.AnalyticsFrontendServiceServicerImpl import Anal class AnalyticsFrontendService(GenericGrpcService): def __init__(self, cls_name: str = __name__): - port = get_service_port_grpc(ServiceNameEnum.ANALYTICSFRONTEND) + port = get_service_port_grpc(ServiceNameEnum.ANALYTICS) super().__init__(port, cls_name=cls_name) self.analytics_frontend_servicer = AnalyticsFrontendServiceServicerImpl() diff --git a/src/analytics/frontend/service/AnalyticsFrontendServiceServicerImpl.py b/src/analytics/frontend/service/AnalyticsFrontendServiceServicerImpl.py index 8bb6a17afb5b911e3652fdb8d1853b5b7bc6faf3..219821ac9bf9bf05e7c599480795d988d1015605 100644 --- a/src/analytics/frontend/service/AnalyticsFrontendServiceServicerImpl.py +++ b/src/analytics/frontend/service/AnalyticsFrontendServiceServicerImpl.py @@ -12,7 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. - import logging, grpc, json, queue from typing import Dict @@ -37,7 +36,7 @@ class AnalyticsFrontendServiceServicerImpl(AnalyticsFrontendServiceServicer): def __init__(self): LOGGER.info('Init AnalyticsFrontendService') self.listener_topic = KafkaTopic.ANALYTICS_RESPONSE.value - self.db_obj = AnalyzerDB() + self.db_obj = AnalyzerDB(AnalyzerModel) self.result_queue = queue.Queue() self.scheduler = BackgroundScheduler() self.kafka_producer = KafkaProducer({'bootstrap.servers' : KafkaConfig.get_kafka_address()}) @@ -84,7 +83,6 @@ class AnalyticsFrontendServiceServicerImpl(AnalyticsFrontendServiceServicer): LOGGER.info("Analyzer Start Request Generated: Analyzer Id: {:}, Value: {:}".format(analyzer_uuid, analyzer_to_generate)) self.kafka_producer.flush() - # self.StartResponseListener(analyzer_uuid) def StartResponseListener(self, filter_key=None): """ @@ -103,10 +101,8 @@ class AnalyticsFrontendServiceServicerImpl(AnalyticsFrontendServiceServicer): LOGGER.info(f"Started Kafka listener for topic {self.listener_topic}...") try: while True: - LOGGER.info("entering while...") - key, value = self.result_queue.get() # Wait until a result is available - LOGGER.info("In while true ...") - yield key, value # Yield the result to the calling function + key, value = self.result_queue.get() + yield key, value except KeyboardInterrupt: LOGGER.warning("Listener stopped manually.") finally: @@ -136,8 +132,6 @@ class AnalyticsFrontendServiceServicerImpl(AnalyticsFrontendServiceServicer): self.result_queue.put((key, value)) else: LOGGER.info(f"Skipping message with unmatched key: {key}") - # value = json.loads(msg.value().decode('utf-8')) # Added for debugging - # self.result_queue.put((filter_key, value)) # Added for debugging except Exception as e: LOGGER.error(f"Error processing Kafka message: {e}") @@ -208,7 +202,7 @@ class AnalyticsFrontendServiceServicerImpl(AnalyticsFrontendServiceServicer): def delivery_callback(self, err, msg): if err: LOGGER.debug('Message delivery failed: {:}'.format(err)) - print ('Message delivery failed: {:}'.format(err)) - # else: - # LOGGER.debug('Message delivered to topic {:}'.format(msg.topic())) - # print('Message delivered to topic {:}'.format(msg.topic())) + # print ('Message delivery failed: {:}'.format(err)) + else: + LOGGER.debug('Message delivered to topic {:}'.format(msg.topic())) + # print('Message delivered to topic {:}'.format(msg.topic())) diff --git a/src/analytics/frontend/service/__main__.py b/src/analytics/frontend/service/__main__.py index 6c331844f45d98095ef98951f3db43a0e2f0c69c..1df996785ec636592cf5197144d916a89257d9af 100644 --- a/src/analytics/frontend/service/__main__.py +++ b/src/analytics/frontend/service/__main__.py @@ -16,9 +16,11 @@ import logging, signal, sys, threading from prometheus_client import start_http_server from common.Settings import get_log_level, get_metrics_port from .AnalyticsFrontendService import AnalyticsFrontendService +from analytics.database.AnalyzerModel import Analyzer as Model +from common.tools.database.GenericDatabase import Database terminate = threading.Event() -LOGGER = None +LOGGER = None def signal_handler(signal, frame): # pylint: disable=redefined-outer-name LOGGER.warning('Terminate signal received') @@ -36,6 +38,11 @@ def main(): LOGGER.info('Starting...') + # To create DB + kpiDBobj = Database(Model) + kpiDBobj.create_database() + kpiDBobj.create_tables() + # Start metrics server metrics_port = get_metrics_port() start_http_server(metrics_port) diff --git a/src/analytics/frontend/tests/messages.py b/src/analytics/frontend/tests/messages.py index 646de962e8a213582fdb7cd1446ab57bda561a96..e2d39585e434b58c0d48d0061e105a5ebaabe6b9 100644 --- a/src/analytics/frontend/tests/messages.py +++ b/src/analytics/frontend/tests/messages.py @@ -21,13 +21,14 @@ from common.proto.analytics_frontend_pb2 import ( AnalyzerOperationMode, Analyze def create_analyzer_id(): _create_analyzer_id = AnalyzerId() # _create_analyzer_id.analyzer_id.uuid = str(uuid.uuid4()) - _create_analyzer_id.analyzer_id.uuid = "efef4d95-1cf1-43c4-9742-95c283ddd7a6" + # _create_analyzer_id.analyzer_id.uuid = "efef4d95-1cf1-43c4-9742-95c283ddd7a6" + _create_analyzer_id.analyzer_id.uuid = "1e22f180-ba28-4641-b190-2287bf446666" return _create_analyzer_id def create_analyzer(): _create_analyzer = Analyzer() # _create_analyzer.analyzer_id.analyzer_id.uuid = str(uuid.uuid4()) - _create_analyzer.analyzer_id.analyzer_id.uuid = "efef4d95-1cf1-43c4-9742-95c283ddd7a6" + _create_analyzer.analyzer_id.analyzer_id.uuid = "1e22f180-ba28-4641-b190-2287bf446666" _create_analyzer.algorithm_name = "Test_Aggergate_and_Threshold" _create_analyzer.operation_mode = AnalyzerOperationMode.ANALYZEROPERATIONMODE_STREAMING @@ -48,11 +49,12 @@ def create_analyzer(): _create_analyzer.output_kpi_ids.append(_kpi_id) # parameter _threshold_dict = { - # 'avg_value' :(20, 30), 'min_value' :(00, 10), 'max_value' :(45, 50), - 'first_value' :(00, 10), 'last_value' :(40, 50), 'stdev_value':(00, 10)} + 'mean_value' :(20, 30), 'min_value' :(00, 10), 'max_value' :(45, 50), + 'first_value' :(00, 10), 'last_value' :(40, 50), 'std_value':(00, 10) + } _create_analyzer.parameters['thresholds'] = json.dumps(_threshold_dict) - _create_analyzer.parameters['window_size'] = "60 seconds" # Such as "10 seconds", "2 minutes", "3 hours", "4 days" or "5 weeks" - _create_analyzer.parameters['window_slider'] = "30 seconds" # should be less than window size + _create_analyzer.parameters['window_size'] = "10s" # Such as "10 seconds", "2 minutes", "3 hours", "4 days" or "5 weeks" + _create_analyzer.parameters['window_slider'] = "5s" # should be less than window size _create_analyzer.parameters['store_aggregate'] = str(False) # TRUE to store. No implemented yet return _create_analyzer diff --git a/src/analytics/frontend/tests/test_frontend.py b/src/analytics/frontend/tests/test_frontend.py index d2428c01fb021f71a884d9a99c446bfef6e66559..74fef6c79cc2328b65671b392220ae86106e9d5d 100644 --- a/src/analytics/frontend/tests/test_frontend.py +++ b/src/analytics/frontend/tests/test_frontend.py @@ -41,9 +41,9 @@ from apscheduler.triggers.interval import IntervalTrigger LOCAL_HOST = '127.0.0.1' -ANALYTICS_FRONTEND_PORT = str(get_service_port_grpc(ServiceNameEnum.ANALYTICSFRONTEND)) -os.environ[get_env_var_name(ServiceNameEnum.ANALYTICSFRONTEND, ENVVAR_SUFIX_SERVICE_HOST )] = str(LOCAL_HOST) -os.environ[get_env_var_name(ServiceNameEnum.ANALYTICSFRONTEND, ENVVAR_SUFIX_SERVICE_PORT_GRPC)] = str(ANALYTICS_FRONTEND_PORT) +ANALYTICS_FRONTEND_PORT = str(get_service_port_grpc(ServiceNameEnum.ANALYTICS)) +os.environ[get_env_var_name(ServiceNameEnum.ANALYTICS, ENVVAR_SUFIX_SERVICE_HOST )] = str(LOCAL_HOST) +os.environ[get_env_var_name(ServiceNameEnum.ANALYTICS, ENVVAR_SUFIX_SERVICE_PORT_GRPC)] = str(ANALYTICS_FRONTEND_PORT) LOGGER = logging.getLogger(__name__) @@ -97,14 +97,13 @@ def test_validate_kafka_topics(): # assert isinstance(response, AnalyzerId) # To test start and stop listener together -def test_StartStopAnalyzers(analyticsFrontend_client): - LOGGER.info(' >>> test_StartStopAnalyzers START: <<< ') - LOGGER.info('--> StartAnalyzer') +def test_StartAnalyzers(analyticsFrontend_client): + LOGGER.info(' >>> test_StartAnalyzers START: <<< ') added_analyzer_id = analyticsFrontend_client.StartAnalyzer(create_analyzer()) LOGGER.debug(str(added_analyzer_id)) LOGGER.info(' --> Calling StartResponseListener... ') class_obj = AnalyticsFrontendServiceServicerImpl() - response = class_obj.StartResponseListener(added_analyzer_id.analyzer_id._uuid) + response = class_obj.StartResponseListener(added_analyzer_id.analyzer_id.uuid) LOGGER.debug(response) LOGGER.info("waiting for timer to comlete ...") time.sleep(3) @@ -131,4 +130,4 @@ def test_StartStopAnalyzers(analyticsFrontend_client): # class_obj = AnalyticsFrontendServiceServicerImpl() # for response in class_obj.StartResponseListener(analyzer_id.analyzer_id.uuid): # LOGGER.debug(response) -# assert isinstance(response, tuple) \ No newline at end of file +# assert isinstance(response, tuple) diff --git a/src/analytics/requirements.in b/src/analytics/requirements.in index 8ff30ddaad25c39713f2e6f68c8d9aebed74dad0..231dc04e820387c95ffea72cbe67b9f0a9a0865a 100644 --- a/src/analytics/requirements.in +++ b/src/analytics/requirements.in @@ -12,8 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -java==11.0.* -pyspark==3.5.2 confluent-kafka==2.3.* psycopg2-binary==2.9.* SQLAlchemy==1.4.* diff --git a/src/analytics/tests/test_analytics_db.py b/src/analytics/tests/test_analytics_db.py index 58e7d0167044bb461e66b053dcb3999641ea8419..2794edb4a051b38d4cef902fd09aaad5db966179 100644 --- a/src/analytics/tests/test_analytics_db.py +++ b/src/analytics/tests/test_analytics_db.py @@ -15,12 +15,13 @@ import logging from analytics.database.Analyzer_DB import AnalyzerDB +from analytics.database.AnalyzerModel import Analyzer LOGGER = logging.getLogger(__name__) def test_verify_databases_and_tables(): LOGGER.info('>>> test_verify_databases_and_tables : START <<< ') - AnalyzerDBobj = AnalyzerDB() + AnalyzerDBobj = AnalyzerDB(Analyzer) # AnalyzerDBobj.drop_database() # AnalyzerDBobj.verify_tables() AnalyzerDBobj.create_database() diff --git a/src/automation/.gitlab-ci.yml b/src/automation/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..f52dda3f4e3fd7cd4de6f4d03a8ada164796f404 --- /dev/null +++ b/src/automation/.gitlab-ci.yml @@ -0,0 +1,117 @@ +# Copyright 2022-2024 ETSI OSG/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. + +# Build, tag, and push the Docker image to the GitLab Docker registry +build automation: + variables: + IMAGE_NAME: 'automation' # name of the microservice + IMAGE_TAG: 'latest' # tag of the container image (production, development, etc) + stage: build + before_script: + - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY + script: + - docker buildx build -t "$IMAGE_NAME:$IMAGE_TAG" -f ./src/$IMAGE_NAME/Dockerfile . + - docker tag "$IMAGE_NAME:$IMAGE_TAG" "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG" + - docker push "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG" + after_script: + - docker images --filter="dangling=true" --quiet | xargs -r docker rmi + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)' + - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"' + - changes: + - src/common/**/*.py + - proto/*.proto + - src/$IMAGE_NAME/**/*.{py,in,yml} + - src/$IMAGE_NAME/Dockerfile + - src/$IMAGE_NAME/tests/*.py + - manifests/${IMAGE_NAME}service.yaml + - .gitlab-ci.yml + +# Apply unit test to the component +unit_test automation: + variables: + IMAGE_NAME: 'automation' # name of the microservice + IMAGE_TAG: 'latest' # tag of the container image (production, development, etc) + stage: unit_test + needs: + - build automation + before_script: + - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY + - > + if docker network list | grep teraflowbridge; then + echo "teraflowbridge is already created"; + else + docker network create -d bridge teraflowbridge; + fi + - > + if docker container ls | grep $IMAGE_NAME; then + docker rm -f $IMAGE_NAME; + else + echo "$IMAGE_NAME image is not in the system"; + fi + script: + - docker pull "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG" + - docker run --name $IMAGE_NAME -d -p 2020:2020 -v "$PWD/src/$IMAGE_NAME/tests:/opt/results" --network=teraflowbridge $CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG + - sleep 5 + - docker ps -a + - docker logs $IMAGE_NAME + - docker exec -i $IMAGE_NAME bash -c "coverage run --append -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_unitary_emulated.py --junitxml=/opt/results/${IMAGE_NAME}_report_emulated.xml" + - docker exec -i $IMAGE_NAME bash -c "coverage run --append -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_unitary_ietf_actn.py --junitxml=/opt/results/${IMAGE_NAME}_report_ietf_actn.xml" + - docker exec -i $IMAGE_NAME bash -c "coverage report --include='${IMAGE_NAME}/*' --show-missing" + coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/' + after_script: + - docker rm -f $IMAGE_NAME + - docker network rm teraflowbridge + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)' + - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"' + - changes: + - src/common/**/*.py + - proto/*.proto + - src/$IMAGE_NAME/**/*.{py,in,yml} + - src/$IMAGE_NAME/Dockerfile + - src/$IMAGE_NAME/tests/*.py + - src/$IMAGE_NAME/tests/Dockerfile + - manifests/${IMAGE_NAME}service.yaml + - .gitlab-ci.yml + artifacts: + when: always + reports: + junit: src/$IMAGE_NAME/tests/${IMAGE_NAME}_report_*.xml + +## Deployment of the service in Kubernetes Cluster +#deploy automation: +# variables: +# IMAGE_NAME: 'automation' # name of the microservice +# IMAGE_TAG: 'latest' # tag of the container image (production, development, etc) +# stage: deploy +# needs: +# - unit test automation +# # - integ_test execute +# script: +# - 'sed -i "s/$IMAGE_NAME:.*/$IMAGE_NAME:$IMAGE_TAG/" manifests/${IMAGE_NAME}service.yaml' +# - kubectl version +# - kubectl get all +# - kubectl apply -f "manifests/${IMAGE_NAME}service.yaml" +# - kubectl get all +# # environment: +# # name: test +# # url: https://example.com +# # kubernetes: +# # namespace: test +# rules: +# - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)' +# when: manual +# - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"' +# when: manual diff --git a/src/automation/Config.py b/src/automation/Config.py new file mode 100644 index 0000000000000000000000000000000000000000..7c7568fdb6e3b1446aa9412ad32a0a5948ba949b --- /dev/null +++ b/src/automation/Config.py @@ -0,0 +1,14 @@ +# Copyright 2022-2024 ETSI OSG/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. + diff --git a/src/automation/Dockerfile b/src/automation/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..deef6b36fb4ab324e75a687bc3ce8c297c186c8f --- /dev/null +++ b/src/automation/Dockerfile @@ -0,0 +1,78 @@ +# Copyright 2022-2024 ETSI OSG/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. + +FROM python:3.9-slim + +# Install dependencies +RUN apt-get --yes --quiet --quiet update && \ + apt-get --yes --quiet --quiet install wget g++ git && \ + rm -rf /var/lib/apt/lists/* + +# Set Python to show logs as they occur +ENV PYTHONUNBUFFERED=0 + +# Download the gRPC health probe +RUN GRPC_HEALTH_PROBE_VERSION=v0.2.0 && \ + wget -qO/bin/grpc_health_probe https://github.com/grpc-ecosystem/grpc-health-probe/releases/download/${GRPC_HEALTH_PROBE_VERSION}/grpc_health_probe-linux-amd64 && \ + chmod +x /bin/grpc_health_probe + +# Get generic Python packages +RUN python3 -m pip install --upgrade pip +RUN python3 -m pip install --upgrade setuptools wheel +RUN python3 -m pip install --upgrade pip-tools + +# Get common Python packages +# Note: this step enables sharing the previous Docker build steps among all the Python components +WORKDIR /var/teraflow +COPY common_requirements.in common_requirements.in +RUN pip-compile --quiet --output-file=common_requirements.txt common_requirements.in +RUN python3 -m pip install -r common_requirements.txt + +# Add common files into working directory +WORKDIR /var/teraflow/common +COPY src/common/. ./ +RUN rm -rf proto + +# Create proto sub-folder, copy .proto files, and generate Python code +RUN mkdir -p /var/teraflow/common/proto +WORKDIR /var/teraflow/common/proto +RUN touch __init__.py +COPY proto/*.proto ./ +RUN python3 -m grpc_tools.protoc -I=. --python_out=. --grpc_python_out=. *.proto +RUN rm *.proto +RUN find . -type f -exec sed -i -E 's/(import\ .*)_pb2/from . \1_pb2/g' {} \; + +# Create component sub-folders, get specific Python packages +RUN mkdir -p /var/teraflow/automation +WORKDIR /var/teraflow/automation +COPY src/automation/requirements.in requirements.in +RUN pip-compile --quiet --output-file=requirements.txt requirements.in +RUN python3 -m pip install -r requirements.txt + +# Add component files into working directory +WORKDIR /var/teraflow +COPY src/context/__init__.py context/__init__.py +COPY src/context/client/. context/client/ +COPY src/kpi_manager/__init__.py kpi_manager/__init__.py +COPY src/kpi_manager/client/. kpi_manager/client/ +COPY src/telemetry/__init__.py telemetry/__init__.py +COPY src/telemetry/frontend/__init__.py telemetry/frontend/__init__.py +COPY src/telemetry/frontend/client/. telemetry/frontend/client/ +COPY src/analytics/__init__.py analytics/__init__.py +COPY src/analytics/frontend/__init__.py analytics/frontend/__init__.py +COPY src/analytics/frontend/client/. analytics/frontend/client/ +COPY src/automation/. automation/ + +# Start the service +ENTRYPOINT ["python", "-m", "automation.service"] diff --git a/src/qkd_app/service/rest_server/__init__.py b/src/automation/__init__.py similarity index 99% rename from src/qkd_app/service/rest_server/__init__.py rename to src/automation/__init__.py index 07d08814021ef82220611ee21c01ba01806682e9..7c7568fdb6e3b1446aa9412ad32a0a5948ba949b 100644 --- a/src/qkd_app/service/rest_server/__init__.py +++ b/src/automation/__init__.py @@ -11,3 +11,4 @@ # 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. + diff --git a/src/automation/client/PolicyClient.py b/src/automation/client/PolicyClient.py new file mode 100644 index 0000000000000000000000000000000000000000..f7b6412a62670d0be2caa1460f7fab5ffec6fccd --- /dev/null +++ b/src/automation/client/PolicyClient.py @@ -0,0 +1,54 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import grpc, logging +from common.Constants import ServiceNameEnum +from common.Settings import get_service_host, get_service_port_grpc +from common.proto.policy_pb2 import PolicyRuleService, PolicyRuleState +from common.proto.policy_pb2_grpc import PolicyServiceStub +from common.tools.client.RetryDecorator import retry, delay_exponential +from common.tools.grpc.Tools import grpc_message_to_json_string + +LOGGER = logging.getLogger(__name__) +MAX_RETRIES = 15 +DELAY_FUNCTION = delay_exponential(initial=0.01, increment=2.0, maximum=5.0) +RETRY_DECORATOR = retry(max_retries=MAX_RETRIES, delay_function=DELAY_FUNCTION, prepare_method_name='connect') + +class PolicyClient: + def __init__(self, host=None, port=None): + if not host: host = get_service_host(ServiceNameEnum.POLICY) + if not port: port = get_service_port_grpc(ServiceNameEnum.POLICY) + self.endpoint = '{:s}:{:s}'.format(str(host), str(port)) + LOGGER.info('Creating channel to {:s}...'.format(str(self.endpoint))) + self.channel = None + self.stub = None + self.openconfig_stub=None + self.connect() + LOGGER.info('Channel created') + + def connect(self): + self.channel = grpc.insecure_channel(self.endpoint) + self.stub = PolicyServiceStub(self.channel) + + def close(self): + if self.channel is not None: self.channel.close() + self.channel = None + self.stub = None + + @RETRY_DECORATOR + def PolicyAddService(self, request : PolicyRuleService) -> PolicyRuleState: + LOGGER.debug('AddPolicy request: {:s}'.format(grpc_message_to_json_string(request))) + response = self.stub.PolicyAddService(request) + LOGGER.debug('AddPolicy result: {:s}'.format(grpc_message_to_json_string(response))) + return response diff --git a/src/automation/client/__init__.py b/src/automation/client/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..7c7568fdb6e3b1446aa9412ad32a0a5948ba949b --- /dev/null +++ b/src/automation/client/__init__.py @@ -0,0 +1,14 @@ +# Copyright 2022-2024 ETSI OSG/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. + diff --git a/src/automation/requirements.in b/src/automation/requirements.in new file mode 100644 index 0000000000000000000000000000000000000000..d81b9ddbeafeff94c830d48ca5594e775b9ce240 --- /dev/null +++ b/src/automation/requirements.in @@ -0,0 +1,20 @@ +# Copyright 2022-2024 ETSI OSG/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. + +apscheduler==3.10.4 +confluent-kafka==2.3.* +psycopg2-binary==2.9.* +SQLAlchemy==1.4.* +sqlalchemy-cockroachdb==1.4.* +SQLAlchemy-Utils==0.38.* diff --git a/src/automation/service/AutomationService.py b/src/automation/service/AutomationService.py new file mode 100644 index 0000000000000000000000000000000000000000..4ff0beb3aea14bc6e3ed014d9cc73e72e856c438 --- /dev/null +++ b/src/automation/service/AutomationService.py @@ -0,0 +1,28 @@ +# Copyright 2022-2024 ETSI OSG/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. + +from common.Constants import ServiceNameEnum +from common.Settings import get_service_port_grpc +from common.proto.automation_pb2_grpc import add_AutomationServiceServicer_to_server +from common.tools.service.GenericGrpcService import GenericGrpcService +from automation.service.AutomationServiceServicerImpl import AutomationServiceServicerImpl + +class AutomationService(GenericGrpcService): + def __init__(self, cls_name: str = __name__) -> None: + port = get_service_port_grpc(ServiceNameEnum.AUTOMATION) + super().__init__(port, cls_name=cls_name) + self.automation_servicer = AutomationServiceServicerImpl() + + def install_servicers(self): + add_AutomationServiceServicer_to_server(self.automation_servicer, self.server) diff --git a/src/automation/service/AutomationServiceServicerImpl.py b/src/automation/service/AutomationServiceServicerImpl.py new file mode 100644 index 0000000000000000000000000000000000000000..94550157e09a316f5705ce2b052a8837d75cd1b7 --- /dev/null +++ b/src/automation/service/AutomationServiceServicerImpl.py @@ -0,0 +1,224 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import grpc, json, logging +from uuid import uuid4 +from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_method +from common.method_wrappers.ServiceExceptions import InvalidArgumentException +from common.proto.analytics_frontend_pb2 import Analyzer, AnalyzerId +from common.proto.automation_pb2 import ZSMCreateRequest, ZSMService, ZSMServiceID, ZSMServiceState, ZSMCreateUpdate +from common.proto.automation_pb2_grpc import AutomationServiceServicer +from common.proto.context_pb2 import Service, ServiceId +from common.proto.kpi_manager_pb2 import KpiId, KpiDescriptor +from common.proto.policy_pb2 import PolicyRuleService, PolicyRuleState +from common.proto.policy_action_pb2 import PolicyRuleAction, PolicyRuleActionConfig +from common.proto.policy_condition_pb2 import PolicyRuleCondition +from common.proto.telemetry_frontend_pb2 import Collector, CollectorId + +from analytics.frontend.client.AnalyticsFrontendClient import AnalyticsFrontendClient +from automation.client.PolicyClient import PolicyClient +from context.client.ContextClient import ContextClient +from kpi_manager.client.KpiManagerClient import KpiManagerClient +from telemetry.frontend.client.TelemetryFrontendClient import TelemetryFrontendClient + +LOGGER = logging.getLogger(__name__) +METRICS_POOL = MetricsPool('Automation', 'RPC') + +class AutomationServiceServicerImpl(AutomationServiceServicer): + def __init__(self): + LOGGER.info('Init AutomationService') + + @safe_and_metered_rpc_method(METRICS_POOL,LOGGER) + def ZSMCreate(self, request : ZSMCreateRequest, context : grpc.ServicerContext) -> ZSMService: + + # check that service does not exist + context_client = ContextClient() + kpi_manager_client = KpiManagerClient() + policy_client = PolicyClient() + telemetry_frontend_client = TelemetryFrontendClient() + analytics_frontend_client = AnalyticsFrontendClient() + + try: + + # TODO: Remove static variables(get them from ZSMCreateRequest) + # TODO: Refactor policy component (remove unnecessary variables) + + ####### GET Context ####################### + LOGGER.info('Get the service from Context: ') + service: Service = context_client.GetService(request.serviceId) + LOGGER.info('Service ({:s}) :'.format(str(service))) + ########################################### + + ####### SET Kpi Descriptor LAT ################ + LOGGER.info('Set Kpi Descriptor LAT: ') + + if(len(service.service_constraints) == 0): + raise InvalidArgumentException("service_constraints" , "empty", []); + + if(len(service.service_constraints) > 1): + raise InvalidArgumentException("service_constraints" , ">1", []); + + if(service.service_constraints[0].sla_latency is None ): + raise InvalidArgumentException("sla_latency", "empty", []); + + ## Static Implementation Applied only in case of SLA Latency Constraint ## + + # KPI Descriptor + kpi_descriptor_lat = KpiDescriptor() + kpi_descriptor_lat.kpi_sample_type = 701 #'KPISAMPLETYPE_SERVICE_LATENCY_MS' #static service.service_constraints[].sla_latency.e2e_latency_ms + kpi_descriptor_lat.service_id.service_uuid.uuid = request.serviceId.service_uuid.uuid + kpi_descriptor_lat.kpi_id.kpi_id.uuid = str(uuid4()) + + kpi_id_lat: KpiId = kpi_manager_client.SetKpiDescriptor(kpi_descriptor_lat) + LOGGER.info('The kpi_id_lat({:s})'.format(str(kpi_id_lat))) + ########################################### + + ####### SET Kpi Descriptor TX ################ + LOGGER.info('Set Kpi Descriptor TX: ') + + kpi_descriptor_tx = KpiDescriptor() + kpi_descriptor_tx.kpi_sample_type = 101 # static KPISAMPLETYPE_PACKETS_TRANSMITTED + kpi_descriptor_tx.service_id.service_uuid.uuid = request.serviceId.service_uuid.uuid + kpi_descriptor_tx.kpi_id.kpi_id.uuid = str(uuid4()) + + kpi_id_tx: KpiId = kpi_manager_client.SetKpiDescriptor(kpi_descriptor_tx) + LOGGER.info('The kpi_id_tx({:s})'.format(str(kpi_id_tx))) + ########################################### + + ####### SET Kpi Descriptor RX ################ + LOGGER.info('Set Kpi Descriptor RX: ') + + kpi_descriptor_rx = KpiDescriptor() + kpi_descriptor_rx.kpi_sample_type = 102 # static KPISAMPLETYPE_PACKETS_RECEIVED + kpi_descriptor_rx.service_id.service_uuid.uuid = request.serviceId.service_uuid.uuid + kpi_descriptor_rx.kpi_id.kpi_id.uuid = str(uuid4()) + + kpi_id_rx: KpiId = kpi_manager_client.SetKpiDescriptor(kpi_descriptor_rx) + LOGGER.info('kpi_id_rx({:s})'.format(str(kpi_id_rx))) + ########################################### + + + + ####### START Collector TX ################# + collect_tx = Collector() + collect_tx.collector_id.collector_id.uuid = str(uuid4()) + collect_tx.kpi_id.kpi_id.uuid = kpi_id_tx.kpi_id.uuid + collect_tx.duration_s = 20000 # static + collect_tx.interval_s = 1 # static + LOGGER.info('Start Collector TX'.format(str(collect_tx))) + + collect_id_tx: CollectorId = telemetry_frontend_client.StartCollector(collect_tx) + LOGGER.info('collect_id_tx({:s})'.format(str(collect_id_tx))) + ############################################# + + ####### START Collector RX ################## + collect_rx = Collector() + collect_rx.collector_id.collector_id.uuid = str(uuid4()) + collect_rx.kpi_id.kpi_id.uuid = kpi_id_rx.kpi_id.uuid + collect_rx.duration_s = 20000 # static + collect_rx.interval_s = 1 # static + LOGGER.info('Start Collector RX'.format(str(collect_rx))) + + collect_id_rx: CollectorId = telemetry_frontend_client.StartCollector(collect_rx) + LOGGER.info('collect_id_tx({:s})'.format(str(collect_id_rx))) + ############################################### + + ####### START Analyzer LAT ################ + analyzer = Analyzer() + analyzer.analyzer_id.analyzer_id.uuid = str(uuid4()) + analyzer.algorithm_name = 'Test_Aggregate_and_Threshold' # static + analyzer.operation_mode = 2 + analyzer.input_kpi_ids.append(kpi_id_rx) + analyzer.input_kpi_ids.append(kpi_id_tx) + analyzer.output_kpi_ids.append(kpi_id_lat) + + thresholdStr = service.service_constraints[0].custom.constraint_type + + _threshold_dict = {thresholdStr: (0, int(service.service_constraints[0].custom.constraint_value))} + analyzer.parameters['thresholds'] = json.dumps(_threshold_dict) + analyzer.parameters['window_size'] = "60s" + analyzer.parameters['window_slider'] = "30s" + + analyzer_id_lat: AnalyzerId = analytics_frontend_client.StartAnalyzer(analyzer) + LOGGER.info('analyzer_id_lat({:s})'.format(str(analyzer_id_lat))) + ########################################################### + + ####### SET Policy LAT ################ + policy_lat = PolicyRuleService() + policy_lat.serviceId.service_uuid.uuid = request.serviceId.service_uuid.uuid + policy_lat.serviceId.context_id.context_uuid.uuid = request.serviceId.context_id.context_uuid.uuid + + # PolicyRuleBasic + policy_lat.policyRuleBasic.priority = 0 + policy_lat.policyRuleBasic.policyRuleId.uuid.uuid = str(uuid4()) + policy_lat.policyRuleBasic.booleanOperator = 2 + + # PolicyRuleAction + policyRuleActionConfig = PolicyRuleActionConfig() + policyRuleActionConfig.action_key = "" + policyRuleActionConfig.action_value = "" + + policyRuleAction = PolicyRuleAction() + policyRuleAction.action = 5 + policyRuleAction.action_config.append(policyRuleActionConfig) + policy_lat.policyRuleBasic.actionList.append(policyRuleAction) + + # for constraint in service.service_constraints: + + # PolicyRuleCondition + policyRuleCondition = PolicyRuleCondition() + policyRuleCondition.kpiId.kpi_id.uuid = kpi_id_lat.kpi_id.uuid + policyRuleCondition.numericalOperator = 5 + policyRuleCondition.kpiValue.floatVal = 300 + + policy_lat.policyRuleBasic.conditionList.append(policyRuleCondition) + + policy_rule_state: PolicyRuleState = policy_client.PolicyAddService(policy_lat) + LOGGER.info('policy_rule_state({:s})'.format(str(policy_rule_state))) + + except grpc.RpcError as e: + if e.code() != grpc.StatusCode.NOT_FOUND: raise # pylint: disable=no-member + LOGGER.exception('Unable to get Service({:s})'.format(str(request))) + context_client.close() + kpi_manager_client.close() + policy_client.close() + telemetry_frontend_client.close() + return None + + context_client.close() + kpi_manager_client.close() + policy_client.close() + telemetry_frontend_client.close() + return ZSMService() + + @safe_and_metered_rpc_method(METRICS_POOL,LOGGER) + def ZSMUpdate(self, request : ZSMCreateUpdate, context : grpc.ServicerContext) -> ZSMService: + LOGGER.info('NOT IMPLEMENTED ZSMUpdate') + return ZSMService() + + @safe_and_metered_rpc_method(METRICS_POOL,LOGGER) + def ZSMDelete(self, request : ZSMServiceID, context : grpc.ServicerContext) -> ZSMServiceState: + LOGGER.info('NOT IMPLEMENTED ZSMDelete') + return ZSMServiceState() + + @safe_and_metered_rpc_method(METRICS_POOL,LOGGER) + def ZSMGetById(self, request : ZSMServiceID, context : grpc.ServicerContext) -> ZSMService: + LOGGER.info('NOT IMPLEMENTED ZSMGetById') + return ZSMService() + + + @safe_and_metered_rpc_method(METRICS_POOL,LOGGER) + def ZSMGetByService(self, request : ServiceId, context : grpc.ServicerContext) -> ZSMService: + LOGGER.info('NOT IMPLEMENTED ZSMGetByService') + return ZSMService() diff --git a/src/automation/service/EventEngine.py b/src/automation/service/EventEngine.py new file mode 100644 index 0000000000000000000000000000000000000000..26c2b28cbe35230beec90dd9df4112d4ad131876 --- /dev/null +++ b/src/automation/service/EventEngine.py @@ -0,0 +1,169 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import json, logging, queue, threading +from typing import Dict, Optional +from automation.service.Tools import create_kpi_descriptor, start_collector +from common.proto.context_pb2 import ( + ConfigActionEnum, DeviceEvent, DeviceOperationalStatusEnum, Empty, ServiceEvent +) +from common.proto.kpi_sample_types_pb2 import KpiSampleType +from common.tools.grpc.BaseEventCollector import BaseEventCollector +from common.tools.grpc.BaseEventDispatcher import BaseEventDispatcher +from common.tools.grpc.Tools import grpc_message_to_json_string +from context.client.ContextClient import ContextClient +from kpi_manager.client.KpiManagerClient import KpiManagerClient +from telemetry.frontend.client.TelemetryFrontendClient import TelemetryFrontendClient + +LOGGER = logging.getLogger(__name__) + +DEVICE_OP_STATUS_UNDEFINED = DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_UNDEFINED +DEVICE_OP_STATUS_DISABLED = DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_DISABLED +DEVICE_OP_STATUS_ENABLED = DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_ENABLED +DEVICE_OP_STATUS_NOT_ENABLED = {DEVICE_OP_STATUS_UNDEFINED, DEVICE_OP_STATUS_DISABLED} + +KPISAMPLETYPE_UNKNOWN = KpiSampleType.KPISAMPLETYPE_UNKNOWN + +class EventCollector(BaseEventCollector): + pass + +class EventDispatcher(BaseEventDispatcher): + def __init__( + self, events_queue : queue.PriorityQueue, + terminate : Optional[threading.Event] = None + ) -> None: + super().__init__(events_queue, terminate) + self._context_client = ContextClient() + self._kpi_manager_client = KpiManagerClient() + self._telemetry_client = TelemetryFrontendClient() + self._device_endpoint_monitored : Dict[str, Dict[str, bool]] = dict() + + def dispatch_device_create(self, device_event : DeviceEvent) -> None: + MSG = 'Processing Device Create: {:s}' + LOGGER.info(MSG.format(grpc_message_to_json_string(device_event))) + self._device_activate_monitoring(device_event) + + def dispatch_device_update(self, device_event : DeviceEvent) -> None: + MSG = 'Processing Device Update: {:s}' + LOGGER.info(MSG.format(grpc_message_to_json_string(device_event))) + self._device_activate_monitoring(device_event) + + def dispatch_device_remove(self, device_event : DeviceEvent) -> None: + MSG = 'Processing Device Remove: {:s}' + LOGGER.info(MSG.format(grpc_message_to_json_string(device_event))) + + def dispatch_service_create(self, service_event : ServiceEvent) -> None: + MSG = 'Processing Service Create: {:s}' + LOGGER.info(MSG.format(grpc_message_to_json_string(service_event))) + + def dispatch_service_update(self, service_event : ServiceEvent) -> None: + MSG = 'Processing Service Update: {:s}' + LOGGER.info(MSG.format(grpc_message_to_json_string(service_event))) + + def dispatch_service_remove(self, service_event : ServiceEvent) -> None: + MSG = 'Processing Service Remove: {:s}' + LOGGER.info(MSG.format(grpc_message_to_json_string(service_event))) + + def _device_activate_monitoring(self, device_event : DeviceEvent) -> None: + device_id = device_event.device_id + device_uuid = device_id.device_uuid.uuid + device = self._context_client.GetDevice(device_id) + + device_op_status = device.device_operational_status + if device_op_status != DEVICE_OP_STATUS_ENABLED: + LOGGER.debug('Ignoring Device not enabled: {:s}'.format(grpc_message_to_json_string(device))) + return + + enabled_endpoint_names = set() + for config_rule in device.device_config.config_rules: + if config_rule.action != ConfigActionEnum.CONFIGACTION_SET: continue + if config_rule.WhichOneof('config_rule') != 'custom': continue + str_resource_key = str(config_rule.custom.resource_key) + if not str_resource_key.startswith('/interface['): continue + json_resource_value = json.loads(config_rule.custom.resource_value) + if 'name' not in json_resource_value: continue + if 'enabled' not in json_resource_value: continue + if not json_resource_value['enabled']: continue + enabled_endpoint_names.add(json_resource_value['name']) + + endpoints_monitored = self._device_endpoint_monitored.setdefault(device_uuid, dict()) + for endpoint in device.device_endpoints: + endpoint_uuid = endpoint.endpoint_id.endpoint_uuid.uuid + endpoint_name_or_uuid = endpoint.name + if endpoint_name_or_uuid is None or len(endpoint_name_or_uuid) == 0: + endpoint_name_or_uuid = endpoint_uuid + + endpoint_was_monitored = endpoints_monitored.get(endpoint_uuid, False) + endpoint_is_enabled = (endpoint_name_or_uuid in enabled_endpoint_names) + + if not endpoint_was_monitored and endpoint_is_enabled: + # activate + for kpi_sample_type in endpoint.kpi_sample_types: + if kpi_sample_type == KPISAMPLETYPE_UNKNOWN: continue + + kpi_id = create_kpi_descriptor( + self._kpi_manager_client, kpi_sample_type, + device_id=device.device_id, + endpoint_id=endpoint.endpoint_id, + ) + + duration_seconds = 86400 + interval_seconds = 10 + collector_id = start_collector( + self._telemetry_client, kpi_id, + duration_seconds, interval_seconds + ) + + endpoints_monitored[endpoint_uuid] = True + else: + MSG = 'Not implemented condition: event={:s} device={:s} endpoint={:s}' + \ + ' endpoint_was_monitored={:s} endpoint_is_enabled={:s}' + LOGGER.warning(MSG.format( + grpc_message_to_json_string(device_event), grpc_message_to_json_string(device), + grpc_message_to_json_string(endpoint), str(endpoint_was_monitored), + str(endpoint_is_enabled) + )) + +class EventEngine: + def __init__( + self, terminate : Optional[threading.Event] = None + ) -> None: + self._terminate = threading.Event() if terminate is None else terminate + + self._context_client = ContextClient() + self._event_collector = EventCollector(terminate=self._terminate) + self._event_collector.install_collector( + self._context_client.GetDeviceEvents, Empty(), + log_events_received=True + ) + self._event_collector.install_collector( + self._context_client.GetServiceEvents, Empty(), + log_events_received=True + ) + + self._event_dispatcher = EventDispatcher( + self._event_collector.get_events_queue(), + terminate=self._terminate + ) + + def start(self) -> None: + self._context_client.connect() + self._event_collector.start() + self._event_dispatcher.start() + + def stop(self) -> None: + self._terminate.set() + self._event_dispatcher.stop() + self._event_collector.stop() + self._context_client.close() diff --git a/src/automation/service/Tools.py b/src/automation/service/Tools.py new file mode 100644 index 0000000000000000000000000000000000000000..6a63475ca23c576a6fe946d6d149b70465ff1e1f --- /dev/null +++ b/src/automation/service/Tools.py @@ -0,0 +1,64 @@ +# Copyright 2022-2024 ETSI OSG/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. + + +import logging, uuid +from typing import Optional +from common.proto.context_pb2 import ConnectionId, DeviceId, EndPointId, LinkId, ServiceId, SliceId +from common.proto.kpi_manager_pb2 import KpiDescriptor, KpiId +from common.proto.kpi_sample_types_pb2 import KpiSampleType +from common.proto.telemetry_frontend_pb2 import Collector, CollectorId +from kpi_manager.client.KpiManagerClient import KpiManagerClient +from telemetry.frontend.client.TelemetryFrontendClient import TelemetryFrontendClient + +LOGGER = logging.getLogger(__name__) + +def create_kpi_descriptor( + kpi_manager_client : KpiManagerClient, + kpi_sample_type : KpiSampleType, + device_id : Optional[DeviceId ] = None, + endpoint_id : Optional[EndPointId ] = None, + service_id : Optional[ServiceId ] = None, + slice_id : Optional[SliceId ] = None, + connection_id : Optional[ConnectionId] = None, + link_id : Optional[LinkId ] = None, +) -> KpiId: + kpi_descriptor = KpiDescriptor() + kpi_descriptor.kpi_id.kpi_id.uuid = str(uuid.uuid4()) + kpi_descriptor.kpi_description = '' + kpi_descriptor.kpi_sample_type = kpi_sample_type + + if device_id is not None: kpi_descriptor.device_id .CopyFrom(device_id ) + if endpoint_id is not None: kpi_descriptor.endpoint_id .CopyFrom(endpoint_id ) + if service_id is not None: kpi_descriptor.service_id .CopyFrom(service_id ) + if slice_id is not None: kpi_descriptor.slice_id .CopyFrom(slice_id ) + if connection_id is not None: kpi_descriptor.connection_id.CopyFrom(connection_id) + if link_id is not None: kpi_descriptor.link_id .CopyFrom(link_id ) + + kpi_id : KpiId = kpi_manager_client.SetKpiDescriptor(kpi_descriptor) + return kpi_id + +def start_collector( + telemetry_client : TelemetryFrontendClient, + kpi_id : KpiId, + duration_seconds : float, + interval_seconds : float +) -> CollectorId: + collector = Collector() + collector.collector_id.collector_id.uuid = str(uuid.uuid4()) + collector.kpi_id.CopyFrom(kpi_id) + collector.duration_s = duration_seconds + collector.interval_s = interval_seconds + collector_id : CollectorId = telemetry_client.StartCollector(collector) + return collector_id diff --git a/src/automation/service/__init__.py b/src/automation/service/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..7c7568fdb6e3b1446aa9412ad32a0a5948ba949b --- /dev/null +++ b/src/automation/service/__init__.py @@ -0,0 +1,14 @@ +# Copyright 2022-2024 ETSI OSG/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. + diff --git a/src/automation/service/__main__.py b/src/automation/service/__main__.py new file mode 100644 index 0000000000000000000000000000000000000000..3baa0bd30b19fb624c5dcf0b236642704e42ab9f --- /dev/null +++ b/src/automation/service/__main__.py @@ -0,0 +1,80 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import logging, signal, sys, threading +from prometheus_client import start_http_server +from automation.service.EventEngine import EventEngine +from common.Constants import ServiceNameEnum +from common.Settings import ( + ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC, + get_env_var_name, get_log_level, get_metrics_port, + wait_for_environment_variables +) +from .AutomationService import AutomationService + +LOG_LEVEL = get_log_level() +logging.basicConfig(level=LOG_LEVEL, format="[%(asctime)s] %(levelname)s:%(name)s:%(message)s") +LOGGER = logging.getLogger(__name__) + +terminate = threading.Event() + +def signal_handler(signal, frame): # pylint: disable=redefined-outer-name,unused-argument + LOGGER.warning('Terminate signal received') + terminate.set() + +def main(): + LOGGER.info('Starting...') + + wait_for_environment_variables([ + get_env_var_name(ServiceNameEnum.CONTEXT, ENVVAR_SUFIX_SERVICE_HOST ), + get_env_var_name(ServiceNameEnum.CONTEXT, ENVVAR_SUFIX_SERVICE_PORT_GRPC), + get_env_var_name(ServiceNameEnum.DEVICE, ENVVAR_SUFIX_SERVICE_HOST ), + get_env_var_name(ServiceNameEnum.DEVICE, ENVVAR_SUFIX_SERVICE_PORT_GRPC), + get_env_var_name(ServiceNameEnum.KPIMANAGER, ENVVAR_SUFIX_SERVICE_HOST ), + get_env_var_name(ServiceNameEnum.KPIMANAGER, ENVVAR_SUFIX_SERVICE_PORT_GRPC), + get_env_var_name(ServiceNameEnum.TELEMETRY, ENVVAR_SUFIX_SERVICE_HOST ), + get_env_var_name(ServiceNameEnum.TELEMETRY, ENVVAR_SUFIX_SERVICE_PORT_GRPC), + get_env_var_name(ServiceNameEnum.ANALYTICS, ENVVAR_SUFIX_SERVICE_HOST ), + get_env_var_name(ServiceNameEnum.ANALYTICS, ENVVAR_SUFIX_SERVICE_PORT_GRPC), + get_env_var_name(ServiceNameEnum.POLICY, ENVVAR_SUFIX_SERVICE_HOST ), + get_env_var_name(ServiceNameEnum.POLICY, ENVVAR_SUFIX_SERVICE_PORT_GRPC), + ]) + + signal.signal(signal.SIGINT, signal_handler) + signal.signal(signal.SIGTERM, signal_handler) + + # Start metrics server + metrics_port = get_metrics_port() + start_http_server(metrics_port) + + # Start Event Collection+Dispatching Engine + event_engine = EventEngine(terminate=terminate) + event_engine.start() + + # Starting Automation service + grpc_service = AutomationService() + grpc_service.start() + + # Wait for Ctrl+C or termination signal + while not terminate.wait(timeout=1.0): pass + + LOGGER.info('Terminating...') + grpc_service.stop() + event_engine.stop() + + LOGGER.info('Bye') + return 0 + +if __name__ == '__main__': + sys.exit(main()) diff --git a/src/automation/tests/__init__.py b/src/automation/tests/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..7c7568fdb6e3b1446aa9412ad32a0a5948ba949b --- /dev/null +++ b/src/automation/tests/__init__.py @@ -0,0 +1,14 @@ +# Copyright 2022-2024 ETSI OSG/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. + diff --git a/src/automation/tests/test_unitary_emulated.py b/src/automation/tests/test_unitary_emulated.py new file mode 100644 index 0000000000000000000000000000000000000000..dee3c4fabed496e50a7c7ee5dafa9a98be1d474d --- /dev/null +++ b/src/automation/tests/test_unitary_emulated.py @@ -0,0 +1,22 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import logging + +LOGGER = logging.getLogger(__name__) + +def test_device_emulated_add_error_cases(): + LOGGER.info("Start Tests") + LOGGER.info("Second log Tests") + assert True diff --git a/src/automation/tests/test_unitary_ietf_actn.py b/src/automation/tests/test_unitary_ietf_actn.py new file mode 100644 index 0000000000000000000000000000000000000000..37a5ac4968c9bb39682b84b3e061ff4a35dbe0f1 --- /dev/null +++ b/src/automation/tests/test_unitary_ietf_actn.py @@ -0,0 +1,21 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import logging + +LOGGER = logging.getLogger(__name__) + +def test_device_emulated_add_error_cases(): + LOGGER.info("Start Tests") + assert True diff --git a/src/common/Constants.py b/src/common/Constants.py index 8b2e215a0ee669726430d12ea4ebac334f69c1ce..aa15d66c5937c3f5a589ddf9cbb432d08c4b49b0 100644 --- a/src/common/Constants.py +++ b/src/common/Constants.py @@ -36,6 +36,7 @@ INTERDOMAIN_TOPOLOGY_NAME = 'inter' # contains the abstract inter-domain top # Default service names class ServiceNameEnum(Enum): + AUTOMATION = 'automation' CONTEXT = 'context' DEVICE = 'device' SERVICE = 'service' @@ -60,15 +61,17 @@ class ServiceNameEnum(Enum): FORECASTER = 'forecaster' E2EORCHESTRATOR = 'e2e-orchestrator' OPTICALCONTROLLER = 'opticalcontroller' + VNTMANAGER = 'vnt-manager' BGPLS = 'bgpls-speaker' QKD_APP = 'qkd_app' KPIMANAGER = 'kpi-manager' KPIVALUEAPI = 'kpi-value-api' KPIVALUEWRITER = 'kpi-value-writer' - TELEMETRYFRONTEND = 'telemetry-frontend' + TELEMETRY = 'telemetry' TELEMETRYBACKEND = 'telemetry-backend' - ANALYTICSFRONTEND = 'analytics-frontend' + ANALYTICS = 'analytics' ANALYTICSBACKEND = 'analytics-backend' + QOSPROFILE = 'qos-profile' # Used for test and debugging only DLT_GATEWAY = 'dltgateway' @@ -98,14 +101,17 @@ DEFAULT_SERVICE_GRPC_PORTS = { ServiceNameEnum.E2EORCHESTRATOR .value : 10050, ServiceNameEnum.OPTICALCONTROLLER .value : 10060, ServiceNameEnum.QKD_APP .value : 10070, + ServiceNameEnum.VNTMANAGER .value : 10080, ServiceNameEnum.BGPLS .value : 20030, + ServiceNameEnum.QOSPROFILE .value : 20040, ServiceNameEnum.KPIMANAGER .value : 30010, ServiceNameEnum.KPIVALUEAPI .value : 30020, ServiceNameEnum.KPIVALUEWRITER .value : 30030, - ServiceNameEnum.TELEMETRYFRONTEND .value : 30050, + ServiceNameEnum.TELEMETRY .value : 30050, ServiceNameEnum.TELEMETRYBACKEND .value : 30060, - ServiceNameEnum.ANALYTICSFRONTEND .value : 30080, + ServiceNameEnum.ANALYTICS .value : 30080, ServiceNameEnum.ANALYTICSBACKEND .value : 30090, + ServiceNameEnum.AUTOMATION .value : 30200, # Used for test and debugging only ServiceNameEnum.DLT_GATEWAY .value : 50051, @@ -114,15 +120,12 @@ DEFAULT_SERVICE_GRPC_PORTS = { # Default HTTP/REST-API service ports DEFAULT_SERVICE_HTTP_PORTS = { - ServiceNameEnum.CONTEXT .value : 8080, - ServiceNameEnum.NBI .value : 8080, - ServiceNameEnum.WEBUI .value : 8004, - ServiceNameEnum.QKD_APP .value : 8005, + ServiceNameEnum.NBI .value : 8080, + ServiceNameEnum.WEBUI.value : 8004, } # Default HTTP/REST-API service base URLs DEFAULT_SERVICE_HTTP_BASEURLS = { - ServiceNameEnum.NBI .value : None, - ServiceNameEnum.WEBUI .value : None, - ServiceNameEnum.QKD_APP .value : None, + ServiceNameEnum.NBI .value : None, + ServiceNameEnum.WEBUI.value : None, } diff --git a/src/common/Settings.py b/src/common/Settings.py index eaeb363adc1d9eadb9ddb0487abef8a0885ce380..5845ee5221be69e5d5cf00b60d9376a7fd6fcec3 100644 --- a/src/common/Settings.py +++ b/src/common/Settings.py @@ -15,9 +15,11 @@ import logging, os, re, time from typing import Dict, List from common.Constants import ( - DEFAULT_GRPC_BIND_ADDRESS, DEFAULT_GRPC_GRACE_PERIOD, DEFAULT_GRPC_MAX_WORKERS, DEFAULT_HTTP_BIND_ADDRESS, - DEFAULT_LOG_LEVEL, DEFAULT_METRICS_PORT, DEFAULT_SERVICE_GRPC_PORTS, DEFAULT_SERVICE_HTTP_BASEURLS, - DEFAULT_SERVICE_HTTP_PORTS, ServiceNameEnum + DEFAULT_GRPC_BIND_ADDRESS, DEFAULT_GRPC_GRACE_PERIOD, + DEFAULT_GRPC_MAX_WORKERS, DEFAULT_HTTP_BIND_ADDRESS, + DEFAULT_LOG_LEVEL, DEFAULT_METRICS_PORT, DEFAULT_SERVICE_GRPC_PORTS, + DEFAULT_SERVICE_HTTP_BASEURLS, DEFAULT_SERVICE_HTTP_PORTS, + ServiceNameEnum ) LOGGER = logging.getLogger(__name__) @@ -79,12 +81,12 @@ def get_service_host(service_name : ServiceNameEnum): def get_service_port_grpc(service_name : ServiceNameEnum): envvar_name = get_env_var_name(service_name, ENVVAR_SUFIX_SERVICE_PORT_GRPC) default_value = DEFAULT_SERVICE_GRPC_PORTS.get(service_name.value) - return get_setting(envvar_name, default=default_value) + return int(get_setting(envvar_name, default=default_value)) def get_service_port_http(service_name : ServiceNameEnum): envvar_name = get_env_var_name(service_name, ENVVAR_SUFIX_SERVICE_PORT_HTTP) default_value = DEFAULT_SERVICE_HTTP_PORTS.get(service_name.value) - return get_setting(envvar_name, default=default_value) + return int(get_setting(envvar_name, default=default_value)) def get_service_baseurl_http(service_name : ServiceNameEnum): envvar_name = get_env_var_name(service_name, ENVVAR_SUFIX_SERVICE_BASEURL_HTTP) @@ -95,16 +97,34 @@ def get_log_level(): return get_setting(ENVVAR_LOG_LEVEL, default=DEFAULT_LOG_LEVEL) def get_metrics_port(): - return get_setting(ENVVAR_METRICS_PORT, default=DEFAULT_METRICS_PORT) + return int(get_setting(ENVVAR_METRICS_PORT, default=DEFAULT_METRICS_PORT)) def get_grpc_bind_address(): return get_setting(ENVVAR_GRPC_BIND_ADDRESS, default=DEFAULT_GRPC_BIND_ADDRESS) def get_grpc_max_workers(): - return get_setting(ENVVAR_GRPC_MAX_WORKERS, default=DEFAULT_GRPC_MAX_WORKERS) + return int(get_setting(ENVVAR_GRPC_MAX_WORKERS, default=DEFAULT_GRPC_MAX_WORKERS)) def get_grpc_grace_period(): - return get_setting(ENVVAR_GRPC_GRACE_PERIOD, default=DEFAULT_GRPC_GRACE_PERIOD) + return int(get_setting(ENVVAR_GRPC_GRACE_PERIOD, default=DEFAULT_GRPC_GRACE_PERIOD)) def get_http_bind_address(): return get_setting(ENVVAR_HTTP_BIND_ADDRESS, default=DEFAULT_HTTP_BIND_ADDRESS) + + +##### ----- Detect deployed microservices ----- ##### + +def is_microservice_deployed(service_name : ServiceNameEnum) -> bool: + host_env_var_name = get_env_var_name(service_name, ENVVAR_SUFIX_SERVICE_HOST ) + port_env_var_name = get_env_var_name(service_name, ENVVAR_SUFIX_SERVICE_PORT_GRPC) + return (host_env_var_name in os.environ) and (port_env_var_name in os.environ) + +def is_deployed_bgpls () -> bool: return is_microservice_deployed(ServiceNameEnum.BGPLS ) +def is_deployed_e2e_orch () -> bool: return is_microservice_deployed(ServiceNameEnum.E2EORCHESTRATOR ) +def is_deployed_forecaster() -> bool: return is_microservice_deployed(ServiceNameEnum.FORECASTER ) +def is_deployed_load_gen () -> bool: return is_microservice_deployed(ServiceNameEnum.LOAD_GENERATOR ) +def is_deployed_optical () -> bool: return is_microservice_deployed(ServiceNameEnum.OPTICALCONTROLLER) +def is_deployed_policy () -> bool: return is_microservice_deployed(ServiceNameEnum.POLICY ) +def is_deployed_qkd_app () -> bool: return is_microservice_deployed(ServiceNameEnum.QKD_APP ) +def is_deployed_slice () -> bool: return is_microservice_deployed(ServiceNameEnum.SLICE ) +def is_deployed_te () -> bool: return is_microservice_deployed(ServiceNameEnum.TE ) diff --git a/src/common/tools/context_queries/OpticalConfig.py b/src/common/tools/context_queries/OpticalConfig.py index 0082a1deae17cd2129cfa591cb0121e54b4ef197..bd697599cdd674ad2dca9ac8d38100333e315ea3 100644 --- a/src/common/tools/context_queries/OpticalConfig.py +++ b/src/common/tools/context_queries/OpticalConfig.py @@ -1,3 +1,17 @@ +# Copyright 2022-2024 ETSI OSG/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. + from common.method_wrappers.ServiceExceptions import InvalidArgumentsException from typing import Optional, Union @@ -31,20 +45,6 @@ def get_uuid_random() -> str: # Generate random UUID. No need to use namespace since "namespace + random = random". return str(uuid4()) -def channel_get_uuid( - channel_name :str , allow_random : bool = False -) -> str: - - - if len(channel_name) > 0: - return get_uuid_from_string(channel_name) - if allow_random: return get_uuid_random() - - raise InvalidArgumentsException([ - ('channel uuid', channel_name), - - ], extra_details=['Channel name is required to produce a channel UUID']) - def device_get_uuid (device_name) : if (len(device_name)> 0): return get_uuid_from_string(device_name) @@ -56,7 +56,6 @@ def device_get_uuid (device_name) : def opticalconfig_get_uuid( device_name : str = '', allow_random : bool = False ) -> str: - if len(device_name) > 0: device_uuid= device_get_uuid(device_name=device_name) return get_uuid_from_string(f"{device_uuid}_opticalconfig") diff --git a/src/kpi_manager/database/Kpi_DB.py b/src/common/tools/database/GenericDatabase.py similarity index 58% rename from src/kpi_manager/database/Kpi_DB.py rename to src/common/tools/database/GenericDatabase.py index 49ad9c9b579daa918818366a1d9505089968edc2..0cd41b9ef0c97263b56a5eda67b173f6ba61a997 100644 --- a/src/kpi_manager/database/Kpi_DB.py +++ b/src/common/tools/database/GenericDatabase.py @@ -12,52 +12,54 @@ # See the License for the specific language governing permissions and # limitations under the License. + import logging import sqlalchemy_utils +from .GenericEngine import Engine +from sqlalchemy import inspect from sqlalchemy.orm import sessionmaker -from kpi_manager.database.KpiEngine import KpiEngine -from kpi_manager.database.KpiModel import Kpi as KpiModel -from common.method_wrappers.ServiceExceptions import ( - AlreadyExistsException, OperationFailedException , NotFoundException) +from common.Settings import get_setting + +from common.method_wrappers.ServiceExceptions import (OperationFailedException, AlreadyExistsException) LOGGER = logging.getLogger(__name__) -DB_NAME = "tfs_kpi_mgmt" -class KpiDB: - def __init__(self): - self.db_engine = KpiEngine.get_engine() +class Database: + def __init__(self, model): + self.db_engine = Engine.get_engine() if self.db_engine is None: LOGGER.error('Unable to get SQLAlchemy DB Engine...') - return False - self.db_name = DB_NAME - self.Session = sessionmaker(bind=self.db_engine) - - def create_database(self) -> None: + raise Exception('Failed to initialize the database engine.') + self.db_model = model + self.db_table = model.__name__ + self.Session = sessionmaker(bind=self.db_engine) + + def create_database(self): if not sqlalchemy_utils.database_exists(self.db_engine.url): - sqlalchemy_utils.create_database(self.db_engine.url) LOGGER.debug("Database created. {:}".format(self.db_engine.url)) + sqlalchemy_utils.create_database(self.db_engine.url) def drop_database(self) -> None: if sqlalchemy_utils.database_exists(self.db_engine.url): sqlalchemy_utils.drop_database(self.db_engine.url) def create_tables(self): - # TODO: use "get_tables(declatrative class obj)" method of "sqlalchemy_utils" to verify tables. try: - KpiModel.metadata.create_all(self.db_engine) # type: ignore - LOGGER.debug("Tables created in the DB Name: {:}".format(self.db_name)) + self.db_model.metadata.create_all(self.db_engine) + LOGGER.debug("Tables created in the database: {:}".format(self.db_table)) except Exception as e: - LOGGER.debug("Tables cannot be created in the kpi database. {:s}".format(str(e))) + LOGGER.debug("Tables cannot be created in the database. {:s}".format(str(e))) raise OperationFailedException ("Tables can't be created", extra_details=["unable to create table {:}".format(e)]) def verify_tables(self): try: - with self.db_engine.connect() as connection: - result = connection.execute("SHOW TABLES;") - tables = result.fetchall() # type: ignore - LOGGER.debug("Tables verified: {:}".format(tables)) + inspect_object = inspect(self.db_engine) + if(inspect_object.has_table(self.db_table , None)): + LOGGER.info("Table exists in DB: {:}".format(self.db_name)) except Exception as e: - LOGGER.debug("Unable to fetch Table names. {:s}".format(str(e))) + LOGGER.info("Unable to fetch Table names. {:s}".format(str(e))) + +# ----------------- DB OPERATIONS --------------------- def add_row_to_db(self, row): session = self.Session() @@ -70,7 +72,8 @@ class KpiDB: session.rollback() if "psycopg2.errors.UniqueViolation" in str(e): LOGGER.error(f"Unique key voilation: {row.__class__.__name__} table. {str(e)}") - raise AlreadyExistsException(row.__class__.__name__, row, extra_details=["Unique key voilation: {:}".format(e)] ) + raise AlreadyExistsException(row.__class__.__name__, row, + extra_details=["Unique key voilation: {:}".format(e)] ) else: LOGGER.error(f"Failed to insert new row into {row.__class__.__name__} table. {str(e)}") raise OperationFailedException ("Deletion by column id", extra_details=["unable to delete row {:}".format(e)]) @@ -89,6 +92,7 @@ class KpiDB: print("{:} ID not found, No matching row: {:}".format(model.__name__, id_to_search)) return None except Exception as e: + session.rollback() LOGGER.debug(f"Failed to retrieve {model.__name__} ID. {str(e)}") raise OperationFailedException ("search by column id", extra_details=["unable to search row {:}".format(e)]) finally: @@ -112,43 +116,24 @@ class KpiDB: finally: session.close() - def select_with_filter(self, model, filter_object): - session = self.Session() + def select_with_filter(self, query_object, session, model): + """ + Generic method to apply filters dynamically based on filter. + params: model_name: SQLAlchemy model class name. + query_object : Object that contains query with applied filters. + session: session of the query. + return: List of filtered records. + """ try: - query = session.query(KpiModel) - # Apply filters based on the filter_object - if filter_object.kpi_id: - query = query.filter(KpiModel.kpi_id.in_([k.kpi_id.uuid for k in filter_object.kpi_id])) - - if filter_object.kpi_sample_type: - query = query.filter(KpiModel.kpi_sample_type.in_(filter_object.kpi_sample_type)) - - if filter_object.device_id: - query = query.filter(KpiModel.device_id.in_([d.device_uuid.uuid for d in filter_object.device_id])) - - if filter_object.endpoint_id: - query = query.filter(KpiModel.endpoint_id.in_([e.endpoint_uuid.uuid for e in filter_object.endpoint_id])) - - if filter_object.service_id: - query = query.filter(KpiModel.service_id.in_([s.service_uuid.uuid for s in filter_object.service_id])) - - if filter_object.slice_id: - query = query.filter(KpiModel.slice_id.in_([s.slice_uuid.uuid for s in filter_object.slice_id])) - - if filter_object.connection_id: - query = query.filter(KpiModel.connection_id.in_([c.connection_uuid.uuid for c in filter_object.connection_id])) - - if filter_object.link_id: - query = query.filter(KpiModel.link_id.in_([l.link_uuid.uuid for l in filter_object.link_id])) - result = query.all() - + result = query_object.all() + # Log result and handle empty case if result: - LOGGER.debug(f"Fetched filtered rows from {model.__name__} table with filters: {filter_object}") # - Results: {result} + LOGGER.debug(f"Fetched filtered rows from {model.__name__} with filters: {query_object}") else: - LOGGER.debug(f"No matching row found in {model.__name__} table with filters: {filter_object}") + LOGGER.warning(f"No matching rows found in {model.__name__} with filters: {query_object}") return result except Exception as e: - LOGGER.error(f"Error fetching filtered rows from {model.__name__} table with filters {filter_object} ::: {e}") - raise OperationFailedException ("Select by filter", extra_details=["unable to apply the filter {:}".format(e)]) + LOGGER.error(f"Error fetching filtered rows from {model.__name__} with filters {query_object} ::: {e}") + raise OperationFailedException("Select by filter", extra_details=[f"Unable to apply the filter: {e}"]) finally: session.close() diff --git a/src/analytics/database/AnalyzerEngine.py b/src/common/tools/database/GenericEngine.py similarity index 92% rename from src/analytics/database/AnalyzerEngine.py rename to src/common/tools/database/GenericEngine.py index 9294e09966ef9e13c9cfa3cab590e5d0c8b6a80e..18bb15360853524ed93606f3137972aa76aa850a 100644 --- a/src/analytics/database/AnalyzerEngine.py +++ b/src/common/tools/database/GenericEngine.py @@ -18,14 +18,14 @@ from common.Settings import get_setting LOGGER = logging.getLogger(__name__) CRDB_URI_TEMPLATE = 'cockroachdb://{:s}:{:s}@cockroachdb-public.{:s}.svc.cluster.local:{:s}/{:s}?sslmode={:s}' -class AnalyzerEngine: +class Engine: @staticmethod def get_engine() -> sqlalchemy.engine.Engine: crdb_uri = get_setting('CRDB_URI', default=None) if crdb_uri is None: CRDB_NAMESPACE = get_setting('CRDB_NAMESPACE') CRDB_SQL_PORT = get_setting('CRDB_SQL_PORT') - CRDB_DATABASE = "tfs-analyzer" # TODO: define variable get_setting('CRDB_DATABASE_KPI_MGMT') + CRDB_DATABASE = get_setting('CRDB_DATABASE') CRDB_USERNAME = get_setting('CRDB_USERNAME') CRDB_PASSWORD = get_setting('CRDB_PASSWORD') CRDB_SSLMODE = get_setting('CRDB_SSLMODE') diff --git a/src/common/tools/database/__init__.py b/src/common/tools/database/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..3ee6f7071f145e06c3aeaefc09a43ccd88e619e3 --- /dev/null +++ b/src/common/tools/database/__init__.py @@ -0,0 +1,14 @@ +# Copyright 2022-2024 ETSI OSG/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. + diff --git a/src/common/tools/descriptor/Loader.py b/src/common/tools/descriptor/Loader.py index ecae5cd6c251737c7dc085080eb481bd1135e587..958536f26c3c63468f1af4a6d14130b6e12fd08f 100644 --- a/src/common/tools/descriptor/Loader.py +++ b/src/common/tools/descriptor/Loader.py @@ -33,20 +33,25 @@ # # do test ... # descriptor_loader.unload() -import concurrent.futures, json, logging, operator +import concurrent.futures, copy, json, logging, operator from typing import Any, Dict, List, Optional, Tuple, Union from common.proto.context_pb2 import ( - Connection, Context, ContextId, Device, DeviceId, Empty, Link, LinkId, Service, ServiceId, Slice, SliceId, - Topology, TopologyId , OpticalLink) + Connection, Context, ContextId, Device, DeviceId, Empty, + Link, LinkId, Service, ServiceId, Slice, SliceId, + Topology, TopologyId , OpticalLink +) from common.tools.object_factory.Context import json_context_id from context.client.ContextClient import ContextClient from device.client.DeviceClient import DeviceClient from service.client.ServiceClient import ServiceClient from slice.client.SliceClient import SliceClient from .Tools import ( - format_device_custom_config_rules, format_service_custom_config_rules, format_slice_custom_config_rules, - get_descriptors_add_contexts, get_descriptors_add_services, get_descriptors_add_slices, - get_descriptors_add_topologies, split_controllers_and_network_devices, split_devices_by_rules) + format_device_custom_config_rules, format_service_custom_config_rules, + format_slice_custom_config_rules, get_descriptors_add_contexts, + get_descriptors_add_services, get_descriptors_add_slices, + get_descriptors_add_topologies, split_controllers_and_network_devices, + split_devices_by_rules +) LOGGER = logging.getLogger(__name__) LOGGERS = { @@ -78,6 +83,30 @@ TypeResults = List[Tuple[str, str, int, List[str]]] # entity_name, action, num_o TypeNotification = Tuple[str, str] # message, level TypeNotificationList = List[TypeNotification] +SLICE_TEMPLATE = { + "slice_id": { + "context_id": {"context_uuid": {"uuid": "admin"}}, + "slice_uuid": {"uuid": None} + }, + "name": {}, + "slice_config": {"config_rules": [ + {"action": 1, "custom": {"resource_key": "/settings", "resource_value": { + "address_families": ["IPV4"], "bgp_as": 65000, + "bgp_route_target": "65000:333", "mtu": 1512 + }}} + ]}, + "slice_constraints": [ + {"sla_capacity": {"capacity_gbps": 20.0}}, + {"sla_availability": {"availability": 20.0, "num_disjoint_paths": 1, "all_active": True}}, + {"sla_isolation": {"isolation_level": [0]}} + ], + "slice_endpoint_ids": [ + + ], + "slice_status": {"slice_status": 1} +} + + class DescriptorLoader: def __init__( self, descriptors : Optional[Union[str, Dict]] = None, descriptors_file : Optional[str] = None, @@ -99,20 +128,60 @@ class DescriptorLoader: self.__num_workers = num_workers - self.__dummy_mode = self.__descriptors.get('dummy_mode' , False) - self.__contexts = self.__descriptors.get('contexts' , []) - self.__topologies = self.__descriptors.get('topologies' , []) - self.__devices = self.__descriptors.get('devices' , []) - self.__links = self.__descriptors.get('links' , []) - self.__services = self.__descriptors.get('services' , []) - self.__slices = self.__descriptors.get('slices' , []) - self.__connections = self.__descriptors.get('connections', []) - - #--------------- Experimental Optical Link -------------- - - self.__optical_links = self.__descriptors.get("optical_links",[]) - - + self.__dummy_mode = self.__descriptors.get('dummy_mode' , False) + self.__contexts = self.__descriptors.get('contexts' , []) + self.__topologies = self.__descriptors.get('topologies' , []) + self.__devices = self.__descriptors.get('devices' , []) + self.__links = self.__descriptors.get('links' , []) + self.__services = self.__descriptors.get('services' , []) + self.__slices = self.__descriptors.get('slices' , []) + self.__ietf_slices = self.__descriptors.get('ietf-network-slice-service:network-slice-services', {}) + self.__connections = self.__descriptors.get('connections', []) + self.__optical_links = self.__descriptors.get('optical_links',[]) + + if len(self.__ietf_slices) > 0: + for slice_service in self.__ietf_slices["slice-service"]: + tfs_slice = copy.deepcopy(SLICE_TEMPLATE) + tfs_slice["slice_id"]["slice_uuid"]["uuid"] = slice_service["id"] + tfs_slice["name"] = slice_service["description"] + for sdp in slice_service["sdps"]["sdp"]: + sdp_id = sdp["id"] + for attcircuit in sdp["attachment-circuits"]["attachment-circuit"]: + att_cir_tp_id = attcircuit["ac-tp-id"] + RESOURCE_KEY = "/device[{:s}]/endpoint[{:s}]/settings" + resource_key = RESOURCE_KEY.format(str(sdp_id), str(att_cir_tp_id)) + + for tag in attcircuit['ac-tags']['ac-tag']: + if tag.get('tag-type') == 'ietf-nss:vlan-id': + vlan_id = tag.get('value') + else: + vlan_id = 0 + + tfs_slice["slice_config"]["config_rules"].append({ + "action": 1, "custom": { + "resource_key": resource_key, "resource_value": { + "router_id": sdp.get("node-id",[]), + "sub_interface_index": 0, + "vlan_id": vlan_id + } + } + }) + tfs_slice["slice_endpoint_ids"].append({ + "device_id": {"device_uuid": {"uuid": sdp_id}}, + "endpoint_uuid": {"uuid": att_cir_tp_id}, + "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, + "topology_uuid": {"uuid": "admin"}} + }) + #tfs_slice["slice_constraints"].append({ + # "endpoint_location": { + # "endpoint_id": { + # "device_id": {"device_uuid": {"uuid": sdp["id"]}}, + # "endpoint_uuid": {"uuid": attcircuit["ac-tp-id"]} + # }, + # "location": {"region": "4"} + # } + #}) + self.__slices.append(tfs_slice) self.__contexts_add = None self.__topologies_add = None @@ -218,7 +287,6 @@ class DescriptorLoader: @property def num_connections(self) -> int: return len(self.__connections) - #------------- Experimental --------------- @property def optical_links(self) -> List[Dict]: return self.__optical_links @@ -242,7 +310,9 @@ class DescriptorLoader: def _load_dummy_mode(self) -> None: # Dummy Mode: used to pre-load databases (WebUI debugging purposes) with no smart or automated tasks. + controllers, network_devices = split_controllers_and_network_devices(self.__devices) + self.__ctx_cli.connect() self._process_descr('context', 'add', self.__ctx_cli.SetContext, Context, self.__contexts_add ) self._process_descr('topology', 'add', self.__ctx_cli.SetTopology, Topology, self.__topologies_add) @@ -282,19 +352,17 @@ class DescriptorLoader: self.__svc_cli.connect() self.__slc_cli.connect() - self._process_descr('context', 'add', self.__ctx_cli.SetContext, Context, self.__contexts_add ) - self._process_descr('topology', 'add', self.__ctx_cli.SetTopology, Topology, self.__topologies_add) - self._process_descr('controller', 'add', self.__dev_cli.AddDevice, Device, controllers_add ) - self._process_descr('device', 'add', self.__dev_cli.AddDevice, Device, network_devices_add ) - self._process_descr('device', 'config', self.__dev_cli.ConfigureDevice, Device, self.__devices_config) - self._process_descr('link', 'add', self.__ctx_cli.SetLink, Link, self.__links ) - self._process_descr('service', 'add', self.__svc_cli.CreateService, Service, self.__services_add ) - self._process_descr('service', 'update', self.__svc_cli.UpdateService, Service, self.__services ) - self._process_descr('slice', 'add', self.__slc_cli.CreateSlice, Slice, self.__slices_add ) - self._process_descr('slice', 'update', self.__slc_cli.UpdateSlice, Slice, self.__slices ) - - #----------------------------------- Experimental --------------------------------------- - self._process_descr('link', 'add', self.__ctx_cli.SetOpticalLink, OpticalLink, self.__optical_links) + self._process_descr('context', 'add', self.__ctx_cli.SetContext, Context, self.__contexts_add ) + self._process_descr('topology', 'add', self.__ctx_cli.SetTopology, Topology, self.__topologies_add) + self._process_descr('controller', 'add', self.__dev_cli.AddDevice, Device, controllers_add ) + self._process_descr('device', 'add', self.__dev_cli.AddDevice, Device, network_devices_add ) + self._process_descr('device', 'config', self.__dev_cli.ConfigureDevice, Device, self.__devices_config) + self._process_descr('link', 'add', self.__ctx_cli.SetLink, Link, self.__links ) + self._process_descr('service', 'add', self.__svc_cli.CreateService, Service, self.__services_add ) + self._process_descr('service', 'update', self.__svc_cli.UpdateService, Service, self.__services ) + self._process_descr('slice', 'add', self.__slc_cli.CreateSlice, Slice, self.__slices_add ) + self._process_descr('slice', 'update', self.__slc_cli.UpdateSlice, Slice, self.__slices ) + self._process_descr('link', 'add', self.__ctx_cli.SetOpticalLink, OpticalLink, self.__optical_links ) # By default the Context component automatically assigns devices and links to topologies based on their # endpoints, and assigns topologies, services, and slices to contexts based on their identifiers. diff --git a/src/common/tools/grpc/BaseEventCollector.py b/src/common/tools/grpc/BaseEventCollector.py new file mode 100644 index 0000000000000000000000000000000000000000..04dfb654963da1ae4f83a8a14feaaa8c17d1f128 --- /dev/null +++ b/src/common/tools/grpc/BaseEventCollector.py @@ -0,0 +1,136 @@ +# Copyright 2022-2024 ETSI OSG/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. + +# See usage example below + +import grpc, logging, queue, threading, time +from typing import Any, Callable, List, Optional +from common.proto.context_pb2 import Empty +from common.tools.grpc.Tools import grpc_message_to_json_string +from context.client.ContextClient import ContextClient + +LOGGER = logging.getLogger(__name__) +LOGGER.setLevel(logging.DEBUG) + +class CollectorThread(threading.Thread): + def __init__( + self, subscription_func : Callable, events_queue = queue.PriorityQueue, + terminate = threading.Event, log_events_received: bool = False + ) -> None: + super().__init__(daemon=False) + self._subscription_func = subscription_func + self._events_queue = events_queue + self._terminate = terminate + self._log_events_received = log_events_received + self._stream = None + + def cancel(self) -> None: + if self._stream is None: return + self._stream.cancel() + + def run(self) -> None: + while not self._terminate.is_set(): + self._stream = self._subscription_func() + try: + for event in self._stream: + if self._log_events_received: + str_event = grpc_message_to_json_string(event) + LOGGER.info('[_collect] event: {:s}'.format(str_event)) + timestamp = event.event.timestamp.timestamp + self._events_queue.put_nowait((timestamp, event)) + except grpc.RpcError as e: + if e.code() == grpc.StatusCode.UNAVAILABLE: # pylint: disable=no-member + LOGGER.info('[_collect] UNAVAILABLE... retrying...') + time.sleep(0.5) + continue + elif e.code() == grpc.StatusCode.CANCELLED: # pylint: disable=no-member + break + else: + raise # pragma: no cover + +class BaseEventCollector: + def __init__( + self, terminate : Optional[threading.Event] = None + ) -> None: + self._events_queue = queue.PriorityQueue() + self._terminate = threading.Event() if terminate is None else terminate + self._collector_threads : List[CollectorThread] = list() + + def install_collector( + self, subscription_method : Callable, request_message : Any, + log_events_received : bool = False + ) -> None: + self._collector_threads.append(CollectorThread( + lambda: subscription_method(request_message), + self._events_queue, self._terminate, log_events_received + )) + + def start(self): + self._terminate.clear() + for collector_thread in self._collector_threads: + collector_thread.start() + + def stop(self): + self._terminate.set() + + for collector_thread in self._collector_threads: + collector_thread.cancel() + + for collector_thread in self._collector_threads: + collector_thread.join() + + def get_events_queue(self) -> queue.PriorityQueue: + return self._events_queue + + def get_event(self, block : bool = True, timeout : float = 0.1): + try: + _,event = self._events_queue.get(block=block, timeout=timeout) + return event + except queue.Empty: # pylint: disable=catching-non-exception + return None + + def get_events(self, block : bool = True, timeout : float = 0.1, count : int = None): + events = [] + if count is None: + while not self._terminate.is_set(): + event = self.get_event(block=block, timeout=timeout) + if event is None: break + events.append(event) + else: + while len(events) < count: + if self._terminate.is_set(): break + event = self.get_event(block=block, timeout=timeout) + if event is None: continue + events.append(event) + return sorted(events, key=lambda e: e.event.timestamp.timestamp) + +def main() -> None: + logging.basicConfig(level=logging.INFO) + + context_client = ContextClient() + context_client.connect() + + event_collector = BaseEventCollector() + event_collector.install_collector(context_client.GetDeviceEvents, Empty(), log_events_received=True) + event_collector.install_collector(context_client.GetLinkEvents, Empty(), log_events_received=True) + event_collector.install_collector(context_client.GetServiceEvents, Empty(), log_events_received=True) + event_collector.start() + + time.sleep(60) + + event_collector.stop() + context_client.close() + +if __name__ == '__main__': + main() diff --git a/src/common/tools/grpc/BaseEventDispatcher.py b/src/common/tools/grpc/BaseEventDispatcher.py new file mode 100644 index 0000000000000000000000000000000000000000..c9ec292c994bb4728043bf3bfed73e176f4f748a --- /dev/null +++ b/src/common/tools/grpc/BaseEventDispatcher.py @@ -0,0 +1,119 @@ +# Copyright 2022-2024 ETSI OSG/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. + +# See usage example below + +import logging, queue, threading, time +from typing import Any, Callable, Optional +from common.proto.context_pb2 import DeviceEvent, Empty, EventTypeEnum, LinkEvent +from common.tools.grpc.BaseEventCollector import BaseEventCollector +from common.tools.grpc.Tools import grpc_message_to_json_string +from context.client.ContextClient import ContextClient + +LOGGER = logging.getLogger(__name__) + +class BaseEventDispatcher(threading.Thread): + def __init__( + self, events_queue : queue.PriorityQueue, + terminate : Optional[threading.Event] = None + ) -> None: + super().__init__(daemon=True) + self._events_queue = events_queue + self._terminate = threading.Event() if terminate is None else terminate + + def stop(self): + self._terminate.set() + + def _get_event(self, block : bool = True, timeout : Optional[float] = 0.5) -> Optional[Any]: + try: + _, event = self._events_queue.get(block=block, timeout=timeout) + return event + except queue.Empty: + return None + + def _get_dispatcher(self, event : Any) -> Optional[Callable]: + object_name = str(event.__class__.__name__).lower().replace('event', '') + event_type = EventTypeEnum.Name(event.event.event_type).lower().replace('eventtype_', '') + + method_name = 'dispatch_{:s}_{:s}'.format(object_name, event_type) + dispatcher = getattr(self, method_name, None) + if dispatcher is not None: return dispatcher + + method_name = 'dispatch_{:s}'.format(object_name) + dispatcher = getattr(self, method_name, None) + if dispatcher is not None: return dispatcher + + method_name = 'dispatch' + dispatcher = getattr(self, method_name, None) + if dispatcher is not None: return dispatcher + + return None + + def run(self) -> None: + while not self._terminate.is_set(): + event = self._get_event() + if event is None: continue + + dispatcher = self._get_dispatcher(event) + if dispatcher is None: + MSG = 'No dispatcher available for Event({:s})' + LOGGER.warning(MSG.format(grpc_message_to_json_string(event))) + continue + + dispatcher(event) + +class MyEventDispatcher(BaseEventDispatcher): + def dispatch_device_create(self, device_event : DeviceEvent) -> None: + MSG = 'Processing Device Create: {:s}' + LOGGER.info(MSG.format(grpc_message_to_json_string(device_event))) + + def dispatch_device_update(self, device_event : DeviceEvent) -> None: + MSG = 'Processing Device Update: {:s}' + LOGGER.info(MSG.format(grpc_message_to_json_string(device_event))) + + def dispatch_device_remove(self, device_event : DeviceEvent) -> None: + MSG = 'Processing Device Remove: {:s}' + LOGGER.info(MSG.format(grpc_message_to_json_string(device_event))) + + def dispatch_link(self, link_event : LinkEvent) -> None: + MSG = 'Processing Link Create/Update/Remove: {:s}' + LOGGER.info(MSG.format(grpc_message_to_json_string(link_event))) + + def dispatch(self, event : Any) -> None: + MSG = 'Processing any other Event: {:s}' + LOGGER.info(MSG.format(grpc_message_to_json_string(event))) + +def main() -> None: + logging.basicConfig(level=logging.INFO) + + context_client = ContextClient() + context_client.connect() + + event_collector = BaseEventCollector() + event_collector.install_collector(context_client.GetDeviceEvents, Empty(), log_events_received=True) + event_collector.install_collector(context_client.GetLinkEvents, Empty(), log_events_received=True) + event_collector.install_collector(context_client.GetServiceEvents, Empty(), log_events_received=True) + event_collector.start() + + event_dispatcher = MyEventDispatcher(event_collector.get_events_queue()) + event_dispatcher.start() + + time.sleep(60) + + event_dispatcher.stop() + event_collector.stop() + context_client.close() + +if __name__ == '__main__': + main() diff --git a/src/common/tools/grpc/ConfigRules.py b/src/common/tools/grpc/ConfigRules.py index dcf8351e2a9dbb3d670c57044e4ccdc72a549300..b29744e02b096e8cfc2ebc8156c6079a1a0882ea 100644 --- a/src/common/tools/grpc/ConfigRules.py +++ b/src/common/tools/grpc/ConfigRules.py @@ -51,7 +51,7 @@ def update_config_rule_custom( # exists, differs, and raise_if_differs=True msg = 'Specified {:s}({:s}) differs existing value({:s})' raise Exception(msg.format(str(field_name), str(field_value), str(json_resource_value[field_name]))) - + config_rule.custom.resource_value = json.dumps(json_resource_value, sort_keys=True) def copy_config_rules(source_config_rules, target_config_rules): diff --git a/src/common/tools/grpc/ExampleEventEngine.py b/src/common/tools/grpc/ExampleEventEngine.py new file mode 100644 index 0000000000000000000000000000000000000000..f27792497db09467c0225f07d036adc8c5b5ed84 --- /dev/null +++ b/src/common/tools/grpc/ExampleEventEngine.py @@ -0,0 +1,101 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import logging, threading, time +from typing import Optional +from common.proto.context_pb2 import DeviceEvent, Empty, ServiceEvent +from common.tools.grpc.BaseEventCollector import BaseEventCollector +from common.tools.grpc.BaseEventDispatcher import BaseEventDispatcher +from common.tools.grpc.Tools import grpc_message_to_json_string +from context.client.ContextClient import ContextClient + +LOGGER = logging.getLogger(__name__) + +class EventCollector(BaseEventCollector): + pass + +class EventDispatcher(BaseEventDispatcher): + def dispatch_device_create(self, device_event : DeviceEvent) -> None: + MSG = 'Processing Device Create: {:s}' + LOGGER.info(MSG.format(grpc_message_to_json_string(device_event))) + + def dispatch_device_update(self, device_event : DeviceEvent) -> None: + MSG = 'Processing Device Update: {:s}' + LOGGER.info(MSG.format(grpc_message_to_json_string(device_event))) + + def dispatch_device_remove(self, device_event : DeviceEvent) -> None: + MSG = 'Processing Device Remove: {:s}' + LOGGER.info(MSG.format(grpc_message_to_json_string(device_event))) + + def dispatch_service_create(self, service_event : ServiceEvent) -> None: + MSG = 'Processing Service Create: {:s}' + LOGGER.info(MSG.format(grpc_message_to_json_string(service_event))) + + def dispatch_service_update(self, service_event : ServiceEvent) -> None: + MSG = 'Processing Service Update: {:s}' + LOGGER.info(MSG.format(grpc_message_to_json_string(service_event))) + + def dispatch_service_remove(self, service_event : ServiceEvent) -> None: + MSG = 'Processing Service Remove: {:s}' + LOGGER.info(MSG.format(grpc_message_to_json_string(service_event))) + +class ExampleEventEngine: + def __init__( + self, terminate : Optional[threading.Event] = None + ) -> None: + self._terminate = threading.Event() if terminate is None else terminate + + self._context_client = ContextClient() + self._event_collector = EventCollector(terminate=self._terminate) + self._event_collector.install_collector( + self._context_client.GetDeviceEvents, Empty(), + log_events_received=True + ) + self._event_collector.install_collector( + self._context_client.GetLinkEvents, Empty(), + log_events_received=True + ) + self._event_collector.install_collector( + self._context_client.GetServiceEvents, Empty(), + log_events_received=True + ) + + self._event_dispatcher = EventDispatcher( + self._event_collector.get_events_queue(), + terminate=self._terminate + ) + + def start(self) -> None: + self._context_client.connect() + self._event_collector.start() + self._event_dispatcher.start() + + def stop(self) -> None: + self._terminate.set() + self._event_dispatcher.stop() + self._event_collector.stop() + self._context_client.close() + +def main() -> None: + logging.basicConfig(level=logging.INFO) + + event_engine = ExampleEventEngine() + event_engine.start() + + time.sleep(60) + + event_engine.stop() + +if __name__ == '__main__': + main() diff --git a/src/common/tools/kafka/Variables.py b/src/common/tools/kafka/Variables.py index fc43c315114e7b51c4e2604afbb14e165796e7c5..8ff6447f7784fd9e6846c1b73bc176b0a49f25e1 100644 --- a/src/common/tools/kafka/Variables.py +++ b/src/common/tools/kafka/Variables.py @@ -25,11 +25,11 @@ class KafkaConfig(Enum): @staticmethod def get_kafka_address() -> str: - # kafka_server_address = get_setting('KFK_SERVER_ADDRESS', default=None) - # if kafka_server_address is None: - KFK_NAMESPACE = get_setting('KFK_NAMESPACE') - KFK_PORT = get_setting('KFK_SERVER_PORT') - kafka_server_address = KFK_SERVER_ADDRESS_TEMPLATE.format(KFK_NAMESPACE, KFK_PORT) + kafka_server_address = get_setting('KFK_SERVER_ADDRESS', default=None) + if kafka_server_address is None: + KFK_NAMESPACE = get_setting('KFK_NAMESPACE') + KFK_PORT = get_setting('KFK_SERVER_PORT') + kafka_server_address = KFK_SERVER_ADDRESS_TEMPLATE.format(KFK_NAMESPACE, KFK_PORT) return kafka_server_address @staticmethod @@ -46,6 +46,7 @@ class KafkaTopic(Enum): RAW = 'topic_raw' LABELED = 'topic_labeled' VALUE = 'topic_value' + ALARMS = 'topic_alarms' ANALYTICS_REQUEST = 'topic_request_analytics' ANALYTICS_RESPONSE = 'topic_response_analytics' @@ -89,4 +90,4 @@ class KafkaTopic(Enum): return False return True -# create all topics after the deployments (Telemetry and Analytics) +# TODO: create all topics after the deployments (Telemetry and Analytics) diff --git a/src/common/tools/object_factory/EndPoint.py b/src/common/tools/object_factory/EndPoint.py index 85a5d4494184567447d6d16fa7df2c530106c6ba..faf1accd37ebdc32b382a1cca16ccbeb510099f9 100644 --- a/src/common/tools/object_factory/EndPoint.py +++ b/src/common/tools/object_factory/EndPoint.py @@ -43,13 +43,14 @@ def json_endpoint_ids( def json_endpoint( device_id : Dict, endpoint_uuid : str, endpoint_type : str, topology_id : Optional[Dict] = None, - kpi_sample_types : List[int] = [], location : Optional[Dict] = None + name : Optional[str] = None, kpi_sample_types : List[int] = [], location : Optional[Dict] = None ): result = { 'endpoint_id': json_endpoint_id(device_id, endpoint_uuid, topology_id=topology_id), 'endpoint_type': endpoint_type, } + if name is not None: result['name'] = name if kpi_sample_types is not None and len(kpi_sample_types) > 0: result['kpi_sample_types'] = copy.deepcopy(kpi_sample_types) if location is not None: diff --git a/src/common/tools/object_factory/OpticalLink.py b/src/common/tools/object_factory/OpticalLink.py index d4d7a330ce67fa2690efe3a0d285a226e3e6e7c3..765cfac22d2aa6a168e01e41df393cc2b693a32f 100644 --- a/src/common/tools/object_factory/OpticalLink.py +++ b/src/common/tools/object_factory/OpticalLink.py @@ -1,75 +1,40 @@ +# Copyright 2022-2024 ETSI OSG/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. +import copy -def convert_to_dict (single_val:int)->dict: +def convert_to_dict(single_val:int)->dict: slot= dict() bin_num = bin(single_val) sliced_num=bin_num[2:] for i in range(len(sliced_num)): slot[str(i+1)]=int(sliced_num[i]) - return slot - + return slot -def order_list (lst:list[tuple])->list: - - if (len(lst)<=1): - return lst - else : - pivot,bit_val =lst[0] - lst_smaller = [] - lst_greater = [] - for element in lst[1:]: - key,val=element - if (key <= pivot): - lst_smaller.append(element) - else : - lst_greater.append(element) - return order_list(lst_smaller) + [(pivot,bit_val)] + order_list(lst_greater) - - -def list_to_dict (lst:list[tuple[int,int]])->dict: - dct = dict() - for ele in lst : - key,value = ele - dct[str(key)]=value - return dct - - -def order_dict (dct:dict)->dict: - - lst = list() - for key,value in sorted(dct.items()): - lst.append((int(key),value)) - ordered_lst= order_list(lst) - if (len(ordered_lst)>0): - return list_to_dict (ordered_lst) - -def order_dict_v1 (dct:dict)->dict: - - lst = list() - for key,value in dct.items(): - lst.append((int(key),value)) - ordered_lst= order_list(lst) - if (len(ordered_lst)>0): - return list_to_dict (ordered_lst) - -def correct_slot (dic:dict): - ordered_dict= order_dict_v1(dic) - keys_list = list(ordered_dict.keys()) - - if (len(keys_list) < 20): - num_keys= [] - for i in keys_list: - num_keys.append(int(i)) - - if num_keys[-1] != 20 : - missed_keys=[] - diff= 20 - len(num_keys) - print(f"diff {diff}") +def correct_slot(dic: dict) -> dict: + _dict = copy.deepcopy(dic) + keys_list = list(_dict.keys()) + if len(keys_list) < 20: + num_keys = [int(i) for i in keys_list] + if num_keys[-1] != 20: + missed_keys = [] + diff = 20 - len(num_keys) + #print(f"diff {diff}") for i in range(diff+1): missed_keys.append(num_keys[-1]+i) - print(f"missed_keys {missed_keys}") + #print(f"missed_keys {missed_keys}") for key in missed_keys : - ordered_dict[key]=1 - print(f"result {ordered_dict}") - return order_dict_v1(ordered_dict) - \ No newline at end of file + _dict[key]=1 + #print(f"result {_dict}") + return _dict diff --git a/src/common/type_checkers/Assertions.py b/src/common/type_checkers/Assertions.py index 90b7d976b0f6fff9d478ce7b40188240a8eea2d6..498a85349c4c9d68bc8c64c5d174595cb98c1cef 100644 --- a/src/common/type_checkers/Assertions.py +++ b/src/common/type_checkers/Assertions.py @@ -48,6 +48,8 @@ def validate_device_driver_enum(message): 'DEVICEDRIVER_GNMI_OPENCONFIG', 'DEVICEDRIVER_OPTICAL_TFS', 'DEVICEDRIVER_IETF_ACTN', + 'DEVICEDRIVER_OC', + 'DEVICEDRIVER_QKD', ] def validate_device_operational_status_enum(message): @@ -58,6 +60,20 @@ def validate_device_operational_status_enum(message): 'DEVICEOPERATIONALSTATUS_ENABLED' ] +def validate_isolation_level_enum(message): + assert isinstance(message, str) + assert message in [ + 'NO_ISOLATION', + 'PHYSICAL_ISOLATION', + 'LOGICAL_ISOLATION', + 'PROCESS_ISOLATION', + 'PHYSICAL_MEMORY_ISOLATION', + 'PHYSICAL_NETWORK_ISOLATION', + 'VIRTUAL_RESOURCE_ISOLATION', + 'NETWORK_FUNCTIONS_ISOLATION', + 'SERVICE_ISOLATION', + ] + def validate_kpi_sample_types_enum(message): assert isinstance(message, str) assert message in [ @@ -70,6 +86,16 @@ def validate_kpi_sample_types_enum(message): 'KPISAMPLETYPE_LINK_USED_CAPACITY_GBPS', ] +def validate_link_type_enum(message): + assert isinstance(message, str) + assert message in [ + 'LINKTYPE_UNKNOWN', + 'LINKTYPE_COPPER', + 'LINKTYPE_VIRTUAL_COPPER', + 'LINKTYPE_OPTICAL', + 'LINKTYPE_VIRTUAL_OPTICAL', + ] + def validate_service_type_enum(message): assert isinstance(message, str) assert message in [ @@ -79,6 +105,8 @@ def validate_service_type_enum(message): 'SERVICETYPE_TAPI_CONNECTIVITY_SERVICE', 'SERVICETYPE_TE', 'SERVICETYPE_E2E', + 'SERVICETYPE_OPTICAL_CONNECTIVITY', + 'SERVICETYPE_QKD', ] def validate_service_state_enum(message): @@ -148,6 +176,22 @@ def validate_constraint_custom(message): assert 'constraint_value' in message assert isinstance(message['constraint_value'], str) +def validate_constraint_schedule(message): + assert isinstance(message, dict) + assert len(message.keys()) == 2 + assert 'start_timestamp' in message + assert isinstance(message['start_timestamp'], (int, float)) + assert 'duration_days' in message + assert isinstance(message['duration_days'], (int, float)) + +def validate_constraint_endpoint_priority(message): + assert isinstance(message, dict) + assert len(message.keys()) == 2 + assert 'endpoint_id' in message + validate_endpoint_id(message['endpoint_id']) + assert 'priority' in message + assert isinstance(message['priority'], int) + def validate_constraint_sla_capacity(message): assert isinstance(message, dict) assert len(message.keys()) == 1 @@ -172,16 +216,25 @@ def validate_constraint_sla_availability(message): assert isinstance(message['availability'], (int, float)) assert message['availability'] >= 0 and message['availability'] <= 100 +def validate_constraint_sla_isolation(message): + assert isinstance(message, dict) + assert len(message.keys()) == 1 + assert 'isolation_level' in message + assert isinstance(message['isolation_level'], list) + for isolation_level in message['isolation_level']: + validate_isolation_level_enum(isolation_level) + CONSTRAINT_TYPE_TO_VALIDATOR = { 'custom' : validate_constraint_custom, - #'schedule' : validate_constraint_schedule, + 'schedule' : validate_constraint_schedule, #'endpoint_location' : validate_constraint_endpoint_location, - #'endpoint_priority' : validate_constraint_endpoint_priority, + 'endpoint_priority' : validate_constraint_endpoint_priority, 'sla_capacity' : validate_constraint_sla_capacity, 'sla_latency' : validate_constraint_sla_latency, 'sla_availability' : validate_constraint_sla_availability, - #'sla_isolation' : validate_constraint_sla_isolation, + 'sla_isolation' : validate_constraint_sla_isolation, #'exclusions' : validate_constraint_exclusions, + #'qos_profile' : validate_constraint_qos_profile, } def validate_constraint(message): @@ -398,7 +451,7 @@ def validate_slice(message): def validate_topology(message, num_devices=None, num_links=None): assert isinstance(message, dict) - assert len(message.keys()) == 4 + assert len(message.keys()) == 5 assert 'topology_id' in message validate_topology_id(message['topology_id']) assert 'name' in message @@ -411,6 +464,10 @@ def validate_topology(message, num_devices=None, num_links=None): assert isinstance(message['link_ids'], list) if num_links is not None: assert len(message['link_ids']) == num_links for link_id in message['link_ids']: validate_link_id(link_id) + assert 'optical_link_ids' in message + assert isinstance(message['optical_link_ids'], list) + #if num_links is not None: assert len(message['optical_link_ids']) == num_links + for link_id in message['optical_link_ids']: validate_link_id(link_id) def validate_endpoint(message): assert isinstance(message, dict) @@ -479,7 +536,7 @@ def validate_device(message): def validate_link(message): assert isinstance(message, dict) - assert len(message.keys()) == 4 + assert len(message.keys()) == 5 assert 'link_id' in message validate_link_id(message['link_id']) assert 'name' in message @@ -489,6 +546,8 @@ def validate_link(message): for endpoint_id in message['link_endpoint_ids']: validate_endpoint_id(endpoint_id) assert 'attributes' in message validate_link_attributes(message['attributes']) + assert 'link_type' in message + validate_link_type_enum(message['link_type']) def validate_connection(message): assert isinstance(message, dict) diff --git a/src/context/.gitlab-ci.yml b/src/context/.gitlab-ci.yml index c1caed6679e9c24599f1992e49eb0874e81bea49..f0558a2d22e0baf70768227b7728d4ff4ca23060 100644 --- a/src/context/.gitlab-ci.yml +++ b/src/context/.gitlab-ci.yml @@ -112,9 +112,9 @@ unit_test context: - manifests/${IMAGE_NAME}service.yaml - .gitlab-ci.yml artifacts: - when: always - reports: - junit: src/$IMAGE_NAME/tests/${IMAGE_NAME}_report.xml + when: always + reports: + junit: src/$IMAGE_NAME/tests/${IMAGE_NAME}_report.xml ## Deployment of the service in Kubernetes Cluster #deploy context: diff --git a/src/context/Dockerfile b/src/context/Dockerfile index c39f39e8c082b30492283b7f7285876fbda08716..b5c3cdb860c3a8a51b890ef201d2d14c4abda6a3 100644 --- a/src/context/Dockerfile +++ b/src/context/Dockerfile @@ -15,12 +15,8 @@ FROM python:3.9-slim # Install dependencies -# RUN apt-get --yes --quiet --quiet update && \ -# apt-get --yes --quiet --quiet install wget g++ git && \ -# rm -rf /var/lib/apt/lists/* - -RUN apt-get --yes update && \ - apt-get --yes install wget g++ git && \ +RUN apt-get --yes --quiet --quiet update && \ + apt-get --yes --quiet --quiet install wget g++ git && \ rm -rf /var/lib/apt/lists/* # Set Python to show logs as they occur diff --git a/src/context/client/ContextClient.py b/src/context/client/ContextClient.py index 62f34cc8909d4976d030e2533419275bcc193127..35f9121b33f60034340cbe2492e1bd26a622f6e7 100644 --- a/src/context/client/ContextClient.py +++ b/src/context/client/ContextClient.py @@ -24,10 +24,10 @@ from common.proto.context_pb2 import ( Device, DeviceEvent, DeviceFilter, DeviceId, DeviceIdList, DeviceList, Empty, EndPointIdList, EndPointNameList, Link, LinkEvent, LinkId, LinkIdList, LinkList, - Service, ServiceEvent, ServiceFilter, ServiceId, ServiceIdList, ServiceList, + OpticalConfig, OpticalConfigId, OpticalConfigList , OpticalLink, OpticalLinkList, + Service, ServiceConfigRule, ServiceEvent, ServiceFilter, ServiceId, ServiceIdList, ServiceList, Slice, SliceEvent, SliceFilter, SliceId, SliceIdList, SliceList, Topology, TopologyDetails, TopologyEvent, TopologyId, TopologyIdList, TopologyList, - OpticalConfig, OpticalConfigId, OpticalConfigList , OpticalLink ,OpticalLinkList,ServiceConfigRule ) from common.proto.context_pb2_grpc import ContextServiceStub from common.proto.context_policy_pb2_grpc import ContextPolicyServiceStub @@ -520,4 +520,4 @@ class ContextClient: LOGGER.debug('ServiceConfigRule Delete request: {:s}'.format(grpc_message_to_json_string(request))) response = self.stub.DeleteServiceConfigRule(request) LOGGER.debug('ServiceConfigRule Delete result: {:s}'.format(grpc_message_to_json_string(response))) - return response \ No newline at end of file + return response diff --git a/src/context/service/ContextServiceServicerImpl.py b/src/context/service/ContextServiceServicerImpl.py index 8b14723de6e2259885361a131e21d77a07fc4179..09d16b0f8a80f956a32f7e074e3bbe5582b3b26c 100644 --- a/src/context/service/ContextServiceServicerImpl.py +++ b/src/context/service/ContextServiceServicerImpl.py @@ -24,7 +24,7 @@ from common.proto.context_pb2 import ( Service, ServiceEvent, ServiceFilter, ServiceId, ServiceIdList, ServiceList, Slice, SliceEvent, SliceFilter, SliceId, SliceIdList, SliceList, Topology, TopologyDetails, TopologyEvent, TopologyId, TopologyIdList, TopologyList, - OpticalConfigList, OpticalConfigId, OpticalConfig ,OpticalLink , OpticalLinkList, + OpticalConfigList, OpticalConfigId, OpticalConfig, OpticalLink, OpticalLinkList, ServiceConfigRule ) from common.proto.policy_pb2 import PolicyRuleIdList, PolicyRuleId, PolicyRuleList, PolicyRule @@ -32,24 +32,42 @@ from common.proto.context_pb2_grpc import ContextServiceServicer from common.proto.context_policy_pb2_grpc import ContextPolicyServiceServicer from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_method from .database.Connection import ( - connection_delete, connection_get, connection_list_ids, connection_list_objs, connection_set) -from .database.Context import context_delete, context_get, context_list_ids, context_list_objs, context_set -from .database.Device import device_delete, device_get, device_list_ids, device_list_objs, device_select, device_set + connection_delete, connection_get, connection_list_ids, connection_list_objs, connection_set +) +from .database.Context import ( + context_delete, context_get, context_list_ids, context_list_objs, context_set +) +from .database.Device import ( + device_delete, device_get, device_list_ids, device_list_objs, device_select, device_set +) from .database.EndPoint import endpoint_list_names from .database.Events import EventTopicEnum, consume_events -from .database.Link import link_delete, link_get, link_list_ids, link_list_objs, link_set +from .database.Link import ( + link_delete, link_get, link_list_ids, link_list_objs, link_set +) from .database.PolicyRule import ( - policyrule_delete, policyrule_get, policyrule_list_ids, policyrule_list_objs, policyrule_set) + policyrule_delete, policyrule_get, policyrule_list_ids, policyrule_list_objs, + policyrule_set +) from .database.Service import ( - service_delete, service_get, service_list_ids, service_list_objs, service_select, service_set, service_unset) + service_delete, service_get, service_list_ids, service_list_objs, service_select, + service_set, service_unset +) from .database.Slice import ( - slice_delete, slice_get, slice_list_ids, slice_list_objs, slice_select, slice_set, slice_unset) + slice_delete, slice_get, slice_list_ids, slice_list_objs, slice_select, + slice_set, slice_unset +) from .database.Topology import ( - topology_delete, topology_get, topology_get_details, topology_list_ids, topology_list_objs, topology_set) -from .database.OpticalConfig import (set_opticalconfig, select_opticalconfig, get_opticalconfig - ,delete_opticalconfig ,update_opticalconfig ,delete_opticalchannel + topology_delete, topology_get, topology_get_details, topology_list_ids, + topology_list_objs, topology_set +) +from .database.OpticalConfig import ( + set_opticalconfig, select_opticalconfig, get_opticalconfig, delete_opticalconfig, + update_opticalconfig, delete_opticalchannel +) +from .database.OpticalLink import ( + optical_link_delete, optical_link_get, optical_link_list_objs, optical_link_set ) -from .database.OpticalLink import optical_link_delete,optical_link_get,optical_link_list_objs,optical_link_set from .database.ConfigRule import delete_config_rule LOGGER = logging.getLogger(__name__) @@ -315,7 +333,7 @@ class ContextServiceServicerImpl(ContextServiceServicer, ContextPolicyServiceSer def SetOpticalConfig(self, request : OpticalConfig, context : grpc.ServicerContext) -> OpticalConfigId: result = set_opticalconfig(self.db_engine, request) return OpticalConfigId(**result) - + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def UpdateOpticalConfig(self, request : OpticalConfig, context : grpc.ServicerContext) -> OpticalConfigId: result = update_opticalconfig(self.db_engine, request) @@ -329,21 +347,19 @@ class ContextServiceServicerImpl(ContextServiceServicer, ContextPolicyServiceSer optical_config_id.CopyFrom(result.opticalconfig_id) device_id.CopyFrom(result.device_id) return OpticalConfig(config=result.config, opticalconfig_id=optical_config_id , device_id=device_id) - + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) - def DeleteOpticalConfig (self, request : OpticalConfigId, context : grpc.ServicerContext) -> Empty: - delete_opticalconfig(self.db_engine,self.messagebroker, request) - + def DeleteOpticalConfig(self, request : OpticalConfigId, context : grpc.ServicerContext) -> Empty: + delete_opticalconfig(self.db_engine, self.messagebroker, request) return Empty() + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) - def DeleteOpticalChannel (self, request : OpticalConfig, context : grpc.ServicerContext) -> Empty: - delete_opticalchannel(self.db_engine,self.messagebroker, request) - + def DeleteOpticalChannel(self, request : OpticalConfig, context : grpc.ServicerContext) -> Empty: + delete_opticalchannel(self.db_engine, self.messagebroker, request) return Empty() - #--------------------- Experimental Optical Link ------------------- - + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def GetOpticalLinkList(self, request : Empty, context : grpc.ServicerContext) -> OpticalLinkList: return optical_link_list_objs(self.db_engine) @@ -360,8 +376,6 @@ class ContextServiceServicerImpl(ContextServiceServicer, ContextPolicyServiceSer def DeleteOpticalLink(self, request : LinkId, context : grpc.ServicerContext) -> Empty: return optical_link_delete(self.db_engine, self.messagebroker, request) - @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def DeleteServiceConfigRule(self, request : ServiceConfigRule, context : grpc.ServicerContext) -> Empty: - return delete_config_rule(self.db_engine, request) diff --git a/src/context/service/database/ConfigRule.py b/src/context/service/database/ConfigRule.py index ac5a90ead484d5051b4b53b8d8aefd1097e67631..0201d2672e0cd47f208e7569f9d34eae6e4601a8 100644 --- a/src/context/service/database/ConfigRule.py +++ b/src/context/service/database/ConfigRule.py @@ -16,10 +16,10 @@ import datetime, json, logging from sqlalchemy import delete #from sqlalchemy.dialects import postgresql from sqlalchemy.dialects.postgresql import insert -from sqlalchemy.orm import Session from sqlalchemy.engine import Engine +from sqlalchemy.orm import Session from typing import Dict, List, Optional, Set -from common.proto.context_pb2 import ConfigRule ,ServiceId ,ServiceConfigRule ,Empty +from common.proto.context_pb2 import ConfigRule, ServiceConfigRule, Empty from common.tools.grpc.Tools import grpc_message_to_json_string from .models.enums.ConfigAction import ORM_ConfigActionEnum, grpc_to_enum__config_action from .models.ConfigRuleModel import ( @@ -27,7 +27,7 @@ from .models.ConfigRuleModel import ( from .uuids._Builder import get_uuid_from_string from .uuids.EndPoint import endpoint_get_uuid from sqlalchemy_cockroachdb import run_transaction -from sqlalchemy.orm import Session, selectinload, sessionmaker +from sqlalchemy.orm import Session, sessionmaker LOGGER = logging.getLogger(__name__) @@ -36,10 +36,8 @@ def compose_config_rules_data( device_uuid : Optional[str] = None, service_uuid : Optional[str] = None, slice_uuid : Optional[str] = None ) -> List[Dict]: dict_config_rules : List[Dict] = list() - for position,config_rule in enumerate(config_rules): str_kind = config_rule.WhichOneof('config_rule') - kind = ConfigRuleKindEnum._member_map_.get(str_kind.upper()) # pylint: disable=no-member dict_config_rule = { 'position' : position, @@ -68,7 +66,6 @@ def compose_config_rules_data( configrule_name = None if kind == ConfigRuleKindEnum.CUSTOM: - configrule_name = '{:s}:{:s}:{:s}'.format(parent_kind, kind.value, config_rule.custom.resource_key) elif kind == ConfigRuleKindEnum.ACL: _, _, endpoint_uuid = endpoint_get_uuid(config_rule.acl.endpoint_id, allow_random=False) @@ -157,23 +154,14 @@ def upsert_config_rules( return delete_affected or upsert_affected -def delete_config_rule (db_engine : Engine,request:ServiceConfigRule): - - config_rule=request.configrule_custom - service_id= request.service_id - parent_uuid = service_id.service_uuid.uuid - configrule_name = 'service:custom:{:s}'.format( config_rule.resource_key) - configrule_uuid = get_uuid_from_string(configrule_name, prefix_for_name=parent_uuid) - - - def callback(session : Session) -> bool: - - num_deleted = session.query(ServiceConfigRuleModel).filter_by(configrule_uuid=configrule_uuid).delete() - return num_deleted > 0 - - deleted = run_transaction(sessionmaker(bind=db_engine), callback) - - return Empty() - - - \ No newline at end of file +def delete_config_rule(db_engine : Engine, request : ServiceConfigRule): + config_rule = request.configrule_custom + service_id = request.service_id + parent_uuid = service_id.service_uuid.uuid + configrule_name = 'service:custom:{:s}'.format( config_rule.resource_key) + configrule_uuid = get_uuid_from_string(configrule_name, prefix_for_name=parent_uuid) + def callback(session : Session) -> bool: + num_deleted = session.query(ServiceConfigRuleModel).filter_by(configrule_uuid=configrule_uuid).delete() + return num_deleted > 0 + deleted = run_transaction(sessionmaker(bind=db_engine), callback) + return Empty() diff --git a/src/context/service/database/Constraint.py b/src/context/service/database/Constraint.py index db96ed9dece96cd5b77412c5d031e7337e360668..0b042219273f4a58e0bfc857ea2df6a3422d94cb 100644 --- a/src/context/service/database/Constraint.py +++ b/src/context/service/database/Constraint.py @@ -69,7 +69,8 @@ def compose_constraints_data( constraint_name = '{:s}:{:s}:{:s}'.format(parent_kind, kind.value, endpoint_uuid) elif kind in { ConstraintKindEnum.SCHEDULE, ConstraintKindEnum.SLA_CAPACITY, ConstraintKindEnum.SLA_LATENCY, - ConstraintKindEnum.SLA_AVAILABILITY, ConstraintKindEnum.SLA_ISOLATION, ConstraintKindEnum.EXCLUSIONS + ConstraintKindEnum.SLA_AVAILABILITY, ConstraintKindEnum.SLA_ISOLATION, ConstraintKindEnum.EXCLUSIONS, + ConstraintKindEnum.QOS_PROFILE }: constraint_name = '{:s}:{:s}:'.format(parent_kind, kind.value) else: diff --git a/src/context/service/database/Device.py b/src/context/service/database/Device.py index d9b475749db2dfd7ca5085a6bff4ceac6ccf4819..4713b8e0744df39e6d9227e02f909571bd159a37 100644 --- a/src/context/service/database/Device.py +++ b/src/context/service/database/Device.py @@ -40,7 +40,6 @@ from .ConfigRule import compose_config_rules_data, upsert_config_rules from .Component import compose_components_data from .Events import notify_event_context, notify_event_device, notify_event_topology - LOGGER = logging.getLogger(__name__) def device_list_ids(db_engine : Engine) -> DeviceIdList: @@ -108,7 +107,7 @@ def device_set(db_engine : Engine, messagebroker : MessageBroker, request : Devi is_oc_driver = DeviceDriverEnum.DEVICEDRIVER_OC in set(request.device_drivers) #optical_endpoints_data : List[Dict] = list() - LOGGER.info(f"is_oc_driver {is_oc_driver}") + endpoints_data : List[Dict] = list() for i, endpoint in enumerate(request.device_endpoints): endpoint_device_uuid = endpoint.endpoint_id.device_id.device_uuid.uuid @@ -150,9 +149,6 @@ def device_set(db_engine : Engine, messagebroker : MessageBroker, request : Devi # 'created_at' : now, # 'updated_at' : now, # }) - - - if endpoint_topology_uuid not in topology_uuids: related_topologies.append({ @@ -323,7 +319,6 @@ def device_delete(db_engine : Engine, messagebroker : MessageBroker, request : D return Empty() def device_select(db_engine : Engine, request : DeviceFilter) -> DeviceList: - device_uuids = [ device_get_uuid(device_id, allow_random=False) for device_id in request.device_ids.device_ids diff --git a/src/context/service/database/Events.py b/src/context/service/database/Events.py index 9041b28508d89dafa34ffc4cb818659253f2624f..46688775eaabd5ab428ff9f0e77de52d25c9af41 100644 --- a/src/context/service/database/Events.py +++ b/src/context/service/database/Events.py @@ -17,32 +17,32 @@ from typing import Dict, Iterator, Set from common.message_broker.Message import Message from common.message_broker.MessageBroker import MessageBroker from common.proto.context_pb2 import ( - ConnectionEvent, ContextEvent, DeviceEvent, EventTypeEnum, LinkEvent, ServiceEvent, SliceEvent, TopologyEvent , - OpticalConfigEvent) + ConnectionEvent, ContextEvent, DeviceEvent, EventTypeEnum, LinkEvent, + ServiceEvent, SliceEvent, TopologyEvent, OpticalConfigEvent +) class EventTopicEnum(enum.Enum): - CONNECTION = 'connection' - CONTEXT = 'context' - DEVICE = 'device' - LINK = 'link' - POLICY_RULE = 'policy-rule' - SERVICE = 'service' - SLICE = 'slice' - TOPOLOGY = 'topology' + CONNECTION = 'connection' + CONTEXT = 'context' + DEVICE = 'device' + LINK = 'link' + POLICY_RULE = 'policy-rule' + SERVICE = 'service' + SLICE = 'slice' + TOPOLOGY = 'topology' OPTICALCONFIG = 'optical-config' TOPIC_TO_EVENTCLASS = { - EventTopicEnum.CONNECTION.value : ConnectionEvent, - EventTopicEnum.CONTEXT.value : ContextEvent, - EventTopicEnum.DEVICE.value : DeviceEvent, - EventTopicEnum.LINK.value : LinkEvent, - #EventTopicEnum.POLICY_RULE.value : PolicyRuleEvent, # Not defined in proto files - EventTopicEnum.SERVICE.value : ServiceEvent, - EventTopicEnum.SLICE.value : SliceEvent, - EventTopicEnum.TOPOLOGY.value : TopologyEvent, - EventTopicEnum.OPTICALCONFIG.value : OpticalConfigEvent - + EventTopicEnum.CONNECTION.value : ConnectionEvent, + EventTopicEnum.CONTEXT.value : ContextEvent, + EventTopicEnum.DEVICE.value : DeviceEvent, + EventTopicEnum.LINK.value : LinkEvent, + #EventTopicEnum.POLICY_RULE.value : PolicyRuleEvent, # Not defined in proto files + EventTopicEnum.SERVICE.value : ServiceEvent, + EventTopicEnum.SLICE.value : SliceEvent, + EventTopicEnum.TOPOLOGY.value : TopologyEvent, + EventTopicEnum.OPTICALCONFIG.value : OpticalConfigEvent, } CONSUME_TIMEOUT = 0.5 # seconds @@ -65,10 +65,9 @@ def notify_event_topology(messagebroker : MessageBroker, event_type : EventTypeE def notify_event_device(messagebroker : MessageBroker, event_type : EventTypeEnum, device_id : Dict) -> None: notify_event(messagebroker, EventTopicEnum.DEVICE, event_type, {'device_id': device_id}) - + def notify_event_opticalconfig(messagebroker : MessageBroker, event_type : EventTypeEnum, opticalconfig_id : Dict) -> None: notify_event(messagebroker, EventTopicEnum.DEVICE, event_type, {'opticalconfig_id': opticalconfig_id}) - def notify_event_link(messagebroker : MessageBroker, event_type : EventTypeEnum, link_id : Dict) -> None: notify_event(messagebroker, EventTopicEnum.LINK, event_type, {'link_id': link_id}) diff --git a/src/context/service/database/Link.py b/src/context/service/database/Link.py index 39f60fdc35c655070a4891c96fd2cf186a8b003b..8aa2563e4b3bb5b46ffdefe4644cdfe321f1e734 100644 --- a/src/context/service/database/Link.py +++ b/src/context/service/database/Link.py @@ -63,7 +63,6 @@ def link_get(db_engine : Engine, request : LinkId) -> Link: return Link(**obj) def link_set(db_engine : Engine, messagebroker : MessageBroker, request : Link) -> LinkId: - raw_link_uuid = request.link_id.link_uuid.uuid raw_link_name = request.name link_name = raw_link_uuid if len(raw_link_name) == 0 else raw_link_name @@ -84,7 +83,6 @@ def link_set(db_engine : Engine, messagebroker : MessageBroker, request : Link) link_endpoints_data : List[Dict] = list() for i,endpoint_id in enumerate(request.link_endpoint_ids): - logging.info(f"links endpoint_id is {endpoint_id}") endpoint_topology_uuid, _, endpoint_uuid = endpoint_get_uuid( endpoint_id, allow_random=False) diff --git a/src/context/service/database/OpticalConfig.py b/src/context/service/database/OpticalConfig.py index e3248d8bde9c1abe3cc9dad655044cf7313f7334..09e0f95947aa8b42e5cb1db6016b7c9fa5fd6ab4 100644 --- a/src/context/service/database/OpticalConfig.py +++ b/src/context/service/database/OpticalConfig.py @@ -19,14 +19,14 @@ from common.DeviceTypes import DeviceTypeEnum from sqlalchemy.engine import Engine from sqlalchemy.orm import Session, sessionmaker from sqlalchemy_cockroachdb import run_transaction -from common.proto.context_pb2 import OpticalConfig, OpticalConfigId , Empty , EventTypeEnum -from .models.OpticalConfig.OpticalConfigModel import OpticalConfigModel -from .models.OpticalConfig.TransponderModel import TransponderTypeModel ,OpticalChannelModel -from .models.OpticalConfig.RoadmModel import RoadmTypeModel, ChannelModel , ORInterfaceModel +from common.proto.context_pb2 import OpticalConfig, OpticalConfigId, Empty, EventTypeEnum +from .models.OpticalConfig.OpticalConfigModel import OpticalConfigModel +from .models.OpticalConfig.TransponderModel import TransponderTypeModel, OpticalChannelModel +from .models.OpticalConfig.RoadmModel import RoadmTypeModel, ChannelModel, ORInterfaceModel from context.service.database.uuids.OpticalConfig import ( channel_get_uuid , opticalconfig_get_uuid ,transponder_get_uuid,roadm_get_uuid, interface_get_uuid - ) +) from .Events import notify_event_opticalconfig LOGGER = logging.getLogger(__name__) @@ -35,14 +35,10 @@ def get_opticalconfig(db_engine : Engine): def callback(session:Session): optical_configs = list() results = session.query(OpticalConfigModel).all() - for obj in results: - - optical_config = OpticalConfig() optical_config.config = json.dumps(obj.dump()) ids_obj = obj.dump_id() - optical_config.opticalconfig_id.opticalconfig_uuid = ids_obj["opticalconfig_uuid"] optical_config.device_id.device_uuid.uuid=ids_obj["device_uuid"] optical_configs.append(optical_config) @@ -51,125 +47,102 @@ def get_opticalconfig(db_engine : Engine): return obj def set_opticalconfig(db_engine : Engine, request : OpticalConfig): - opticalconfig_id = OpticalConfigId() device_id = request.device_id device_uuid = request.device_id.device_uuid.uuid channels = [] interfaces=[] - transponder=[] roadms=[] channel_namespace= None OpticalConfig_data = [] config_type=None - is_transpondre=False - opticalconfig_uuid =opticalconfig_get_uuid(device_id) - LOGGER.info(f"cofigy_type {request.config}") + #is_transpondre=False + opticalconfig_uuid = opticalconfig_get_uuid(device_id) + if request.config: config = json.loads(request.config) if 'channel_namespace' in config: - channel_namespace=config['channel_namespace'] + channel_namespace=config['channel_namespace'] if "type" in config: - config_type= config["type"] if config_type == DeviceTypeEnum.OPTICAL_TRANSPONDER._value_: - is_transpondre=True + is_transpondre = True transceivers = [] if channel_namespace is None and 'channel_namespace' in config: channel_namespace=config['channel_namespace'] - - if 'transceivers' in config and len(config['transceivers']['transceiver']) > 0: transceivers = [transceiver for transceiver in config ['transceivers']['transceiver']] - if 'channels' in config and len(config['channels']) > 0: #channels = [channel['name']['index'] for channel in config['channels']] - for channel_params in config['channels']: - channels.append( - { - # "opticalconfig_uuid":opticalconfig_uuid, - "transponder_uuid" : transponder_get_uuid(device_id), - "channel_uuid" : channel_get_uuid(channel_params['name']['index'],device_uuid), - "channel_name" : channel_params['name']['index'], - "frequency" : int(channel_params["frequency"]) if "frequency" in channel_params else 0, - "operational_mode" : int(channel_params["operational-mode"]) if "operational-mode" in channel_params else 0, - "target_output_power" : channel_params["target-output-power"] if "target-output-power" in channel_params else '', - "status" : channel_params["status"] if "status" in channel_params else "" - } - ) - - transponder.append({ - "transponder_uuid":transponder_get_uuid(device_id), - "transcievers":transceivers, - "interfaces":None, - "opticalconfig_uuid":opticalconfig_uuid, - - + channels.append({ + # "opticalconfig_uuid":opticalconfig_uuid, + "transponder_uuid" : transponder_get_uuid(device_id), + "channel_uuid" : channel_get_uuid(channel_params['name']['index'],device_uuid), + "channel_name" : channel_params['name']['index'], + "frequency" : int(channel_params["frequency"]) if "frequency" in channel_params else 0, + "operational_mode" : int(channel_params["operational-mode"]) if "operational-mode" in channel_params else 0, + "target_output_power": channel_params["target-output-power"] if "target-output-power" in channel_params else '', + "status" : channel_params["status"] if "status" in channel_params else "" + }) + transponder.append({ + "transponder_uuid" : transponder_get_uuid(device_id), + "transcievers" : transceivers, + "interfaces" : None, + "opticalconfig_uuid": opticalconfig_uuid, }) - + if config_type == DeviceTypeEnum.OPTICAL_ROADM._value_: - - if channel_namespace is None and 'channel_namespace' in config: channel_namespace=config['channel_namespace'] - - - - if 'media_channels' in config and len(config['media_channels']) > 0: #channels = [channel['name']['index'] for channel in config['channels']] - channel_num=0 + channel_num = 0 for channel_params in config['media_channels']: - channel_index=channel_params['channel_index'] if channel_params['channel_index'] is not None else None - channels.append( - { - # "opticalconfig_uuid":opticalconfig_uuid, - "roadm_uuid" : roadm_get_uuid(device_id), - "channel_uuid" : channel_get_uuid(f'media_channel_{channel_index}',device_uuid), - "band_name" : channel_params['band_name'], - "lower_frequency" : int(channel_params["lower_frequency"]) if "lower_frequency" in channel_params else 0, - "upper_frequency" : int(channel_params["upper_frequency"]) if "upper_frequency" in channel_params else 0, - "dest_port" : channel_params["dest_port"] if "dest_port" in channel_params else '', - "src_port" : channel_params["src_port"] if "src_port" in channel_params else '', - "status" : channel_params["status"] if "status" in channel_params else "", - "type" : 'media_channel', - "optical_band_parent":str(channel_params['optical_band_parent']) if 'optical_band_parent' in channel_params else None, - "channel_index" : channel_index if channel_index is not None else None, - } - ) + channel_index = channel_params['channel_index'] if channel_params['channel_index'] is not None else None + channels.append({ + # "opticalconfig_uuid":opticalconfig_uuid, + "roadm_uuid" : roadm_get_uuid(device_id), + "channel_uuid" : channel_get_uuid(f'media_channel_{channel_index}',device_uuid), + "band_name" : channel_params['band_name'], + "lower_frequency" : int(channel_params["lower_frequency"]) if "lower_frequency" in channel_params else 0, + "upper_frequency" : int(channel_params["upper_frequency"]) if "upper_frequency" in channel_params else 0, + "dest_port" : channel_params["dest_port"] if "dest_port" in channel_params else '', + "src_port" : channel_params["src_port"] if "src_port" in channel_params else '', + "status" : channel_params["status"] if "status" in channel_params else "", + "type" : 'media_channel', + "optical_band_parent" : str(channel_params['optical_band_parent']) if 'optical_band_parent' in channel_params else None, + "channel_index" : channel_index if channel_index is not None else None, + }) if 'optical_bands' in config and len(config['optical_bands']) > 0: #channels = [channel['name']['index'] for channel in config['channels']] - channel_num=0 + channel_num = 0 for channel_params in config['optical_bands']: - channel_num+=1 - channels.append( - { - # "opticalconfig_uuid":opticalconfig_uuid, - "roadm_uuid" : roadm_get_uuid(device_id), - "channel_uuid" : channel_get_uuid(f'optical_bands_{channel_num}',device_uuid), - "band_name" : channel_params['band_name'], - "lower_frequency" : int(channel_params["lower_frequency"]) if "lower_frequency" in channel_params else 0, - "upper_frequency" : int(channel_params["upper_frequency"]) if "upper_frequency" in channel_params else 0, - "dest_port" : channel_params["dest_port"] if "dest_port" in channel_params else '', - "src_port" : channel_params["src_port"] if "src_port" in channel_params else '', - "status" : channel_params["status"] if "status" in channel_params else "", - "type" : 'optical_band', - "channel_index" : channel_params['channel_index'] if 'channel_index' in channel_params else None, - "optical_band_parent":None - - } - ) - + channel_num += 1 + channels.append({ + # "opticalconfig_uuid":opticalconfig_uuid, + "roadm_uuid" : roadm_get_uuid(device_id), + "channel_uuid" : channel_get_uuid(f'optical_bands_{channel_num}',device_uuid), + "band_name" : channel_params['band_name'], + "lower_frequency" : int(channel_params["lower_frequency"]) if "lower_frequency" in channel_params else 0, + "upper_frequency" : int(channel_params["upper_frequency"]) if "upper_frequency" in channel_params else 0, + "dest_port" : channel_params["dest_port"] if "dest_port" in channel_params else '', + "src_port" : channel_params["src_port"] if "src_port" in channel_params else '', + "status" : channel_params["status"] if "status" in channel_params else "", + "type" : 'optical_band', + "channel_index" : channel_params['channel_index'] if 'channel_index' in channel_params else None, + "optical_band_parent": None + }) + roadms.append({ - "roadm_uuid":roadm_get_uuid(device_id), - "opticalconfig_uuid":opticalconfig_uuid, + "roadm_uuid" : roadm_get_uuid(device_id), + "opticalconfig_uuid" : opticalconfig_uuid, }) - if config_type == DeviceTypeEnum.OPEN_ROADM._value_: - if 'interfaces' in config : + if config_type == DeviceTypeEnum.OPEN_ROADM._value_: + if 'interfaces' in config: for interface in config['interfaces']: interfaces.append({ "interface_uuid" :interface_get_uuid(interface['name']), @@ -182,36 +155,28 @@ def set_opticalconfig(db_engine : Engine, request : OpticalConfig): "frequency" : interface["frequency"], "width" : interface["width"], "roadm_uuid" : roadm_get_uuid(device_id), - - } - ) + }) roadms.append({ "roadm_uuid":roadm_get_uuid(device_id), "opticalconfig_uuid":opticalconfig_uuid, }) - LOGGER.info(f"open_roadm") - - - - OpticalConfig_data.append( - { - "opticalconfig_uuid":opticalconfig_uuid, - # "transcievers" : transceivers, - # "interfaces" :"", - "channel_namespace" : channel_namespace , - "endpoints" : [json.dumps(endpoint) for endpoint in config.get("endpoints",[])], - "device_uuid": device_uuid, - "type":config_type - } - ) + + OpticalConfig_data.append({ + "opticalconfig_uuid":opticalconfig_uuid, + # "transcievers" : transceivers, + # "interfaces" :"", + "channel_namespace" : channel_namespace , + "endpoints" : [json.dumps(endpoint) for endpoint in config.get("endpoints",[])], + "device_uuid": device_uuid, + "type":config_type + }) LOGGER.info(f"added OpticalConfig_data {OpticalConfig_data}") LOGGER.info(f"added interfaces {interfaces}") def callback(session:Session)->bool: stmt = insert(OpticalConfigModel).values(OpticalConfig_data) - stmt = stmt.on_conflict_do_update( index_elements=[OpticalConfigModel.opticalconfig_uuid], set_=dict( @@ -223,7 +188,6 @@ def set_opticalconfig(db_engine : Engine, request : OpticalConfig): if config_type == DeviceTypeEnum.OPTICAL_TRANSPONDER._value_: if (len(transponder)>0): stmt = insert(TransponderTypeModel).values(transponder) - stmt = stmt.on_conflict_do_update( index_elements=[TransponderTypeModel.transponder_uuid], set_=dict( @@ -233,30 +197,24 @@ def set_opticalconfig(db_engine : Engine, request : OpticalConfig): ) stmt = stmt.returning(TransponderTypeModel.transponder_uuid) transponder_id = session.execute(stmt).fetchone() - - if (len(channels)>0) : - stmt = insert(OpticalChannelModel).values(channels) - - stmt = stmt.on_conflict_do_update( - index_elements=[OpticalChannelModel.channel_uuid ], - set_=dict( - channel_name= stmt.excluded.channel_name , - frequency = stmt.excluded.frequency, - operational_mode=stmt.excluded.operational_mode, + if (len(channels) > 0): + stmt = insert(OpticalChannelModel).values(channels) + stmt = stmt.on_conflict_do_update( + index_elements=[OpticalChannelModel.channel_uuid], + set_=dict( + channel_name= stmt.excluded.channel_name , + frequency = stmt.excluded.frequency, + operational_mode=stmt.excluded.operational_mode, target_output_power=stmt.excluded.target_output_power, - - ) - ) - stmt = stmt.returning(OpticalChannelModel.channel_uuid) - opticalChannel_id = session.execute(stmt).fetchone() - - + ) + stmt = stmt.returning(OpticalChannelModel.channel_uuid) + opticalChannel_id = session.execute(stmt).fetchone() + if config_type == DeviceTypeEnum.OPTICAL_ROADM._value_: - if (len(roadms)>0): + if len(roadms) > 0: stmt = insert(RoadmTypeModel).values(roadms) - stmt = stmt.on_conflict_do_update( index_elements=[RoadmTypeModel.roadm_uuid], set_=dict( @@ -265,71 +223,59 @@ def set_opticalconfig(db_engine : Engine, request : OpticalConfig): ) stmt = stmt.returning(RoadmTypeModel.roadm_uuid) roadm_id = session.execute(stmt).fetchone() - - if (channels is not None and len(channels)>0) : - stmt = insert(ChannelModel).values(channels) - - stmt = stmt.on_conflict_do_update( - index_elements=[ChannelModel.channel_uuid ], - set_=dict( - band_name= stmt.excluded.band_name , - lower_frequency = stmt.excluded.lower_frequency, - upper_frequency = stmt.excluded.upper_frequency, - type=stmt.excluded.type, - status=stmt.excluded.status, - dest_port=stmt.excluded.dest_port, - src_port=stmt.excluded.src_port, - channel_index=stmt.excluded.channel_index, - optical_band_parent = stmt.excluded.optical_band_parent - - - ) - + stmt = insert(ChannelModel).values(channels) + stmt = stmt.on_conflict_do_update( + index_elements=[ChannelModel.channel_uuid ], + set_=dict( + band_name= stmt.excluded.band_name , + lower_frequency = stmt.excluded.lower_frequency, + upper_frequency = stmt.excluded.upper_frequency, + type=stmt.excluded.type, + status=stmt.excluded.status, + dest_port=stmt.excluded.dest_port, + src_port=stmt.excluded.src_port, + channel_index=stmt.excluded.channel_index, + optical_band_parent = stmt.excluded.optical_band_parent ) - stmt = stmt.returning(ChannelModel.channel_uuid) - opticalChannel_id = session.execute(stmt).fetchone() + ) + stmt = stmt.returning(ChannelModel.channel_uuid) + opticalChannel_id = session.execute(stmt).fetchone() - if config_type == DeviceTypeEnum.OPEN_ROADM._value_: - - if (len(roadms)>0): + if config_type == DeviceTypeEnum.OPEN_ROADM._value_: + if (len(roadms)>0): stmt = insert(RoadmTypeModel).values(roadms) - stmt = stmt.on_conflict_do_update( - index_elements=[RoadmTypeModel.roadm_uuid], - set_=dict( - opticalconfig_uuid=stmt.excluded.opticalconfig_uuid - ) + index_elements=[RoadmTypeModel.roadm_uuid], + set_=dict( + opticalconfig_uuid=stmt.excluded.opticalconfig_uuid ) + ) stmt = stmt.returning(RoadmTypeModel.roadm_uuid) roadm_id = session.execute(stmt).fetchone() - - if len(interfaces) >0 : + + if len(interfaces) >0 : stmt = insert(ORInterfaceModel).values(interfaces) stmt = stmt.on_conflict_do_update( - index_elements=[ORInterfaceModel.interface_uuid ], - set_=dict( - name= stmt.excluded.name , - frequency = stmt.excluded.frequency, - administrative_state = stmt.excluded.administrative_state, - type=stmt.excluded.type, - circuit_pack_name=stmt.excluded.circuit_pack_name, - port=stmt.excluded.port, - interface_list=stmt.excluded.interface_list, - width=stmt.excluded.width, - ) - + index_elements=[ORInterfaceModel.interface_uuid ], + set_=dict( + name= stmt.excluded.name , + frequency = stmt.excluded.frequency, + administrative_state = stmt.excluded.administrative_state, + type=stmt.excluded.type, + circuit_pack_name=stmt.excluded.circuit_pack_name, + port=stmt.excluded.port, + interface_list=stmt.excluded.interface_list, + width=stmt.excluded.width, ) + ) stmt = stmt.returning(ORInterfaceModel.interface_uuid) opticalChannel_id = session.execute(stmt).fetchone() - - + opticalconfig_id = run_transaction(sessionmaker(bind=db_engine), callback) return {'opticalconfig_uuid': opticalconfig_id} - def update_opticalconfig(db_engine : Engine, request : OpticalConfig): - opticalconfig_id = OpticalConfigId() device_id = request.device_id device_uuid = request.device_id.device_uuid.uuid @@ -339,24 +285,22 @@ def update_opticalconfig(db_engine : Engine, request : OpticalConfig): channel_namespace= None OpticalConfig_data = [] config_type=None - is_transpondre=False + #is_transpondre=False opticalconfig_uuid =opticalconfig_get_uuid(device_id) - LOGGER.info(f"udpate_cofigy_type {request.config}") + if request.config : config = json.loads(request.config) - + if 'new_config' in config: if 'type' in config: - config_type=config['type'] + config_type = config['type'] if "type" in config['new_config'] and config_type is None: - - config_type= config['new_config']["type"] + config_type = config['new_config']["type"] if 'channel_namespace' in config['new_config']: - channel_namespace=config['new_config'] ['channel_namespace'] - - + channel_namespace = config['new_config'] ['channel_namespace'] + if config_type == DeviceTypeEnum.OPTICAL_TRANSPONDER._value_: - is_transpondre=True + is_transpondre = True transceivers = [] if channel_namespace is None and 'channel_namespace' in config: channel_namespace=config['channel_namespace'] @@ -368,136 +312,113 @@ def update_opticalconfig(db_engine : Engine, request : OpticalConfig): #channels = [channel['name']['index'] for channel in config['channels']] for channel_params in config['new_config']['channels']: - channels.append( - { - # "opticalconfig_uuid":opticalconfig_uuid, - "transponder_uuid" : transponder_get_uuid(device_id), - "channel_uuid" : channel_get_uuid(channel_params['name']['index'],device_uuid), - "channel_name" : channel_params['name']['index'], - "frequency" : int(channel_params["frequency"]) if "frequency" in channel_params else 0, - "operational_mode" : int(channel_params["operational-mode"]) if "operational-mode" in channel_params else 0, - "target_output_power" : channel_params["target-output-power"] if "target-output-power" in channel_params else '', - "status" : channel_params["status"] if "status" in channel_params else "" - } - ) + channels.append({ + # "opticalconfig_uuid":opticalconfig_uuid, + "transponder_uuid" : transponder_get_uuid(device_id), + "channel_uuid" : channel_get_uuid(channel_params['name']['index'],device_uuid), + "channel_name" : channel_params['name']['index'], + "frequency" : int(channel_params["frequency"]) if "frequency" in channel_params else 0, + "operational_mode" : int(channel_params["operational-mode"]) if "operational-mode" in channel_params else 0, + "target_output_power" : channel_params["target-output-power"] if "target-output-power" in channel_params else '', + "status" : channel_params["status"] if "status" in channel_params else "" + }) elif 'flow_handled' in config and 'new_config' in config : - - target_config = config['new_config'] - dest_pair=None - src=None - dst=None - src_pair=config['flow_handled'][0] - - src,dst=src_pair - if src_pair is None and len(config['flow_handled'])>1 : - dest_pair=config['flow_handled'][1] - src,dst=dest_pair - channel_index=src if src is not None and src !='0' else dst - channel_name=f"channel-{channel_index}" - channels.append( - { - # "opticalconfig_uuid":opticalconfig_uuid, - "transponder_uuid" : transponder_get_uuid(device_id), - "channel_uuid" : channel_get_uuid(channel_name,device_uuid), - "channel_name" :channel_name, - "frequency" : int(target_config["frequency"]) if "frequency" in target_config else 0, - "operational_mode" : int(target_config["operational-mode"]) if "operational-mode" in target_config else 0, - "target_output_power" : target_config["target-output-power"] if "target-output-power" in target_config else '', - "status" : target_config["status"] if "status" in target_config else "" - } - ) - + target_config = config['new_config'] + dest_pair = None + src = None + dst = None + src_pair = config['flow_handled'][0] + + src, dst = src_pair + if src_pair is None and len(config['flow_handled'])>1 : + dest_pair = config['flow_handled'][1] + src, dst = dest_pair + channel_index = src if src is not None and src !='0' else dst + channel_name = f"channel-{channel_index}" + channels.append({ + # "opticalconfig_uuid":opticalconfig_uuid, + "transponder_uuid" : transponder_get_uuid(device_id), + "channel_uuid" : channel_get_uuid(channel_name,device_uuid), + "channel_name" : channel_name, + "frequency" : int(target_config["frequency"]) if "frequency" in target_config else 0, + "operational_mode" : int(target_config["operational-mode"]) if "operational-mode" in target_config else 0, + "target_output_power" : target_config["target-output-power"] if "target-output-power" in target_config else '', + "status" : target_config["status"] if "status" in target_config else "" + }) + transponder.append({ - "transponder_uuid":transponder_get_uuid(device_id), - "transcievers":transceivers, - "interfaces":None, - "opticalconfig_uuid":opticalconfig_uuid, + "transponder_uuid" : transponder_get_uuid(device_id), + "transcievers" : transceivers, + "interfaces" : None, + "opticalconfig_uuid": opticalconfig_uuid, }) - - + if config_type == DeviceTypeEnum.OPTICAL_ROADM._value_: - if channel_namespace is None and 'channel_namespace' in config['new_config']: channel_namespace=config['new_config']['channel_namespace'] - if 'is_opticalband' in config and not config['is_opticalband']: #channels = [channel['name']['index'] for channel in config['channels']] if 'flow_handled' in config and len(config['flow_handled'])>0 : - num=0 - flow_id=config["new_config"]["flow_id"] if 'flow_id' in config['new_config'] else None + num = 0 + flow_id = config["new_config"]["flow_id"] if 'flow_id' in config['new_config'] else None for flow in config['flow_handled']: - src_port,dest_port=flow - channel_index=flow_id+num - num+=1 - channels.append( - { - # "opticalconfig_uuid":opticalconfig_uuid, - "roadm_uuid" : roadm_get_uuid(device_id), - "channel_uuid" : channel_get_uuid(f'media_channel_{channel_index}',device_uuid), - "band_name" : config['new_config']['band_type'], - "lower_frequency" : int(int(config['new_config']['frequency']) - (int(config['new_config']['band'])/2)) if "frequency" in config['new_config'] else 0, - "upper_frequency" :int(int(config['new_config']['frequency']) + (int(config['new_config']['band'])/2)) if "frequency" in config['new_config'] else 0, - "dest_port" :dest_port, - "src_port" : src_port, - "status" : config['new_config']["status"] if "status" in config['new_config'] else "", - "type" : 'media_channel', - "optical_band_parent":str( config['new_config']['ob_id']) if 'ob_id' in config['new_config'] else None, - "channel_index":str(channel_index) if channel_index is not None else None - } - ) + src_port, dest_port = flow + channel_index = flow_id + num + num += 1 + channels.append({ + # "opticalconfig_uuid":opticalconfig_uuid, + "roadm_uuid" : roadm_get_uuid(device_id), + "channel_uuid" : channel_get_uuid(f'media_channel_{channel_index}',device_uuid), + "band_name" : config['new_config']['band_type'], + "lower_frequency" : int(int(config['new_config']['frequency']) - (int(config['new_config']['band'])/2)) if "frequency" in config['new_config'] else 0, + "upper_frequency" : int(int(config['new_config']['frequency']) + (int(config['new_config']['band'])/2)) if "frequency" in config['new_config'] else 0, + "dest_port" : dest_port, + "src_port" : src_port, + "status" : config['new_config']["status"] if "status" in config['new_config'] else "", + "type" : 'media_channel', + "optical_band_parent" : str( config['new_config']['ob_id']) if 'ob_id' in config['new_config'] else None, + "channel_index" : str(channel_index) if channel_index is not None else None + }) if 'is_opticalband' in config and config['is_opticalband']: #channels = [channel['name']['index'] for channel in config['channels']] - - - if 'flow_handled' in config and len(config['flow_handled'])>0 : - ob_id =config['new_config']['ob_id'] if 'ob_id' in config['new_config'] else None - num=0 - for flow in config['flow_handled']: - - src_port,dest_port=flow - channel_index=ob_id+num - num+=1 - channels.append( - - { - # "opticalconfig_uuid":opticalconfig_uuid, - "roadm_uuid" : roadm_get_uuid(device_id), - "channel_uuid" : channel_get_uuid(f'optical_bands_{channel_index}',device_uuid), - "band_name" : config['new_config']['band_type'], - "lower_frequency" : int(config['new_config']["low-freq"]) if "low-freq" in config['new_config'] else 0, - "upper_frequency" : int(config['new_config']["up-freq"]) if "up-freq" in config['new_config'] else 0, - "dest_port" :dest_port, - "src_port" : src_port, - "status" : config['new_config']["status"] if "status" in config['new_config'] else "", - "type" : 'optical_band', - "channel_index" :str( channel_index) if channel_index is not None else None - } - ) - + if 'flow_handled' in config and len(config['flow_handled']) > 0: + ob_id = config['new_config']['ob_id'] if 'ob_id' in config['new_config'] else None + num = 0 + for flow in config['flow_handled']: + src_port, dest_port = flow + channel_index = ob_id + num + num += 1 + channels.append({ + # "opticalconfig_uuid":opticalconfig_uuid, + "roadm_uuid" : roadm_get_uuid(device_id), + "channel_uuid" : channel_get_uuid(f'optical_bands_{channel_index}',device_uuid), + "band_name" : config['new_config']['band_type'], + "lower_frequency" : int(config['new_config']["low-freq"]) if "low-freq" in config['new_config'] else 0, + "upper_frequency" : int(config['new_config']["up-freq"]) if "up-freq" in config['new_config'] else 0, + "dest_port" : dest_port, + "src_port" : src_port, + "status" : config['new_config']["status"] if "status" in config['new_config'] else "", + "type" : 'optical_band', + "channel_index" : str( channel_index) if channel_index is not None else None + }) + roadms.append({ - "roadm_uuid":roadm_get_uuid(device_id), - "opticalconfig_uuid":opticalconfig_uuid, - }) - - - OpticalConfig_data.append( - { - "opticalconfig_uuid":opticalconfig_uuid, - # "transcievers" : transceivers, - # "interfaces" :"", - "channel_namespace" : channel_namespace , - "endpoints" : [json.dumps(endpoint) for endpoint in config['new_config'].get("endpoints",[])], - "device_uuid": device_uuid, - "type":config_type - } - ) - - LOGGER.info(f"udpate_ OpticalConfig_data {OpticalConfig_data}") - LOGGER.info(f"udpate_ channels {channels}") + "roadm_uuid" : roadm_get_uuid(device_id), + "opticalconfig_uuid": opticalconfig_uuid, + }) + + OpticalConfig_data.append({ + "opticalconfig_uuid": opticalconfig_uuid, + # "transcievers" : transceivers, + # "interfaces" :"", + "channel_namespace" : channel_namespace , + "endpoints" : [json.dumps(endpoint) for endpoint in config['new_config'].get("endpoints",[])], + "device_uuid" : device_uuid, + "type" : config_type + }) def callback(session:Session)->bool: stmt = insert(OpticalConfigModel).values(OpticalConfig_data) - stmt = stmt.on_conflict_do_update( index_elements=[OpticalConfigModel.opticalconfig_uuid], set_=dict( @@ -509,76 +430,62 @@ def update_opticalconfig(db_engine : Engine, request : OpticalConfig): if config_type == DeviceTypeEnum.OPTICAL_TRANSPONDER._value_: if (len(transponder)>0): stmt = insert(TransponderTypeModel).values(transponder) - stmt = stmt.on_conflict_do_update( - index_elements=[TransponderTypeModel.transponder_uuid], - set_=dict( - transcievers= stmt.excluded.transcievers , - ) - + index_elements=[TransponderTypeModel.transponder_uuid], + set_=dict( + transcievers= stmt.excluded.transcievers, ) + ) stmt = stmt.returning(TransponderTypeModel.transponder_uuid) transponder_id = session.execute(stmt).fetchone() - - if (len(channels)>0) : - stmt = insert(OpticalChannelModel).values(channels) - - stmt = stmt.on_conflict_do_update( - index_elements=[OpticalChannelModel.channel_uuid ], - set_=dict( - channel_name= stmt.excluded.channel_name , - frequency = stmt.excluded.frequency, - operational_mode=stmt.excluded.operational_mode, - target_output_power=stmt.excluded.target_output_power, - status = stmt.excluded.status, - - ) - + if len(channels) > 0: + stmt = insert(OpticalChannelModel).values(channels) + stmt = stmt.on_conflict_do_update( + index_elements=[OpticalChannelModel.channel_uuid ], + set_=dict( + channel_name= stmt.excluded.channel_name , + frequency = stmt.excluded.frequency, + operational_mode=stmt.excluded.operational_mode, + target_output_power=stmt.excluded.target_output_power, + status = stmt.excluded.status, ) - stmt = stmt.returning(OpticalChannelModel.channel_uuid) - opticalChannel_id = session.execute(stmt).fetchone() + ) + stmt = stmt.returning(OpticalChannelModel.channel_uuid) + opticalChannel_id = session.execute(stmt).fetchone() if config_type == DeviceTypeEnum.OPTICAL_ROADM._value_: - if (len(roadms)>0): + if len(roadms) > 0: stmt = insert(RoadmTypeModel).values(roadms) - stmt = stmt.on_conflict_do_update( - index_elements=[RoadmTypeModel.roadm_uuid], - set_=dict( - circuits=stmt.excluded.circuits - ) + index_elements=[RoadmTypeModel.roadm_uuid], + set_=dict( + circuits=stmt.excluded.circuits ) + ) stmt = stmt.returning(RoadmTypeModel.roadm_uuid) roadm_id = session.execute(stmt).fetchone() - if (channels is not None and len(channels)>0) : - - stmt = insert(ChannelModel).values(channels) - - stmt = stmt.on_conflict_do_update( - index_elements=[ChannelModel.channel_uuid ], - set_=dict( - band_name= stmt.excluded.band_name , - lower_frequency = stmt.excluded.lower_frequency, - upper_frequency = stmt.excluded.upper_frequency, - type=stmt.excluded.type, - status=stmt.excluded.status, - dest_port=stmt.excluded.dest_port, - src_port=stmt.excluded.src_port, - - ) - + if (channels is not None and len(channels) > 0): + stmt = insert(ChannelModel).values(channels) + stmt = stmt.on_conflict_do_update( + index_elements=[ChannelModel.channel_uuid ], + set_=dict( + band_name= stmt.excluded.band_name , + lower_frequency = stmt.excluded.lower_frequency, + upper_frequency = stmt.excluded.upper_frequency, + type=stmt.excluded.type, + status=stmt.excluded.status, + dest_port=stmt.excluded.dest_port, + src_port=stmt.excluded.src_port, ) - stmt = stmt.returning(ChannelModel.channel_uuid) - opticalChannel_id = session.execute(stmt).fetchone() - - - + ) + stmt = stmt.returning(ChannelModel.channel_uuid) + opticalChannel_id = session.execute(stmt).fetchone() + opticalconfig_id = run_transaction(sessionmaker(bind=db_engine), callback) return {'opticalconfig_uuid': opticalconfig_id} - -def select_opticalconfig(db_engine:Engine,request:OpticalConfigId): +def select_opticalconfig(db_engine : Engine, request : OpticalConfigId): def callback(session : Session) -> OpticalConfig: result = OpticalConfig() stmt = session.query(OpticalConfigModel) @@ -587,134 +494,101 @@ def select_opticalconfig(db_engine:Engine,request:OpticalConfigId): if obj is not None: result.config = json.dumps(obj.dump()) ids_obj = obj.dump_id() - result.opticalconfig_id.opticalconfig_uuid = ids_obj["opticalconfig_uuid"] result.device_id.device_uuid.uuid=ids_obj["device_uuid"] - LOGGER.info(f"select_opticalconfig {result}") return result return run_transaction(sessionmaker(bind=db_engine, expire_on_commit=False), callback) - -def delete_opticalconfig(db_engine : Engine ,messagebroker : MessageBroker, request : OpticalConfigId): +def delete_opticalconfig(db_engine : Engine, messagebroker : MessageBroker, request : OpticalConfigId): opticalconfig_uuid = request.opticalconfig_uuid def callback(session : Session): - query = session.query(OpticalConfigModel) - + #query = session.query(OpticalConfigModel) num_deleted = session.query(OpticalConfigModel).filter_by(opticalconfig_uuid=opticalconfig_uuid).delete() return num_deleted > 0 deleted = run_transaction(sessionmaker(bind=db_engine), callback) - if deleted: - notify_event_opticalconfig(messagebroker, EventTypeEnum.EVENTTYPE_REMOVE, opticalconfig_uuid) - + notify_event_opticalconfig(messagebroker, EventTypeEnum.EVENTTYPE_REMOVE, opticalconfig_uuid) return Empty() -def delete_opticalchannel(db_engine : Engine ,messagebroker : MessageBroker, request : OpticalConfig): +def delete_opticalchannel(db_engine : Engine, messagebroker : MessageBroker, request : OpticalConfig): config = json.loads(request.config) device_id = request.device_id device_uuid = request.device_id.device_uuid.uuid opticalconfig_uuid = request.opticalconfig_id.opticalconfig_uuid - channels=[] - config_type=None - LOGGER.info(f"delete_optical_channel config {config}") + channels = [] + config_type = None + if "type" in config : - config_type= config["type"] + config_type= config["type"] if 'new_config' in config: - - if config_type == DeviceTypeEnum.OPTICAL_TRANSPONDER._value_: for flow in config['flow']: - src,dest = flow channel_index= src if src is not None and src!='0' else dest channel_name= f"channel-{channel_index}" - channels.append( - { - # "opticalconfig_uuid":opticalconfig_uuid, - "transponder_uuid" : transponder_get_uuid(device_id), - "channel_uuid" : channel_get_uuid(channel_name ,device_uuid), - "channel_name" :channel_name , - "frequency" : 0, - "operational_mode" : None, - "target_output_power" : None, - "status" :"DISABLED" - } - ) + channels.append({ + # "opticalconfig_uuid":opticalconfig_uuid, + "transponder_uuid" : transponder_get_uuid(device_id), + "channel_uuid" : channel_get_uuid(channel_name ,device_uuid), + "channel_name" : channel_name , + "frequency" : 0, + "operational_mode" : None, + "target_output_power": None, + "status" : "DISABLED" + }) elif config_type == DeviceTypeEnum.OPTICAL_ROADM._value_: - - channel_num=0 + channel_num = 0 if 'flow' in config : if 'is_opticalband' in config: if config['is_opticalband']: - ob_id =config['new_config']['ob_id'] if 'ob_id' in config['new_config'] else None - if len(config['flow']) ==0: - channel_index=ob_id+channel_num - - channel_name=f'optical_bands_{channel_index}' - channels.append( channel_get_uuid(channel_name,device_uuid)) - else : + ob_id = config['new_config']['ob_id'] if 'ob_id' in config['new_config'] else None + if len(config['flow']) == 0: + channel_index = ob_id + channel_num + channel_name = f'optical_bands_{channel_index}' + channels.append(channel_get_uuid(channel_name, device_uuid)) + else: for flow in config['flow']: - channel_index=ob_id+channel_num + channel_index = ob_id+channel_num channel_num +=1 - channel_name=f'optical_bands_{channel_index}' - channels.append( channel_get_uuid(channel_name,device_uuid)) - else : - if config['flow'] ==0: - channel_num=1 - channel_name=f'media_channel_{channel_num}' - channels.append( channel_get_uuid(channel_name,device_uuid)) - else : + channel_name = f'optical_bands_{channel_index}' + channels.append(channel_get_uuid(channel_name, device_uuid)) + else: + if config['flow'] == 0: + channel_num = 1 + channel_name = f'media_channel_{channel_num}' + channels.append(channel_get_uuid(channel_name, device_uuid)) + else: for flow in config['flow']: - channel_num +=1 - channel_name=f'media_channel_{channel_num}' - channels.append( channel_get_uuid(channel_name,device_uuid)) - - else : - return - - LOGGER.info(f"delete channel {channels}") - - + channel_num += 1 + channel_name = f'media_channel_{channel_num}' + channels.append(channel_get_uuid(channel_name, device_uuid)) + def callback(session : Session): - all_suceed=[] - if config_type ==DeviceTypeEnum.OPTICAL_ROADM._value_: - query = session.query(ChannelModel) + all_suceed = [] + if config_type == DeviceTypeEnum.OPTICAL_ROADM._value_: for channel_uuid in channels: num_deleted = session.query(ChannelModel).filter_by(channel_uuid=channel_uuid).delete() all_suceed.append(num_deleted > 0) - return all_suceed - elif config_type == DeviceTypeEnum.OPTICAL_TRANSPONDER._value_ : - if (len(channels)>0) : - - stmt = insert(OpticalChannelModel).values(channels) - - stmt = stmt.on_conflict_do_update( - index_elements=[OpticalChannelModel.channel_uuid ], - set_=dict( - channel_name= stmt.excluded.channel_name , - frequency = stmt.excluded.frequency, - operational_mode=stmt.excluded.operational_mode, - target_output_power=stmt.excluded.target_output_power, - status=stmt.excluded.status - - ) - + elif config_type == DeviceTypeEnum.OPTICAL_TRANSPONDER._value_: + if len(channels) > 0: + stmt = insert(OpticalChannelModel).values(channels) + stmt = stmt.on_conflict_do_update( + index_elements=[OpticalChannelModel.channel_uuid ], + set_=dict( + channel_name= stmt.excluded.channel_name , + frequency = stmt.excluded.frequency, + operational_mode=stmt.excluded.operational_mode, + target_output_power=stmt.excluded.target_output_power, + status=stmt.excluded.status ) - stmt = stmt.returning(OpticalChannelModel.channel_uuid) - opticalChannel_id = session.execute(stmt).fetchone() - all_suceed.append(True) - return all_suceed - else: - return all_suceed - - - all_deleted = run_transaction(sessionmaker(bind=db_engine), callback) - - for stat in all_deleted: - if not stat: - return - notify_event_opticalconfig(messagebroker, EventTypeEnum.EVENTTYPE_REMOVE, opticalconfig_uuid) + ) + stmt = stmt.returning(OpticalChannelModel.channel_uuid) + opticalChannel_id = session.execute(stmt).fetchone() + all_suceed.append(True) + return all_suceed + all_deleted = run_transaction(sessionmaker(bind=db_engine), callback) + for stat in all_deleted: + if not stat: return + notify_event_opticalconfig(messagebroker, EventTypeEnum.EVENTTYPE_REMOVE, opticalconfig_uuid) return Empty() - - \ No newline at end of file diff --git a/src/context/service/database/OpticalLink.py b/src/context/service/database/OpticalLink.py index 6c99450b96be2dd1f4769ed3ee0e273044dd5a79..93f43ef34497cb353f50a9b001da8ec4a6f5f92f 100644 --- a/src/context/service/database/OpticalLink.py +++ b/src/context/service/database/OpticalLink.py @@ -1,4 +1,4 @@ -# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) +# Copyright 2022-2024 ETSI OSG/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. @@ -15,28 +15,25 @@ import datetime, logging from sqlalchemy.dialects.postgresql import insert from sqlalchemy.engine import Engine -from sqlalchemy import inspect from sqlalchemy.orm import Session, selectinload, sessionmaker from sqlalchemy_cockroachdb import run_transaction from typing import Dict, List, Optional, Set, Tuple -from common.proto.context_pb2 import Empty, EventTypeEnum, OpticalLink, LinkId, OpticalLinkList, TopologyId +from common.proto.context_pb2 import ( + Empty, EventTypeEnum, OpticalLink, LinkId, OpticalLinkList, TopologyId +) from common.message_broker.MessageBroker import MessageBroker from common.method_wrappers.ServiceExceptions import NotFoundException from common.tools.object_factory.Link import json_link_id -from context.service.database.uuids.Topology import topology_get_uuid from .models.OpticalLinkModel import OpticalLinkModel,OpticalLinkEndPointModel - from .models.TopologyModel import TopologyOpticalLinkModel, TopologyModel -from .uuids.OpticalEndPoint import optical_endpoint_get_uuid -from .uuids.Link import link_get_uuid -from .uuids.OpticalLink import opticaldetail_get_uuid -from .Events import notify_event_context, notify_event_link, notify_event_topology from .uuids.EndPoint import endpoint_get_uuid +from .uuids.Link import link_get_uuid +from .uuids.Topology import topology_get_uuid +from .Events import notify_event_link LOGGER = logging.getLogger(__name__) - def optical_link_list_objs(db_engine : Engine) -> OpticalLinkList: def callback(session : Session) -> List[Dict]: obj_list : List[OpticalLinkModel] = session.query(OpticalLinkModel)\ @@ -70,8 +67,6 @@ def optical_link_set(db_engine : Engine, messagebroker : MessageBroker, request now = datetime.datetime.utcnow() # By default, always add link to default Context/Topology - - topology_uuids : Set[str] = set() related_topologies : List[Dict] = list() _,topology_uuid = topology_get_uuid(TopologyId(), allow_random=False, allow_default=True) @@ -80,9 +75,9 @@ def optical_link_set(db_engine : Engine, messagebroker : MessageBroker, request 'optical_link_uuid' : link_uuid, }) topology_uuids.add(topology_uuid) - + link_endpoints_data : List[Dict] = list() - + for i,endpoint_id in enumerate(request.link_endpoint_ids): endpoint_topology_uuid, endpoint_device_uuid, endpoint_uuid = endpoint_get_uuid( endpoint_id, endpoint_name="", allow_random=True) @@ -92,7 +87,7 @@ def optical_link_set(db_engine : Engine, messagebroker : MessageBroker, request 'endpoint_uuid': endpoint_uuid, }) - + if endpoint_topology_uuid not in topology_uuids: related_topologies.append({ 'topology_uuid': endpoint_topology_uuid, @@ -100,11 +95,6 @@ def optical_link_set(db_engine : Engine, messagebroker : MessageBroker, request }) topology_uuids.add(endpoint_topology_uuid) - - - - LOGGER.info(f"update_link_uuid {link_uuid}") - LOGGER.info(f"c_slots {request.optical_details.c_slots }") optical_link_data = [{ 'opticallink_uuid' : link_uuid, 'name' : link_name, @@ -119,10 +109,8 @@ def optical_link_set(db_engine : Engine, messagebroker : MessageBroker, request "c_slots" : request.optical_details.c_slots , "l_slots" : request.optical_details.l_slots, "s_slots" : request.optical_details.s_slots, - }] - - + def callback(session : Session) -> Tuple[bool, List[Dict]]: stmt = insert(OpticalLinkModel).values(optical_link_data) stmt = stmt.on_conflict_do_update( @@ -144,11 +132,7 @@ def optical_link_set(db_engine : Engine, messagebroker : MessageBroker, request updated = updated_at > created_at updated_endpoints = False - - - if len(link_endpoints_data) > 0: - stmt = insert(OpticalLinkEndPointModel).values(link_endpoints_data) stmt = stmt.on_conflict_do_nothing( index_elements=[OpticalLinkEndPointModel.link_uuid, OpticalLinkEndPointModel.endpoint_uuid] @@ -175,8 +159,6 @@ def optical_link_set(db_engine : Engine, messagebroker : MessageBroker, request link_topologies : List[TopologyModel] = query.all() link_topology_ids = [obj.dump_id() for obj in link_topologies] #LOGGER.warning('link_topology_ids={:s}'.format(str(link_topology_ids))) - - return updated or updated_endpoints updated = run_transaction(sessionmaker(bind=db_engine), callback ) @@ -188,10 +170,8 @@ def optical_link_set(db_engine : Engine, messagebroker : MessageBroker, request def optical_link_delete(db_engine : Engine, messagebroker : MessageBroker, request : LinkId) -> Empty: link_uuid = link_get_uuid(request, allow_random=False) - + def callback(session : Session) -> bool: - - num_deleted = session.query(OpticalLinkModel).filter_by(opticallink_uuid=link_uuid).delete() return num_deleted > 0 deleted = run_transaction(sessionmaker(bind=db_engine), callback) diff --git a/src/context/service/database/Topology.py b/src/context/service/database/Topology.py index d6afee218b3c78642c550b27ad9dde47a1229791..7dc1b60f977fb4447fa86a47a48d0335270c8f1a 100644 --- a/src/context/service/database/Topology.py +++ b/src/context/service/database/Topology.py @@ -27,15 +27,14 @@ from common.tools.object_factory.Topology import json_topology_id from context.Config import ALLOW_EXPLICIT_ADD_DEVICE_TO_TOPOLOGY, ALLOW_EXPLICIT_ADD_LINK_TO_TOPOLOGY from .models.DeviceModel import DeviceModel from .models.LinkModel import LinkModel -from .models.TopologyModel import TopologyDeviceModel, TopologyLinkModel, TopologyModel , TopologyOpticalLinkModel +from .models.OpticalLinkModel import OpticalLinkModel +from .models.TopologyModel import TopologyDeviceModel, TopologyLinkModel, TopologyModel, TopologyOpticalLinkModel from .uuids.Context import context_get_uuid from .uuids.Device import device_get_uuid from .uuids.Link import link_get_uuid from .uuids.Topology import topology_get_uuid from .Events import notify_event_context, notify_event_topology -from .models.OpticalLinkModel import OpticalLinkModel - LOGGER = logging.getLogger(__name__) def topology_list_ids(db_engine : Engine, request : ContextId) -> TopologyIdList: @@ -79,12 +78,11 @@ def topology_get_details(db_engine : Engine, request : TopologyId) -> TopologyDe _,topology_uuid = topology_get_uuid(request, allow_random=False) def callback(session : Session) -> Optional[Dict]: obj : Optional[TopologyModel] = session.query(TopologyModel)\ - .options(selectinload(TopologyModel.topology_devices, TopologyDeviceModel.device, DeviceModel.endpoints))\ - .options(selectinload(TopologyModel.topology_links, TopologyLinkModel.link, LinkModel.link_endpoints))\ - .options(selectinload(TopologyModel.topology_optical_links, TopologyOpticalLinkModel.optical_link, OpticalLinkModel.opticallink_endpoints))\ - .filter_by(topology_uuid=topology_uuid).one_or_none() + .options(selectinload(TopologyModel.topology_devices, TopologyDeviceModel.device, DeviceModel.endpoints))\ + .options(selectinload(TopologyModel.topology_links, TopologyLinkModel.link, LinkModel.link_endpoints))\ + .options(selectinload(TopologyModel.topology_optical_links, TopologyOpticalLinkModel.optical_link, OpticalLinkModel.opticallink_endpoints))\ + .filter_by(topology_uuid=topology_uuid).one_or_none() #.options(selectinload(DeviceModel.components))\ - return None if obj is None else obj.dump_details() obj = run_transaction(sessionmaker(bind=db_engine), callback) if obj is None: @@ -92,7 +90,7 @@ def topology_get_details(db_engine : Engine, request : TopologyId) -> TopologyDe raw_topology_uuid = '{:s}/{:s}'.format(request.context_id.context_uuid.uuid, request.topology_uuid.uuid) raise NotFoundException('Topology', raw_topology_uuid, extra_details=[ 'context_uuid generated was: {:s}'.format(context_uuid), - 'topology_uuid generated was: {:s}'.format(topology_uuid) + 'topology_uuid generated was: {:s}'.format(topology_uuid), ]) return TopologyDetails(**obj) diff --git a/src/context/service/database/models/ConstraintModel.py b/src/context/service/database/models/ConstraintModel.py index fc56a1145983776f1604a8cc6a6b36cbd12370b3..3eef030fccccbe4e4806f12188161bf97018c5f5 100644 --- a/src/context/service/database/models/ConstraintModel.py +++ b/src/context/service/database/models/ConstraintModel.py @@ -31,6 +31,7 @@ class ConstraintKindEnum(enum.Enum): SLA_LATENCY = 'sla_latency' SLA_AVAILABILITY = 'sla_availability' SLA_ISOLATION = 'sla_isolation' + QOS_PROFILE = 'qos_profile' EXCLUSIONS = 'exclusions' class ServiceConstraintModel(_Base): diff --git a/src/context/service/database/models/DeviceModel.py b/src/context/service/database/models/DeviceModel.py index 5e40b4dbb3388fc14f8f30efdcac90b5bcd55940..0613caba6a433d4440908f4f796c26349f8d9af7 100644 --- a/src/context/service/database/models/DeviceModel.py +++ b/src/context/service/database/models/DeviceModel.py @@ -34,13 +34,11 @@ class DeviceModel(_Base): updated_at = Column(DateTime, nullable=False) #topology_devices = relationship('TopologyDeviceModel', back_populates='device') - config_rules = relationship('DeviceConfigRuleModel', passive_deletes=True) # lazy='joined', back_populates='device' - endpoints = relationship('EndPointModel', passive_deletes=True) # lazy='joined', back_populates='device' - components = relationship('ComponentModel', passive_deletes=True) # lazy='joined', back_populates='device' - controller = relationship('DeviceModel', remote_side=[device_uuid], passive_deletes=True) # lazy='joined', back_populates='device' - - # ------------------- Experimental ----------------------------------- - optical_config= relationship('OpticalConfigModel',passive_deletes=True) + config_rules = relationship('DeviceConfigRuleModel', passive_deletes=True) # lazy='joined', back_populates='device' + endpoints = relationship('EndPointModel', passive_deletes=True) # lazy='joined', back_populates='device' + components = relationship('ComponentModel', passive_deletes=True) # lazy='joined', back_populates='device' + controller = relationship('DeviceModel', remote_side=[device_uuid], passive_deletes=True) # lazy='joined', back_populates='device' + optical_config = relationship('OpticalConfigModel', passive_deletes=True) def dump_id(self) -> Dict: return {'device_uuid': {'uuid': self.device_uuid}} diff --git a/src/context/service/database/models/EndPointModel.py b/src/context/service/database/models/EndPointModel.py index a1bccae5f3cf7d9d5c9703d0f4ee001c2eed81d5..37a03393bd6a571d8587be7f9c345097971d5111 100644 --- a/src/context/service/database/models/EndPointModel.py +++ b/src/context/service/database/models/EndPointModel.py @@ -33,9 +33,9 @@ class EndPointModel(_Base): updated_at = Column(DateTime, nullable=False) endpoint_location = Column(String, nullable=True) - device = relationship('DeviceModel', back_populates='endpoints') # lazy='selectin' - topology = relationship('TopologyModel', lazy='selectin') - optical_link_endpoints = relationship('OpticalLinkEndPointModel', back_populates='endpoint' ) + device = relationship('DeviceModel', back_populates='endpoints') # lazy='selectin' + topology = relationship('TopologyModel', lazy='selectin') + optical_link_endpoints = relationship('OpticalLinkEndPointModel', back_populates='endpoint' ) #link_endpoints = relationship('LinkEndPointModel', back_populates='endpoint' ) #service_endpoints = relationship('ServiceEndPointModel', back_populates='endpoint' ) diff --git a/src/context/service/database/models/OpticalConfig/OpticalConfigModel.py b/src/context/service/database/models/OpticalConfig/OpticalConfigModel.py index eafafaa7c87af29236724de2e73cfde2d9b91543..9545c6a0d1968dcca716f835d10934d4cb8df7e7 100644 --- a/src/context/service/database/models/OpticalConfig/OpticalConfigModel.py +++ b/src/context/service/database/models/OpticalConfig/OpticalConfigModel.py @@ -1,4 +1,4 @@ -# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) +# Copyright 2022-2024 ETSI OSG/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. @@ -12,12 +12,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -import json , logging -from sqlalchemy import Column, String, Integer , ForeignKey, Boolean +import json +from sqlalchemy import Column, String, ForeignKey from sqlalchemy.dialects.postgresql import ARRAY from sqlalchemy.orm import relationship from context.service.database.models._Base import _Base -from .RoadmModel import RoadmTypeModel class OpticalConfigModel(_Base): __tablename__ = 'optical_config' @@ -25,21 +24,16 @@ class OpticalConfigModel(_Base): channel_namespace = Column(String, nullable=True) endpoints = Column(ARRAY(String), nullable=True) type = Column(String,nullable=False) - - # transcievers = Column(ARRAY(String), nullable=True) - # interfaces = Column(String, nullable=True) - - - #channels = relationship("OpticalChannelModel") + + # transcievers = Column(ARRAY(String), nullable=True) + # interfaces = Column(String, nullable=True) + # channels = relationship("OpticalChannelModel") transponders = relationship("TransponderTypeModel") roadms = relationship("RoadmTypeModel") - - + device_uuid = Column(ForeignKey("device.device_uuid",ondelete="CASCADE"),index=True ,nullable=False) - device= relationship("DeviceModel", back_populates='optical_config') - + device = relationship("DeviceModel", back_populates='optical_config') - def dump_id (self ): return { "opticalconfig_uuid":self.opticalconfig_uuid, @@ -64,19 +58,14 @@ class OpticalConfigModel(_Base): obj['trasponder_uuid']=channels['trasponder_uuid'] if 'trasponder_uuid' in channels else None if self.type =="optical-roadm" : - dev=[roadms.dump() for roadms in self.roadms ][0] - + dev = [roadms.dump() for roadms in self.roadms ][0] obj['channels']=dev['channels'] if 'channels' in dev else None obj['roadm_uuid']=dev['roadm_uuid'] if 'roadm_uuid' in dev else None - + if self.type =="openroadm" : - dev=[roadms.dump() for roadms in self.roadms ][0] - + dev = [roadms.dump() for roadms in self.roadms ][0] obj['interfaces']=dev['interfaces'] if 'interfaces' in dev else None obj['roadm_uuid']=dev['roadm_uuid'] if 'roadm_uuid' in dev else None - - - logging.info(f"optical_config_model {obj}") + return obj - diff --git a/src/context/service/database/models/OpticalConfig/RoadmModel.py b/src/context/service/database/models/OpticalConfig/RoadmModel.py index 52e831e73a95437749d9c737c524e4a04f211bbb..fbdf00f1a96c954d04edede58660bc639ef423c9 100644 --- a/src/context/service/database/models/OpticalConfig/RoadmModel.py +++ b/src/context/service/database/models/OpticalConfig/RoadmModel.py @@ -1,5 +1,4 @@ - -# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) +# Copyright 2022-2024 ETSI OSG/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. @@ -19,73 +18,68 @@ from sqlalchemy.dialects.postgresql import ARRAY from sqlalchemy.orm import relationship from context.service.database.models._Base import _Base - - - class RoadmTypeModel (_Base): - - __tablename__ = 'roadm_type' - roadm_uuid = Column(String, primary_key=True) + __tablename__ = 'roadm_type' + roadm_uuid = Column(String, primary_key=True) + circuits = Column(String, nullable=True) + opticalconfig_uuid = Column(ForeignKey('optical_config.opticalconfig_uuid', ondelete='CASCADE'), index=True, nullable=False) + channels = relationship("ChannelModel") + opticalconfig = relationship('OpticalConfigModel', back_populates='roadms') + interfaces = relationship("ORInterfaceModel") - channels = relationship("ChannelModel") - interfaces = relationship ("ORInterfaceModel") - - opticalconfig_uuid = Column(ForeignKey('optical_config.opticalconfig_uuid', ondelete='CASCADE' ),index=True ,nullable=False) - opticalconfig = relationship('OpticalConfigModel', back_populates='roadms') - def dump_id (self): return { - "roadm_uuid":self.roadm_uuid + "roadm_uuid" : self.roadm_uuid } - + def dump (self): i=[interface.dump() for interface in self.interfaces] logging.info(f"roamd_type_model {i}") return { - "channels" : [channel.dump() for channel in self.channels], - "roadm_uuid" : self.dump_id(), - "interfaces" :[interface.dump() for interface in self.interfaces] + "channels" : [channel.dump() for channel in self.channels], + "roadm_uuid" : self.dump_id(), + "interfaces" : [interface.dump() for interface in self.interfaces] } class ChannelModel(_Base): - __tablename__ = 'channel' - channel_uuid = Column(String, primary_key=True) - band_name = Column (String,nullable=True) - lower_frequency = Column(Integer, nullable=True) - upper_frequency = Column(Integer, nullable=True) - channel_index = Column(String , nullable=True) - status = Column(String , nullable=True) - src_port = Column(String, nullable=True) - dest_port = Column(String, nullable=True) - - type = Column(String, nullable=False) - optical_band_parent = Column(String, nullable=True) - - roadm_uuid = Column(ForeignKey('roadm_type.roadm_uuid', ondelete='CASCADE' ),nullable=False) - roadm = relationship('RoadmTypeModel',back_populates='channels') - # opticalconfig_uuid = Column(ForeignKey('optical_config.opticalconfig_uuid', ondelete='CASCADE' ), primary_key=True) - # opticalconfig = relationship('OpticalConfigModel', back_populates='channels') + __tablename__ = 'channel' + + channel_uuid = Column(String, primary_key=True) + band_name = Column(String, nullable=True) + lower_frequency = Column(Integer, nullable=True) + upper_frequency = Column(Integer, nullable=True) + channel_index = Column(String, nullable=True) + status = Column(String, nullable=True) + src_port = Column(String, nullable=True) + dest_port = Column(String, nullable=True) + type = Column(String, nullable=False) + optical_band_parent = Column(String, nullable=True) + roadm_uuid = Column(ForeignKey('roadm_type.roadm_uuid', ondelete='CASCADE'), nullable=False) + + roadm = relationship('RoadmTypeModel',back_populates='channels') + + # opticalconfig_uuid = Column(ForeignKey('optical_config.opticalconfig_uuid', ondelete='CASCADE'), primary_key=True) + # opticalconfig = relationship('OpticalConfigModel', back_populates='channels') + def dump_id (self ): return { - "channel_uuid":self.channel_uuid + "channel_uuid": self.channel_uuid } def dump(self): return { - "band_name" :self.band_name, - "lower_frequency" : self.lower_frequency, - "upper_frequency" : self.upper_frequency, - "type" : self.type, - "src_port" : self.src_port, - "dest_port" : self.dest_port, - - "status":self.status, - "optical_band_parent":self.optical_band_parent, - "channel_index":self.channel_index + "band_name" : self.band_name, + "lower_frequency" : self.lower_frequency, + "upper_frequency" : self.upper_frequency, + "type" : self.type, + "src_port" : self.src_port, + "dest_port" : self.dest_port, + "status" : self.status, + "optical_band_parent" : self.optical_band_parent, + "channel_index" : self.channel_index, } class ORInterfaceModel (_Base): - __tablename__ = 'open_roadm_interface' interface_uuid = Column(String, primary_key=True) name = Column(String, nullable=False ,unique=True ) @@ -118,4 +112,4 @@ class ORInterfaceModel (_Base): "frequency" : self.frequency, "width" : self.width - } \ No newline at end of file + } diff --git a/src/context/service/database/models/OpticalConfig/TransponderModel.py b/src/context/service/database/models/OpticalConfig/TransponderModel.py index 9a07536b1242711b2dd608579cd492ef8e857663..33e509d354b257d380d61c9795e86fdce7a68348 100644 --- a/src/context/service/database/models/OpticalConfig/TransponderModel.py +++ b/src/context/service/database/models/OpticalConfig/TransponderModel.py @@ -1,5 +1,4 @@ - -# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) +# Copyright 2022-2024 ETSI OSG/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. @@ -13,66 +12,61 @@ # See the License for the specific language governing permissions and # limitations under the License. -import json , logging -from sqlalchemy import Column, String, Integer , ForeignKey, Boolean +import json +from sqlalchemy import Column, String, Integer , ForeignKey from sqlalchemy.dialects.postgresql import ARRAY from sqlalchemy.orm import relationship from context.service.database.models._Base import _Base +class TransponderTypeModel (_Base): + __tablename__ = 'transponder_type' + transponder_uuid = Column(String, primary_key=True) + transcievers = Column(ARRAY(String), nullable=True) + interfaces = Column(String, nullable=True) + opticalconfig_uuid = Column(ForeignKey('optical_config.opticalconfig_uuid', ondelete='CASCADE'), index=True, nullable=False) + channels = relationship("OpticalChannelModel") + opticalconfig = relationship('OpticalConfigModel', back_populates='transponders') - -class TransponderTypeModel (_Base): - - __tablename__ = 'transponder_type' - transponder_uuid = Column(String, primary_key=True) - - transcievers = Column(ARRAY(String), nullable=True) - interfaces = Column(String, nullable=True) - channels = relationship("OpticalChannelModel") - - opticalconfig_uuid = Column(ForeignKey('optical_config.opticalconfig_uuid', ondelete='CASCADE' ),index=True ,nullable=False) - opticalconfig = relationship('OpticalConfigModel', back_populates='transponders') - def dump_id (self): return { - "transponder_uuid":self.transponder_uuid + "transponder_uuid": self.transponder_uuid } - + def dump (self): return { - "channels" : [channel.dump() for channel in self.channels], - "transceivers" : {"transceiver": [transciever for transciever in self.transcievers]}, - "interfaces" : {"interface":json.loads(self.interfaces) if self.interfaces else ''}, - "trasponder_uuid" : self.dump_id() + "channels" : [channel.dump() for channel in self.channels], + "transceivers" : {"transceiver": [transciever for transciever in self.transcievers]}, + "interfaces" : {"interface":json.loads(self.interfaces) if self.interfaces else ''}, + "trasponder_uuid" : self.dump_id() } class OpticalChannelModel(_Base): - __tablename__ = 'optical_channel' - channel_uuid = Column(String, primary_key=True) - - channel_name = Column (String,nullable=True) - frequency = Column(Integer, nullable=True) - operational_mode = Column(Integer, nullable=True) - status = Column(String , nullable=True) - target_output_power = Column(String, nullable=True) - - transponder_uuid = Column(ForeignKey('transponder_type.transponder_uuid', ondelete='CASCADE' ),nullable=False) - transponder = relationship('TransponderTypeModel',back_populates='channels') - # opticalconfig_uuid = Column(ForeignKey('optical_config.opticalconfig_uuid', ondelete='CASCADE' ), primary_key=True) - # opticalconfig = relationship('OpticalConfigModel', back_populates='channels') + __tablename__ = 'optical_channel' + + channel_uuid = Column(String, primary_key=True) + channel_name = Column(String, nullable=True) + frequency = Column(Integer, nullable=True) + operational_mode = Column(Integer, nullable=True) + status = Column(String, nullable=True) + target_output_power = Column(String, nullable=True) + transponder_uuid = Column(ForeignKey('transponder_type.transponder_uuid', ondelete='CASCADE'), nullable=False) + transponder = relationship('TransponderTypeModel', back_populates='channels') + + # opticalconfig_uuid = Column(ForeignKey('optical_config.opticalconfig_uuid', ondelete='CASCADE'), primary_key=True) + # opticalconfig = relationship('OpticalConfigModel', back_populates='channels') + def dump_id (self ): return { - "channel_uuid":self.channel_uuid + "channel_uuid": self.channel_uuid } def dump(self): return { - "name" :{'index':self.channel_name}, - "frequency" : self.frequency, - "target-output-power" : self.target_output_power, - "operational-mode" : self.operational_mode, - "status":self.status + "name" : {'index':self.channel_name}, + "frequency" : self.frequency, + "target-output-power" : self.target_output_power, + "operational-mode" : self.operational_mode, + "status" : self.status, } - diff --git a/src/context/service/database/models/OpticalConfig/__init__.py b/src/context/service/database/models/OpticalConfig/__init__.py index 38d04994fb0fa1951fb465bc127eb72659dc2eaf..bbfc943b68af13a11e562abbc8680ade71db8f02 100644 --- a/src/context/service/database/models/OpticalConfig/__init__.py +++ b/src/context/service/database/models/OpticalConfig/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) +# Copyright 2022-2024 ETSI OSG/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. diff --git a/src/context/service/database/models/OpticalLinkModel.py b/src/context/service/database/models/OpticalLinkModel.py index c23a93c6414422eb5de89822cc906af5c25e27d6..6db1b316160aeb3f01d6d70b74338ba67d9b528a 100644 --- a/src/context/service/database/models/OpticalLinkModel.py +++ b/src/context/service/database/models/OpticalLinkModel.py @@ -1,4 +1,4 @@ -# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) +# Copyright 2022-2024 ETSI OSG/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. @@ -13,20 +13,12 @@ # limitations under the License. - - -import operator -from sqlalchemy import CheckConstraint, Column, DateTime, Float, ForeignKey, Integer, String ,Boolean +from sqlalchemy import Column, DateTime, ForeignKey, Integer, String ,Boolean from sqlalchemy.dialects.postgresql import UUID -from sqlalchemy.types import PickleType , TypeDecorator ,Integer from sqlalchemy.orm import relationship -import json,logging from typing import Dict from ._Base import _Base from .Slot import C_Slot ,S_Slot , L_Slot -from common.tools.object_factory.OpticalLink import order_dict - - class OpticalLinkModel(_Base): __tablename__ = 'opticallink' @@ -44,52 +36,39 @@ class OpticalLinkModel(_Base): c_slots = Column (C_Slot,nullable=True) l_slots = Column (L_Slot,nullable=True) s_slots = Column (S_Slot,nullable=True) - opticallink_endpoints = relationship("OpticalLinkEndPointModel") + opticallink_endpoints = relationship('OpticalLinkEndPointModel') topology_optical_links = relationship('TopologyOpticalLinkModel', back_populates='optical_link') - - - - def dump_id(self) -> Dict: return {'link_uuid': {'uuid': self.opticallink_uuid}} def dump(self) -> Dict: - result = { - 'link_id' : self.dump_id(), 'name' : self.name, - 'optical_details' :{ - - 'length' : self.length, - "src_port" : self.src_port, - "dst_port" : self.dst_port, - "local_peer_port" : self.local_peer_port, - "remote_peer_port" : self.remote_peer_port, - "used" : self.used, - "c_slots" : order_dict(self.c_slots) if self.c_slots is not None else {} , - "l_slots" : order_dict(self.l_slots) if self.l_slots is not None else {}, - "s_slots" : order_dict(self.s_slots) if self.s_slots is not None else {} - }, - "link_endpoint_ids" : [optical_endpoint.endpoint.dump_id() for optical_endpoint in self.opticallink_endpoints] - + 'optical_details' : { + 'length' : self.length, + 'src_port' : self.src_port, + 'dst_port' : self.dst_port, + 'local_peer_port' : self.local_peer_port, + 'remote_peer_port' : self.remote_peer_port, + 'used' : self.used, + 'c_slots' : self.c_slots if self.c_slots is not None else {}, + 'l_slots' : self.l_slots if self.l_slots is not None else {}, + 's_slots' : self.s_slots if self.s_slots is not None else {}, + }, + 'link_endpoint_ids' : [ + optical_endpoint.endpoint.dump_id() + for optical_endpoint in self.opticallink_endpoints + ], } - return result - - - class OpticalLinkEndPointModel(_Base): __tablename__ = 'opticallink_endpoint' - link_uuid = Column(ForeignKey('opticallink.opticallink_uuid', ondelete='CASCADE' ), primary_key=True) - endpoint_uuid = Column(ForeignKey('endpoint.endpoint_uuid', ondelete='RESTRICT'), primary_key=True, index=True) - - - optical_link = relationship('OpticalLinkModel', back_populates='opticallink_endpoints') - endpoint = relationship('EndPointModel', lazy='selectin') - - + link_uuid = Column(ForeignKey('opticallink.opticallink_uuid', ondelete='CASCADE' ), primary_key=True) + endpoint_uuid = Column(ForeignKey('endpoint.endpoint_uuid', ondelete='RESTRICT'), primary_key=True, index=True) + optical_link = relationship('OpticalLinkModel', back_populates='opticallink_endpoints') + endpoint = relationship('EndPointModel', lazy='selectin') diff --git a/src/context/service/database/models/Slot.py b/src/context/service/database/models/Slot.py index 4daca913a72f803167ba52fa5d7d9abfca73390c..3d8602bd40464eafa8a6234881b100c73134bed7 100644 --- a/src/context/service/database/models/Slot.py +++ b/src/context/service/database/models/Slot.py @@ -1,4 +1,4 @@ -# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) +# Copyright 2022-2024 ETSI OSG/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. @@ -12,75 +12,51 @@ # See the License for the specific language governing permissions and # limitations under the License. - -from common.tools.object_factory.OpticalLink import order_dict -import logging - -from sqlalchemy.types import PickleType , TypeDecorator ,Integer - - +from sqlalchemy.types import TypeDecorator, Integer class SlotType(TypeDecorator): - impl = Integer def process_bind_param(self, value, dialect): - if value is not None: - - value =order_dict(value) - - bin_num="0b" + bin_num = "0b" for i,(key,val) in enumerate(value.items()): bin_num =bin_num + f"{val}" - int_num = int(bin_num,2) - return int_num def process_result_value(self, value, dialect): - if value is not None: - slot= dict() + slot = dict() bin_num = bin(value) - sliced_num=bin_num[2:] + sliced_num = bin_num[2:] for i in range(len(sliced_num)): slot[str(i+1)]=int(sliced_num[i]) return slot - - -class C_Slot (SlotType): - start_point=0 - - +class C_Slot(SlotType): + start_point = 0 + def process_result_value(self, value, dialect): - if value is not None: - slot= dict() + slot = dict() bin_num = bin(value) - sliced_num=bin_num[2:] + sliced_num = bin_num[2:] if (len(sliced_num) != 20) : for i in range(0,20 - len(sliced_num)): - sliced_num='0'+sliced_num - + sliced_num = '0' + sliced_num for i in range(len(sliced_num)): slot[str(self.start_point+i+1)]=int(sliced_num[i]) - return slot - - -class L_Slot (SlotType): - start_point=100 +class L_Slot (SlotType): + start_point = 100 - def process_result_value(self, value, dialect): - if value is not None: - slot= dict() + slot = dict() bin_num = bin(value) - sliced_num=bin_num[2:] + sliced_num = bin_num[2:] if (len(sliced_num) != 20) : for i in range(0,20 - len(sliced_num)): sliced_num='0'+sliced_num @@ -89,11 +65,9 @@ class L_Slot (SlotType): return slot class S_Slot (SlotType): - start_point=500 - - + start_point = 500 + def process_result_value(self, value, dialect): - if value is not None: slot= dict() bin_num = bin(value) diff --git a/src/context/service/database/models/TopologyModel.py b/src/context/service/database/models/TopologyModel.py index 41a9b5aa01aa8823ecd6221892dfbfae9f7b4ca1..cd731ed60efd6be266dea4bf3c9847bbceb0370e 100644 --- a/src/context/service/database/models/TopologyModel.py +++ b/src/context/service/database/models/TopologyModel.py @@ -27,12 +27,10 @@ class TopologyModel(_Base): created_at = Column(DateTime, nullable=False) updated_at = Column(DateTime, nullable=False) - context = relationship('ContextModel', back_populates='topologies', lazy='selectin') - topology_devices = relationship('TopologyDeviceModel') # back_populates='topology' - topology_links = relationship('TopologyLinkModel' ) # back_populates='topology' - - #-------------------------- Experimental --------------------------- - topology_optical_links= relationship("TopologyOpticalLinkModel") + context = relationship('ContextModel', back_populates='topologies', lazy='selectin') + topology_devices = relationship('TopologyDeviceModel') # back_populates='topology' + topology_links = relationship('TopologyLinkModel' ) # back_populates='topology' + topology_optical_links = relationship("TopologyOpticalLinkModel") def dump_id(self) -> Dict: return { @@ -42,12 +40,11 @@ class TopologyModel(_Base): def dump(self) -> Dict: return { - 'topology_id': self.dump_id(), - 'name' : self.topology_name, - 'device_ids' : [{'device_uuid': {'uuid': td.device_uuid}} for td in self.topology_devices], - 'link_ids' : [{'link_uuid' : {'uuid': tl.link_uuid }} for tl in self.topology_links ], - 'optical_link_ids' : [{'link_uuid' : {'uuid': to.optical_link_uuid }} for to in self.topology_optical_links ], - + 'topology_id' : self.dump_id(), + 'name' : self.topology_name, + 'device_ids' : [{'device_uuid': {'uuid': td.device_uuid }} for td in self.topology_devices ], + 'link_ids' : [{'link_uuid' : {'uuid': tl.link_uuid }} for tl in self.topology_links ], + 'optical_link_ids': [{'link_uuid' : {'uuid': to.optical_link_uuid}} for to in self.topology_optical_links], } def dump_details(self) -> Dict: @@ -64,11 +61,11 @@ class TopologyModel(_Base): for ol in self.topology_optical_links ] return { - 'topology_id': self.dump_id(), - 'name' : self.topology_name, - 'devices' : devices, - 'links' : links, - 'optical_links':optical_links + 'topology_id' : self.dump_id(), + 'name' : self.topology_name, + 'devices' : devices, + 'links' : links, + 'optical_links': optical_links, } class TopologyDeviceModel(_Base): @@ -94,8 +91,8 @@ class TopologyLinkModel(_Base): class TopologyOpticalLinkModel(_Base): __tablename__ = 'topology_optical_link' - topology_uuid = Column(ForeignKey('topology.topology_uuid', ondelete='RESTRICT'), primary_key=True, index=True) - optical_link_uuid = Column(ForeignKey('opticallink.opticallink_uuid', ondelete='CASCADE' ), primary_key=True, index=True) + topology_uuid = Column(ForeignKey('topology.topology_uuid', ondelete='RESTRICT'), primary_key=True, index=True) + optical_link_uuid = Column(ForeignKey('opticallink.opticallink_uuid', ondelete='CASCADE' ), primary_key=True, index=True) - topology = relationship('TopologyModel', lazy='selectin', viewonly=True) # back_populates='topology_optical_links' - optical_link = relationship('OpticalLinkModel', lazy='selectin') # back_populates='topology_optical_links' + topology = relationship('TopologyModel', lazy='selectin', viewonly=True) # back_populates='topology_optical_links' + optical_link = relationship('OpticalLinkModel', lazy='selectin') # back_populates='topology_optical_links' diff --git a/src/context/service/database/uuids/EndPoint.py b/src/context/service/database/uuids/EndPoint.py index 9653324e5034e84cdbf834cb8a813c927a3a3c59..b8c97a1bbe584d927d8d5bab0ef9036794f3e9a8 100644 --- a/src/context/service/database/uuids/EndPoint.py +++ b/src/context/service/database/uuids/EndPoint.py @@ -18,26 +18,21 @@ from common.method_wrappers.ServiceExceptions import InvalidArgumentsException from ._Builder import get_uuid_from_string, get_uuid_random from .Device import device_get_uuid from .Topology import topology_get_uuid -import logging def endpoint_get_uuid( endpoint_id : EndPointId, endpoint_name : str = '', allow_random : bool = False ) -> Tuple[str, str, str]: - device_uuid = device_get_uuid(endpoint_id.device_id, allow_random=False) _,topology_uuid = topology_get_uuid(endpoint_id.topology_id, allow_random=False, allow_default=True) raw_endpoint_uuid = endpoint_id.endpoint_uuid.uuid if len(raw_endpoint_uuid) > 0: prefix_for_name = '{:s}/{:s}'.format(topology_uuid, device_uuid) - return topology_uuid, device_uuid, get_uuid_from_string(raw_endpoint_uuid, prefix_for_name=prefix_for_name) if len(endpoint_name) > 0: - prefix_for_name = '{:s}/{:s}'.format(topology_uuid, device_uuid) return topology_uuid, device_uuid, get_uuid_from_string(endpoint_name, prefix_for_name=prefix_for_name) if allow_random: - return topology_uuid, device_uuid, get_uuid_random() raise InvalidArgumentsException([ diff --git a/src/context/service/database/uuids/OpticalConfig.py b/src/context/service/database/uuids/OpticalConfig.py index 398e8d73157c3a9041a4044a3cf500784825a8f9..abc1bf67f7f534932316c60639d1626ca86fc06f 100644 --- a/src/context/service/database/uuids/OpticalConfig.py +++ b/src/context/service/database/uuids/OpticalConfig.py @@ -1,43 +1,46 @@ +# Copyright 2022-2024 ETSI OSG/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. from common.method_wrappers.ServiceExceptions import InvalidArgumentsException -from ._Builder import get_uuid_from_string, get_uuid_random from common.proto.context_pb2 import DeviceId +from ._Builder import get_uuid_from_string, get_uuid_random def channel_get_uuid( - channel_name :str , device_id:str, allow_random : bool = False + channel_name : str , device_id : str, allow_random : bool = False ) -> str: - - if len(channel_name) > 0: return get_uuid_from_string(channel_name) + device_id if allow_random: return get_uuid_random() raise InvalidArgumentsException([ ('channel uuid', channel_name), - ], extra_details=['Channel name is required to produce a channel UUID']) def interface_get_uuid( interface_name :str , allow_random : bool = False ) -> str: - - if len(interface_name) > 0: return get_uuid_from_string(interface_name) if allow_random: return get_uuid_random() raise InvalidArgumentsException([ ('interface uuid', interface_name), - ], extra_details=['interface name is required to produce a interface UUID']) - - def transponder_get_uuid( - opticalconfig_id :str , allow_random : bool = False + opticalconfig_id : str, allow_random : bool = False ) -> str: - - if opticalconfig_id is not None: return get_uuid_from_string(f"{opticalconfig_id}-transponder") if allow_random: return get_uuid_random() @@ -46,30 +49,27 @@ def transponder_get_uuid( ('transponder uuid', opticalconfig_id), ], extra_details=['opticalconfig id is required to produce a transponder UUID']) - def roadm_get_uuid( - opticalconfig_id :str , allow_random : bool = False + opticalconfig_id : str, allow_random : bool = False ) -> str: - - if opticalconfig_id is not None: return get_uuid_from_string(f"{opticalconfig_id}-roadm") - + if allow_random: return get_uuid_random() raise InvalidArgumentsException([ ('roadm uuid', opticalconfig_id), ], extra_details=['opticalconfig id is required to produce a roadm UUID']) - - -def opticalconfig_get_uuid ( device_id: DeviceId, allow_random : bool = False) -> str : +def opticalconfig_get_uuid( + device_id : DeviceId, allow_random : bool = False +) -> str: device_uuid = device_id.device_uuid.uuid if (len(device_uuid)>0): return get_uuid_from_string(f"{device_uuid}_opticalconfig") if allow_random: return get_uuid_random() + raise InvalidArgumentsException([ ('DeviceId ', device_id), - - ], extra_details=['device_id is required to produce a OpticalConfig UUID']) \ No newline at end of file + ], extra_details=['device_id is required to produce a OpticalConfig UUID']) diff --git a/src/context/service/database/uuids/OpticalEndPoint.py b/src/context/service/database/uuids/OpticalEndPoint.py index b31bc7d71ad10772de049be66dd8d51eaea86141..fedafd6f470af174a6c4701e330f93fea00a5a3f 100644 --- a/src/context/service/database/uuids/OpticalEndPoint.py +++ b/src/context/service/database/uuids/OpticalEndPoint.py @@ -1,4 +1,4 @@ -# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) +# Copyright 2022-2024 ETSI OSG/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. @@ -17,26 +17,19 @@ from common.proto.context_pb2 import EndPointId from common.method_wrappers.ServiceExceptions import InvalidArgumentsException from ._Builder import get_uuid_from_string, get_uuid_random from .Device import device_get_uuid -from .Topology import topology_get_uuid -import logging def optical_endpoint_get_uuid( endpoint_id : EndPointId, endpoint_name : str = '', allow_random : bool = False ) -> Tuple[str, str, str]: device_uuid = device_get_uuid(endpoint_id.device_id, allow_random=False) - raw_endpoint_uuid = endpoint_id.endpoint_uuid.uuid - if len(raw_endpoint_uuid) > 0: prefix_for_name = '{:s}'.format( device_uuid) - logging.info(f" raw_endpoint uuid {raw_endpoint_uuid} and endpoint {get_uuid_from_string(raw_endpoint_uuid, prefix_for_name=prefix_for_name)}") return device_uuid, get_uuid_from_string(raw_endpoint_uuid, prefix_for_name=prefix_for_name) if len(endpoint_name) > 0: - prefix_for_name = '{:s}'.format( device_uuid) return device_uuid, get_uuid_from_string(endpoint_name, prefix_for_name=prefix_for_name) if allow_random: - return device_uuid, get_uuid_random() raise InvalidArgumentsException([ diff --git a/src/context/service/database/uuids/OpticalLink.py b/src/context/service/database/uuids/OpticalLink.py index 0caead511d470174796b0fcf6686dd2a83e0b0b9..152686423aa808194f0582075557e6133e405071 100644 --- a/src/context/service/database/uuids/OpticalLink.py +++ b/src/context/service/database/uuids/OpticalLink.py @@ -1,21 +1,32 @@ +# Copyright 2022-2024 ETSI OSG/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. -from common.proto.context_pb2 import LinkId from common.method_wrappers.ServiceExceptions import InvalidArgumentsException +from common.proto.context_pb2 import LinkId from ._Builder import get_uuid_from_string, get_uuid_random -optical_detail_sp="Optical_link_detail" +optical_detail_sp = "Optical_link_detail" + def opticaldetail_get_uuid( link_id : LinkId,allow_random=False ) -> str: link_uuid = link_id.link_uuid.uuid - if len(link_uuid) > 0: str_uuid=f"{link_uuid}{optical_detail_sp}" return get_uuid_from_string(str_uuid) - - if allow_random: return get_uuid_random() + if allow_random: return get_uuid_random() raise InvalidArgumentsException([ ('link_id.link_uuid.uuid', link_uuid), - ], extra_details=['At least one is required to produce a Optical Link Detail UUID']) diff --git a/src/context/service/database/uuids/_Builder.py b/src/context/service/database/uuids/_Builder.py index df5791b382b36d80ab67ee22ecc840acda4a9d69..39c98de69d577ce2722693e57c4ee678124f9e30 100644 --- a/src/context/service/database/uuids/_Builder.py +++ b/src/context/service/database/uuids/_Builder.py @@ -14,7 +14,7 @@ from typing import Optional, Union from uuid import UUID, uuid4, uuid5 -import logging + # Generate a UUIDv5-like from the SHA-1 of "TFS" and no namespace to be used as the NAMESPACE for all # the context UUIDs generated. For efficiency purposes, the UUID is hardcoded; however, it is produced # using the following code: @@ -32,12 +32,10 @@ def get_uuid_from_string(str_uuid_or_name : Union[str, UUID], prefix_for_name : raise Exception(MSG.format(str(repr(str_uuid_or_name)))) try: # try to parse as UUID - return str(UUID(str_uuid_or_name)) except: # pylint: disable=bare-except # produce a UUID within TFS namespace from parameter if prefix_for_name is not None: - str_uuid_or_name = '{:s}/{:s}'.format(prefix_for_name, str_uuid_or_name) return str(uuid5(NAMESPACE_TFS, str_uuid_or_name)) diff --git a/src/context/tests/conftest.py b/src/context/tests/conftest.py index 905c87c3179aec400e35d12c4d0c5ddbcc21529f..108814c58c7d1f641c3fbcd5dc13a7c7f7159f48 100644 --- a/src/context/tests/conftest.py +++ b/src/context/tests/conftest.py @@ -18,8 +18,9 @@ from _pytest.terminal import TerminalReporter from typing import Tuple from common.Constants import ServiceNameEnum from common.Settings import ( - ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC, ENVVAR_SUFIX_SERVICE_PORT_HTTP, get_env_var_name, - get_service_port_grpc, get_service_port_http) + ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC, + get_env_var_name, get_service_port_grpc +) from common.message_broker.Factory import get_messagebroker_backend from common.message_broker.MessageBroker import MessageBroker from common.method_wrappers.Decorator import MetricsPool @@ -30,11 +31,9 @@ from context.service.database.models._Base import rebuild_database LOCAL_HOST = '127.0.0.1' GRPC_PORT = 10000 + int(get_service_port_grpc(ServiceNameEnum.CONTEXT)) # avoid privileged ports -HTTP_PORT = 10000 + int(get_service_port_http(ServiceNameEnum.CONTEXT)) # avoid privileged ports os.environ[get_env_var_name(ServiceNameEnum.CONTEXT, ENVVAR_SUFIX_SERVICE_HOST )] = str(LOCAL_HOST) os.environ[get_env_var_name(ServiceNameEnum.CONTEXT, ENVVAR_SUFIX_SERVICE_PORT_GRPC)] = str(GRPC_PORT) -os.environ[get_env_var_name(ServiceNameEnum.CONTEXT, ENVVAR_SUFIX_SERVICE_PORT_HTTP)] = str(HTTP_PORT) @pytest.fixture(scope='session') def context_db_mb(request) -> Tuple[sqlalchemy.engine.Engine, MessageBroker]: # pylint: disable=unused-argument diff --git a/src/device/Dockerfile b/src/device/Dockerfile index 42bf4335cc6b0c6337c166dae8680e18d46d1360..31dffddc40a6c9dc3dca8f0f155ac543fd10b12d 100644 --- a/src/device/Dockerfile +++ b/src/device/Dockerfile @@ -16,9 +16,24 @@ FROM python:3.9-slim # Install dependencies RUN apt-get --yes --quiet --quiet update && \ - apt-get --yes --quiet --quiet install wget g++ git && \ + apt-get --yes --quiet --quiet install wget g++ git build-essential cmake libpcre2-dev python3-dev python3-cffi && \ rm -rf /var/lib/apt/lists/* +# Download, build and install libyang. Note that APT package is outdated +# - Ref: https://github.com/CESNET/libyang +# - Ref: https://github.com/CESNET/libyang-python/ +RUN mkdir -p /var/libyang +RUN git clone https://github.com/CESNET/libyang.git /var/libyang +WORKDIR /var/libyang +RUN git fetch +RUN git checkout v2.1.148 +RUN mkdir -p /var/libyang/build +WORKDIR /var/libyang/build +RUN cmake -D CMAKE_BUILD_TYPE:String="Release" .. +RUN make +RUN make install +RUN ldconfig + # Set Python to show logs as they occur ENV PYTHONUNBUFFERED=0 @@ -62,17 +77,30 @@ RUN python3 -m pip install -r requirements.txt # Add component files into working directory WORKDIR /var/teraflow +COPY src/device/. device/ COPY src/context/__init__.py context/__init__.py COPY src/context/client/. context/client/ COPY src/monitoring/__init__.py monitoring/__init__.py COPY src/monitoring/client/. monitoring/client/ -COPY src/device/. device/ +# Clone test mock tools RUN mkdir -p tests/tools/mock_ietf_actn_sdn_ctrl RUN touch tests/__init__.py RUN touch tests/tools/__init__.py RUN touch tests/tools/mock_ietf_actn_sdn_ctrl/__init__.py COPY src/tests/tools/mock_ietf_actn_sdn_ctrl/. tests/tools/mock_ietf_actn_sdn_ctrl/ +# Clone OpenConfig YANG models +RUN mkdir -p /var/teraflow/device/service/drivers/gnmi_openconfig/git/openconfig/public +RUN mkdir -p /tmp/openconfig +RUN git clone https://github.com/openconfig/public.git /tmp/openconfig +WORKDIR /tmp/openconfig +RUN git fetch +RUN git checkout v4.4.0 +RUN mv /tmp/openconfig/release /var/teraflow/device/service/drivers/gnmi_openconfig/git/openconfig/public +RUN mv /tmp/openconfig/third_party /var/teraflow/device/service/drivers/gnmi_openconfig/git/openconfig/public +RUN rm -rf /tmp/openconfig +WORKDIR /var/teraflow + # Start the service ENTRYPOINT ["python", "-m", "device.service"] diff --git a/src/device/client/DeviceClient.py b/src/device/client/DeviceClient.py index 3fea0276a8663e701239da12ce68257ea0c02f01..8397b89b8c43917a5a22dee2ed3ad5ec0d105aae 100644 --- a/src/device/client/DeviceClient.py +++ b/src/device/client/DeviceClient.py @@ -15,12 +15,16 @@ import grpc, logging from common.Constants import ServiceNameEnum from common.Settings import get_service_host, get_service_port_grpc -from common.proto.context_pb2 import Device, DeviceConfig, DeviceId, Empty,OpticalConfig,OpticalConfigId ,OpticalConfigList +from common.proto.context_pb2 import ( + Device, DeviceConfig, DeviceId, Empty, + OpticalConfig, OpticalConfigId, OpticalConfigList +) from common.proto.device_pb2 import MonitoringSettings from common.proto.device_pb2_grpc import DeviceServiceStub +from common.proto.optical_device_pb2_grpc import OpenConfigServiceStub from common.tools.client.RetryDecorator import retry, delay_exponential from common.tools.grpc.Tools import grpc_message_to_json_string -from common.proto.optical_device_pb2_grpc import OpenConfigServiceStub + LOGGER = logging.getLogger(__name__) MAX_RETRIES = 15 DELAY_FUNCTION = delay_exponential(initial=0.01, increment=2.0, maximum=5.0) @@ -41,12 +45,13 @@ class DeviceClient: def connect(self): self.channel = grpc.insecure_channel(self.endpoint) self.stub = DeviceServiceStub(self.channel) - self.openconfig_stub=OpenConfigServiceStub(self.channel) + self.openconfig_stub = OpenConfigServiceStub(self.channel) def close(self): if self.channel is not None: self.channel.close() self.channel = None self.stub = None + self.openconfig_stub = None @RETRY_DECORATOR def AddDevice(self, request : Device) -> DeviceId: @@ -82,23 +87,21 @@ class DeviceClient: response = self.stub.MonitorDeviceKpi(request) LOGGER.debug('MonitorDeviceKpi result: {:s}'.format(grpc_message_to_json_string(response))) return response - + def ConfigureOpticalDevice(self, request : OpticalConfig) -> OpticalConfigId: LOGGER.debug('ConfigureOpticalDevice request: {:s}'.format(grpc_message_to_json_string(request))) response = self.openconfig_stub.ConfigureOpticalDevice(request) LOGGER.debug('ConfigureOpticalDevice result: {:s}'.format(grpc_message_to_json_string(response))) return response - + def GetDeviceConfiguration(self, request : OpticalConfigList) -> Empty: LOGGER.debug('ConfigureOpticalDevice request: {:s}'.format(grpc_message_to_json_string(request))) response = self.openconfig_stub.GetDeviceConfiguration(request) LOGGER.debug('ConfigureOpticalDevice result: {:s}'.format(grpc_message_to_json_string(response))) return response - + def DisableOpticalDevice(self, request : OpticalConfig) -> Empty: LOGGER.debug('DisableOpticalDevice request: {:s}'.format(grpc_message_to_json_string(request))) response = self.openconfig_stub.DisableOpticalDevice(request) LOGGER.debug('DisableOpticalDevice result: {:s}'.format(grpc_message_to_json_string(response))) return response - - diff --git a/src/device/requirements.in b/src/device/requirements.in index bf5e6a2b3128f438a7c044c3f3cf9ee393de2265..a4d818b52b494f2ef6cc0938d69ddb133ab40859 100644 --- a/src/device/requirements.in +++ b/src/device/requirements.in @@ -12,9 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. - anytree==2.8.0 APScheduler==3.10.1 +bitarray==2.8.* cryptography==36.0.2 deepdiff==6.7.* deepmerge==1.1.* @@ -22,26 +22,27 @@ deepmerge==1.1.* Flask==2.1.3 Flask-HTTPAuth==4.5.0 Flask-RESTful==0.3.9 +ipaddress Jinja2==3.0.3 -numpy<2.0.0 +libyang==2.8.0 +macaddress ncclient==0.6.15 +numpy<2.0.0 p4runtime==1.3.0 pandas==1.5.* paramiko==2.9.2 +pyang==2.6.* +git+https://github.com/robshakir/pyangbind.git python-json-logger==2.0.2 #pytz==2021.3 #redis==4.1.2 requests==2.27.1 requests-mock==1.9.3 -xmltodict==0.12.0 tabulate -ipaddress -macaddress -yattag -pyang==2.6.0 -git+https://github.com/robshakir/pyangbind.git websockets==10.4 werkzeug==2.3.7 +xmltodict==0.12.0 +yattag # pip's dependency resolver does not take into account installed packages. # p4runtime does not specify the version of grpcio/protobuf it needs, so it tries to install latest one diff --git a/src/device/service/DeviceServiceServicerImpl.py b/src/device/service/DeviceServiceServicerImpl.py index 89687f58dbef328c0b2d53c34f0021c6ced501ce..6e6fa6a9311751888d51e053e323a63d810dad4e 100644 --- a/src/device/service/DeviceServiceServicerImpl.py +++ b/src/device/service/DeviceServiceServicerImpl.py @@ -33,9 +33,11 @@ from .driver_api.DriverInstanceCache import DriverInstanceCache, get_driver from .monitoring.MonitoringLoops import MonitoringLoops from .ErrorMessages import ERROR_MISSING_DRIVER, ERROR_MISSING_KPI from .Tools import ( - check_connect_rules, check_no_endpoints, compute_rules_to_add_delete, configure_rules, deconfigure_rules, - get_device_controller_uuid, populate_config_rules, populate_endpoint_monitoring_resources, populate_endpoints, - populate_initial_config_rules, subscribe_kpi, unsubscribe_kpi, update_endpoints) + check_connect_rules, check_no_endpoints, compute_rules_to_add_delete, configure_rules, + deconfigure_rules, get_device_controller_uuid, populate_config_rules, + populate_endpoint_monitoring_resources, populate_endpoints, populate_initial_config_rules, + subscribe_kpi, unsubscribe_kpi, update_endpoints +) LOGGER = logging.getLogger(__name__) @@ -56,14 +58,10 @@ class DeviceServiceServicerImpl(DeviceServiceServicer): @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def AddDevice(self, request : Device, context : grpc.ServicerContext) -> DeviceId: t0 = time.time() - is_optical_device = request.device_drivers[0] == DeviceDriverEnum.DEVICEDRIVER_OC + device_uuid = request.device_id.device_uuid.uuid connection_config_rules = check_connect_rules(request.device_config) - LOGGER.info(f"connection_config_rules {connection_config_rules}") - LOGGER.info(f"lenght of connection_config_rules {len(connection_config_rules)}") - - check_no_endpoints(request.device_endpoints) t1 = time.time() @@ -112,22 +110,22 @@ class DeviceServiceServicerImpl(DeviceServiceServicer): new_sub_links : Dict[str, Link] = dict() #----- Experimental ------------ - new_optial_configs: Dict[str , OpticalConfig]= dict() + new_optical_configs : Dict[str, OpticalConfig] = dict() if len(device.device_endpoints) == 0: t5 = time.time() # created from request, populate endpoints using driver errors.extend(populate_endpoints( - device, driver, self.monitoring_loops, new_sub_devices, new_sub_links,new_optial_configs)) + device, driver, self.monitoring_loops, new_sub_devices, new_sub_links, + new_optical_configs + )) t6 = time.time() t_pop_endpoints = t6 - t5 else: t_pop_endpoints = None - - - - if len(device.device_config.config_rules) == len(connection_config_rules) and not is_optical_device : - + + is_optical_device = request.device_drivers[0] == DeviceDriverEnum.DEVICEDRIVER_OC + if len(device.device_config.config_rules) == len(connection_config_rules) and not is_optical_device: # created from request, populate config rules using driver t7 = time.time() errors.extend(populate_config_rules(device, driver)) @@ -152,16 +150,15 @@ class DeviceServiceServicerImpl(DeviceServiceServicer): else: # ZTP is not deployed; assume the device is ready while onboarding and set them as enabled. device.device_operational_status = DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_ENABLED - - # temporary line - if is_optical_device : + + # temporary line + if is_optical_device: #for endpoint in request.device_endpoints: # #endpoint.endpoint_id.device_id.CopyFrom(device.device_id) # pass - LOGGER.info(f"add_device {new_optial_configs}") - if ('new_optical_config' in new_optial_configs and 'opticalconfig' in new_optial_configs["new_optical_config"]): - - context_client.SetOpticalConfig(new_optial_configs["new_optical_config"]['opticalconfig']) + + if 'new_optical_config' in new_optical_configs and 'opticalconfig' in new_optical_configs["new_optical_config"]: + context_client.SetOpticalConfig(new_optical_configs["new_optical_config"]['opticalconfig']) device_id = context_client.SetDevice(device) @@ -263,8 +260,15 @@ class DeviceServiceServicerImpl(DeviceServiceServicer): device_id = context_client.SetDevice(device) device = context_client.GetDevice(device_id) - if request.device_operational_status != DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_UNDEFINED: - device.device_operational_status = request.device_operational_status + ztp_service_host = get_env_var_name(ServiceNameEnum.ZTP, ENVVAR_SUFIX_SERVICE_HOST) + environment_variables = set(os.environ.keys()) + if ztp_service_host in environment_variables: + # ZTP component is deployed; accept status updates + if request.device_operational_status != DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_UNDEFINED: + device.device_operational_status = request.device_operational_status + else: + # ZTP is not deployed; activated during AddDevice and not modified + pass t4 = time.time() # TODO: use of datastores (might be virtual ones) to enable rollbacks diff --git a/src/device/service/OpenConfigServicer.py b/src/device/service/OpenConfigServicer.py index be84fdccff1d1ea5c96d082bfc72e941a9a81576..bee2d4d5ccf6a5757b854f2d8b2275c4da64758f 100644 --- a/src/device/service/OpenConfigServicer.py +++ b/src/device/service/OpenConfigServicer.py @@ -16,7 +16,8 @@ import grpc, logging, json from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_method from common.method_wrappers.ServiceExceptions import NotFoundException from common.proto.context_pb2 import ( - Device, DeviceId, DeviceOperationalStatusEnum, Empty, OpticalConfig, OpticalConfig,OpticalConfigList,EndPoint + Device, DeviceId, DeviceOperationalStatusEnum, Empty, OpticalConfig, + OpticalConfig, OpticalConfigList ) from common.proto.device_pb2_grpc import DeviceServiceServicer from common.tools.context_queries.Device import get_device @@ -25,7 +26,7 @@ from context.client.ContextClient import ContextClient from .driver_api._Driver import _Driver from .driver_api.DriverInstanceCache import DriverInstanceCache, get_driver from .monitoring.MonitoringLoops import MonitoringLoops -from .Tools import extract_resources , get_endpoint_matching +from .Tools import extract_resources from .Tools import check_no_endpoints LOGGER = logging.getLogger(__name__) @@ -76,128 +77,102 @@ class OpenConfigServicer(DeviceServiceServicer): @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def ConfigureOpticalDevice (self, request : OpticalConfig, context : grpc.ServicerContext) -> Empty: device_uuid = request.device_id.device_uuid.uuid - resources:list[dict]=[] - is_all_good=True - config =json.loads(request.config) - results=None - LOGGER.info(f" config from openconfigservicer {config}") + resources : list[dict] = [] + is_all_good = True + config = json.loads(request.config) + results = None + try: context_client = ContextClient() device = get_device( context_client, device_uuid, rw_copy=True, include_endpoints=True, include_components=False, include_config_rules=False) - if device is None: raise NotFoundException('Device', device_uuid, extra_details='loading in ConfigureDevice') - LOGGER.info(f"device is {device.name}") - resources,conditions=extract_resources(config=config,device=device) - LOGGER.info(f"from openconfigservicer {resources} and conditions {conditions}") + resources, conditions = extract_resources(config=config, device=device) + driver : _Driver = get_driver(self.driver_instance_cache, device) results = driver.SetConfig(resources=resources,conditions=conditions) for result in results: if not result : - is_all_good=False - - LOGGER.info(f"resluts {results} and is_all_good {is_all_good}") + is_all_good = False + if is_all_good: #driver.GetConfig(resource_keys=[]) config = json.loads(request.config) - handled_flow=next((i for i in resources if i['resource_key']=='handled_flow'),None) - flow_handled=[ ] - - LOGGER.info(f"flow_handled {handled_flow}") - if handled_flow is not None and len(handled_flow)>0: - config['flow_handled']=handled_flow['value'] - + handled_flow = next((i for i in resources if i['resource_key'] == 'handled_flow'), None) + if handled_flow is not None and len(handled_flow) > 0: + config['flow_handled'] = handled_flow['value'] request.config=json.dumps(config) - context_client.UpdateOpticalConfig(request) context_client.close() except Exception as e: - LOGGER.info("error in configuring %s",e) + LOGGER.info("error in configuring %s",e) return Empty() - - + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def GetDeviceConfiguration (self, request : OpticalConfigList, context : grpc.ServicerContext) -> Empty: context_client = ContextClient() - - for configs in request.opticalconfigs: + for configs in request.opticalconfigs: device_uuid = configs.device_id.device_uuid.uuid - - LOGGER.info(f" Get DeviceConfigure {device_uuid}") try: - device = get_device( context_client, device_uuid, rw_copy=True, include_endpoints=True, include_components=False, include_config_rules=False) - if device is None: raise NotFoundException('Device', device_uuid, extra_details='loading in ConfigureDevice') - driver : _Driver = get_driver(self.driver_instance_cache, device) - results = driver.GetConfig(resource_keys=[]) for resource_data in results : resource_key, resource_value = resource_data - if resource_key.startswith('/opticalconfigs/opticalconfig/'): if 'opticalconfig' in resource_value: - context_client.SetOpticalConfig(resource_value['opticalconfig']) + context_client.SetOpticalConfig(resource_value['opticalconfig']) #TODO: add a control with the NETCONF get #driver.GetConfig(resource_keys=filter_fields) except Exception as e: - LOGGER.info("error in configuring %s",e) + LOGGER.info("error in configuring %s",e) context_client.close() return Empty() - - - - + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def DisableOpticalDevice (self, request : OpticalConfig, context : grpc.ServicerContext) -> Empty: - - roadm_configuration=None + roadm_configuration = None device_uuid = request.device_id.device_uuid.uuid - resources:list[dict]=[] - is_all_good=True - config =json.loads(request.config) - LOGGER.info(f"Disable config from openconfigservicer {config}") + resources : list[dict] = [] + is_all_good = True + config = json.loads(request.config) + try: context_client = ContextClient() device = get_device( context_client, device_uuid, rw_copy=True, include_endpoints=True, include_components=False, include_config_rules=False) - + if device is None: raise NotFoundException('Device', device_uuid, extra_details='loading in ConfigureDevice') - LOGGER.info(f"device is {device.name}") - resources,conditions=extract_resources(config=config,device=device) - LOGGER.info(f" Disable resources from openconfigservicer {resources} and conditions {conditions}") + + resources, conditions = extract_resources(config=config, device=device) + driver : _Driver = get_driver(self.driver_instance_cache, device) if 'edit_type' in conditions and conditions['edit_type'] == 'optical-band': roadm_configuration = driver.GetConfig() for resource_data in roadm_configuration: resource_key, resource_value = resource_data if resource_key.startswith('/opticalconfigs/opticalconfig/'): - roadm_configuration=resource_value["opticalconfig"] + roadm_configuration=resource_value["opticalconfig"] results = driver.DeleteConfig(resources=resources,conditions=conditions,optical_device_configuration=roadm_configuration) for result in results: if not result : - is_all_good=False - LOGGER.info(f"Disable resluts {results} and is_all_good {is_all_good}") + is_all_good = False + if is_all_good: config = json.loads(request.config) - flow_handled=[ ] if "new_config" in config : - - - context_client.DeleteOpticalChannel(request) - context_client.close() + context_client.DeleteOpticalChannel(request) + context_client.close() except Exception as e: - LOGGER.info("error in Disable configuring %s",e) + LOGGER.info("error in Disable configuring %s",e) return Empty() - - \ No newline at end of file diff --git a/src/device/service/Tools.py b/src/device/service/Tools.py index c4d4efb8f208003fa68271f3ba953d7eb7194f0d..f68f9bffa5faa2779e648f7fcd66bf0747b4ecf6 100644 --- a/src/device/service/Tools.py +++ b/src/device/service/Tools.py @@ -17,7 +17,9 @@ from typing import Any, Dict, List, Optional, Tuple, Union from common.Constants import DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME from common.DeviceTypes import DeviceTypeEnum from common.method_wrappers.ServiceExceptions import InvalidArgumentException, NotFoundException -from common.proto.context_pb2 import ConfigActionEnum, ConfigRule_ACL, Device, DeviceConfig, EndPoint, Link, Location,OpticalConfig +from common.proto.context_pb2 import ( + ConfigActionEnum, ConfigRule_ACL, Device, DeviceConfig, EndPoint, Link, Location, OpticalConfig +) from common.proto.device_pb2 import MonitoringSettings from common.proto.kpi_sample_types_pb2 import KpiSampleType from common.tools.grpc.ConfigRules import update_config_rule_custom @@ -26,7 +28,8 @@ from common.type_checkers.Checkers import chk_length, chk_type from .driver_api._Driver import _Driver, RESOURCE_ENDPOINTS from .monitoring.MonitoringLoops import MonitoringLoops from .ErrorMessages import ( - ERROR_BAD_RESOURCE, ERROR_DELETE, ERROR_GET, ERROR_GET_INIT, ERROR_MISSING_KPI, ERROR_SAMPLETYPE, ERROR_SET, + ERROR_BAD_RESOURCE, ERROR_DELETE, ERROR_GET, ERROR_GET_INIT, + ERROR_MISSING_KPI, ERROR_SAMPLETYPE, ERROR_SET, ERROR_SUBSCRIBE, ERROR_UNSUBSCRIBE, ERROR_UNSUP_RESOURCE ) @@ -106,8 +109,8 @@ def get_device_controller_uuid(device : Device) -> Optional[str]: def populate_endpoints( device : Device, driver : _Driver, monitoring_loops : MonitoringLoops, - new_sub_devices : Dict[str, Device], new_sub_links : Dict[str, Link] - ,new_optical_configs:Dict[str,OpticalConfig] + new_sub_devices : Dict[str, Device], new_sub_links : Dict[str, Link], + new_optical_configs : Dict[str, OpticalConfig] ) -> List[str]: device_uuid = device.device_id.device_uuid.uuid device_name = device.name @@ -115,7 +118,6 @@ def populate_endpoints( resources_to_get = [RESOURCE_ENDPOINTS] results_getconfig = driver.GetConfig(resources_to_get) LOGGER.debug('results_getconfig = {:s}'.format(str(results_getconfig))) - LOGGER.info('results_getconfig = {:s}'.format(str(results_getconfig))) # first quick pass to identify need of mgmt endpoints and links add_mgmt_port = False @@ -238,12 +240,10 @@ def populate_endpoints( _sub_link_endpoint_id.topology_id.topology_uuid.uuid = DEFAULT_TOPOLOGY_NAME _sub_link_endpoint_id.device_id.device_uuid.uuid = device_uuid _sub_link_endpoint_id.endpoint_uuid.uuid = endpoint_uuid - + # ----------Experimental -------------- elif resource_key.startswith('/opticalconfigs/opticalconfig/'): new_optical_configs["new_optical_config"]=resource_value - - else: errors.append(ERROR_UNSUP_RESOURCE.format(device_uuid=device_uuid, resource_data=str(resource_data))) continue @@ -277,8 +277,7 @@ def _raw_config_rules_to_grpc( device_uuid=device_uuid, resource_key=str(resource_key), resource_value=str(resource_value), error=str(resource_value))) continue - - + if resource_value is None: continue resource_value = json.loads(resource_value) if isinstance(resource_value, str) else resource_value if isinstance(resource_value, ConfigRule_ACL): resource_value = grpc_message_to_json(resource_value) @@ -288,7 +287,6 @@ def _raw_config_rules_to_grpc( return errors def populate_config_rules(device : Device, driver : _Driver) -> List[str]: - device_uuid = device.device_id.device_uuid.uuid results_getconfig = driver.GetConfig() return _raw_config_rules_to_grpc( @@ -462,7 +460,6 @@ def update_endpoints(src_device : Device, dst_device : Device) -> None: if len(src_context_uuid) > 0: dst_topology_id.context_id.context_uuid.uuid = src_context_uuid def get_edit_target(device : Device, is_opticalband : bool) -> str: - if is_opticalband: return 'optical-band' if device.device_type == DeviceTypeEnum.OPTICAL_ROADM._value_: return 'media-channel' if device.device_type == DeviceTypeEnum.OPEN_ROADM._value_: return 'network-media-channel' @@ -479,13 +476,12 @@ def is_key_existed(key : str, keys_dic = dict, key_name_to_use = None) -> dict: dic['value'] = None return dic -def extract_resources(config : dict, device : Device) -> list[list[dict],dict]: +def extract_resources(config : dict, device : Device) -> list[list[dict], dict]: conditions = {} resources:list[dict] = [] is_opticalband = config.get('is_opticalband', False) conditions['edit_type'] = get_edit_target(device, is_opticalband) - if device.device_type == DeviceTypeEnum.OPEN_ROADM._value_ : ports_dic=is_key_existed('ports',keys_dic=config['new_config']) interfaces_list=[] @@ -502,10 +498,7 @@ def extract_resources(config : dict, device : Device) -> list[list[dict],dict]: circuit_pack_dic, interface_list, supporting_port]) - resources.append({'resource_key':'interfaces','value':interfaces_list}) - - else : resources.append(is_key_existed('channel_namespace', config)) resources.append(is_key_existed('add_transceiver', config)) @@ -549,16 +542,11 @@ def extract_resources(config : dict, device : Device) -> list[list[dict],dict]: if config['new_config']['frequency'] is not None and config['new_config']['band'] is not None: lower_frequency = int(int(config['new_config']['frequency']) - (int(config['new_config']['band'])/2)+1) upper_frequency = int(int(config['new_config']['frequency']) + (int(config['new_config']['band'])/2)) - - resources.append(is_key_existed('flow_id', keys_dic=config['new_config'], key_name_to_use='index')) #resources.append({'resource_key':'index','value':config['new_config']['flow_id'] if 'flow_id' in config['new_config'] else None}) else: - lower_frequency = config['new_config']['low-freq'] if 'low-freq' in config['new_config'] else None upper_frequency = config['new_config']['up-freq' ] if 'up-freq' in config['new_config'] else None - - resources.append(is_key_existed('ob_id', keys_dic=config['new_config'], key_name_to_use='index')) #resources.append({'resource_key':'index','value':config['new_config']['ob_id'] if 'ob_id' in config['new_config'] else None}) resources.append({'resource_key': 'lower-frequency', 'value': lower_frequency}) diff --git a/src/device/service/__main__.py b/src/device/service/__main__.py index e69b7fd3c4518b5cbc3833c457f8803e26b2c8e3..4a75d6284ac700bb1a6d6a388049824c2b301de7 100644 --- a/src/device/service/__main__.py +++ b/src/device/service/__main__.py @@ -16,8 +16,10 @@ import logging, signal, sys, threading from prometheus_client import start_http_server from common.Constants import ServiceNameEnum from common.Settings import ( - ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC, get_env_var_name, get_log_level, get_metrics_port, - wait_for_environment_variables) + ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC, + get_env_var_name, get_log_level, get_metrics_port, + wait_for_environment_variables +) from .DeviceService import DeviceService from .driver_api.DriverFactory import DriverFactory from .driver_api.DriverInstanceCache import DriverInstanceCache, preload_drivers diff --git a/src/device/service/drivers/gnmi_openconfig/DeltaSampleCache.py b/src/device/service/drivers/gnmi_openconfig/DeltaSampleCache.py index daf04be5a1ff82a79031d8c3ffe19da10739fbcb..140efe84038ed5117d6c7924b188a7dc7dbd7958 100644 --- a/src/device/service/drivers/gnmi_openconfig/DeltaSampleCache.py +++ b/src/device/service/drivers/gnmi_openconfig/DeltaSampleCache.py @@ -13,13 +13,15 @@ # limitations under the License. import copy -from typing import Any, Dict, Tuple, Union +from typing import Any, Dict, Optional, Tuple, Union class DeltaSampleCache: def __init__(self) -> None: self._previous_samples : Dict[str, Tuple[float, Union[int, float]]] = dict() - def get_delta(self, path : str, current_timestamp : float, current_value : Any) -> None: + def get_delta( + self, path : str, current_timestamp : float, current_value : Any + ) -> Optional[Tuple[float, Optional[Any]]]: previous_sample = copy.deepcopy(self._previous_samples.get(path)) self._previous_samples[path] = current_timestamp, current_value @@ -30,6 +32,10 @@ class DeltaSampleCache: delta_value = max(0, current_value - previous_value) delay = current_timestamp - previous_timestamp - delta_sample = current_timestamp, delta_value / delay - - return delta_sample + if delay < 1.e-12: + # return a special value meaning, at that timestamp, + # computed value is not a number, e.g., division by zero + # also, recover previuos samples to do not miss any packet/byte + self._previous_samples[path] = previous_sample + return current_timestamp, None + return current_timestamp, delta_value / delay diff --git a/src/device/service/drivers/gnmi_openconfig/GnmiSessionHandler.py b/src/device/service/drivers/gnmi_openconfig/GnmiSessionHandler.py index 4428fb81ca304d20ee4b3bce259924278400249f..3668c6a3eeb4ab31e2ee01517efaab157c98f8d1 100644 --- a/src/device/service/drivers/gnmi_openconfig/GnmiSessionHandler.py +++ b/src/device/service/drivers/gnmi_openconfig/GnmiSessionHandler.py @@ -19,7 +19,8 @@ from common.type_checkers.Checkers import chk_float, chk_length, chk_string, chk from .gnmi.gnmi_pb2_grpc import gNMIStub from .gnmi.gnmi_pb2 import Encoding, GetRequest, SetRequest, UpdateResult # pylint: disable=no-name-in-module from .handlers import ALL_RESOURCE_KEYS, compose, get_path, parse -from .tools.Capabilities import get_supported_encodings +from .handlers.YangHandler import YangHandler +from .tools.Capabilities import check_capabilities from .tools.Channel import get_grpc_channel from .tools.Path import path_from_string, path_to_string #, compose_path from .tools.Subscriptions import Subscriptions @@ -39,12 +40,22 @@ class GnmiSessionHandler: self._use_tls = settings.get('use_tls', False) self._channel : Optional[grpc.Channel] = None self._stub : Optional[gNMIStub] = None + self._yang_handler = None self._monit_thread = None - self._supported_encodings = None + self._yang_handler = YangHandler() self._subscriptions = Subscriptions() self._in_subscriptions = queue.Queue() self._out_samples = queue.Queue() + def __del__(self) -> None: + self._logger.info('Destroying YangValidator...') + if self._yang_handler is not None: + self._logger.debug('yang_validator.data:') + for path, dnode in self._yang_handler.get_data_paths().items(): + self._logger.debug(' {:s}: {:s}'.format(str(path), json.dumps(dnode.print_dict()))) + self._yang_handler.destroy() + self._logger.info('DONE') + @property def subscriptions(self): return self._subscriptions @@ -58,8 +69,7 @@ class GnmiSessionHandler: with self._lock: self._channel = get_grpc_channel(self._address, self._port, self._use_tls, self._logger) self._stub = gNMIStub(self._channel) - self._supported_encodings = get_supported_encodings( - self._stub, self._username, self._password, timeout=120) + check_capabilities(self._stub, self._username, self._password, timeout=120) self._monit_thread = MonitoringThread( self._stub, self._logger, self._settings, self._in_subscriptions, self._out_samples) self._monit_thread.start() @@ -96,13 +106,15 @@ class GnmiSessionHandler: self._logger.exception(MSG.format(str_resource_name, str(resource_key))) parsing_results.append((resource_key, e)) # if validation fails, store the exception + self._logger.debug('parsing_results={:s}'.format(str(parsing_results))) + if len(parsing_results) > 0: return parsing_results metadata = [('username', self._username), ('password', self._password)] timeout = None # GNMI_SUBSCRIPTION_TIMEOUT = int(sampling_duration) get_reply = self._stub.Get(get_request, metadata=metadata, timeout=timeout) - #self._logger.info('get_reply={:s}'.format(grpc_message_to_json_string(get_reply))) + self._logger.debug('get_reply={:s}'.format(grpc_message_to_json_string(get_reply))) results = [] #results[str_filter] = [i, None, False] # (index, value, processed?) @@ -119,7 +131,7 @@ class GnmiSessionHandler: # resource_key_tuple[2] = True for update in notification.update: - #self._logger.info('update={:s}'.format(grpc_message_to_json_string(update))) + self._logger.debug('update={:s}'.format(grpc_message_to_json_string(update))) str_path = path_to_string(update.path) #resource_key_tuple = results.get(str_path) #if resource_key_tuple is None: @@ -130,10 +142,10 @@ class GnmiSessionHandler: value = decode_value(update.val) #resource_key_tuple[1] = value #resource_key_tuple[2] = True - results.extend(parse(str_path, value)) + results.extend(parse(str_path, value, self._yang_handler)) except Exception as e: # pylint: disable=broad-except - MSG = 'Exception processing notification {:s}' - self._logger.exception(MSG.format(grpc_message_to_json_string(notification))) + MSG = 'Exception processing update {:s}' + self._logger.exception(MSG.format(grpc_message_to_json_string(update))) results.append((str_path, e)) # if validation fails, store the exception #_results = sorted(results.items(), key=lambda x: x[1][0]) @@ -158,31 +170,34 @@ class GnmiSessionHandler: set_request = SetRequest() #for resource_key in resource_keys: + resources_requested = list() for resource_key, resource_value in resources: - self._logger.info('---1') - self._logger.info(str(resource_key)) - self._logger.info(str(resource_value)) + #self._logger.info('---1') + #self._logger.info(str(resource_key)) + #self._logger.info(str(resource_value)) #resource_tuple = resource_tuples.get(resource_key) #if resource_tuple is None: continue #_, value, exists, operation_done = resource_tuple if isinstance(resource_value, str): resource_value = json.loads(resource_value) - str_path, str_data = compose(resource_key, resource_value, delete=False) - self._logger.info('---3') - self._logger.info(str(str_path)) - self._logger.info(str(str_data)) + str_path, str_data = compose(resource_key, resource_value, self._yang_handler, delete=False) + if str_path is None: continue # nothing to set + #self._logger.info('---3') + #self._logger.info(str(str_path)) + #self._logger.info(str(str_data)) set_request_list = set_request.update #if exists else set_request.replace set_request_entry = set_request_list.add() set_request_entry.path.CopyFrom(path_from_string(str_path)) set_request_entry.val.json_val = str_data.encode('UTF-8') + resources_requested.append((resource_key, resource_value)) - self._logger.info('set_request={:s}'.format(grpc_message_to_json_string(set_request))) + self._logger.debug('set_request={:s}'.format(grpc_message_to_json_string(set_request))) metadata = [('username', self._username), ('password', self._password)] timeout = None # GNMI_SUBSCRIPTION_TIMEOUT = int(sampling_duration) set_reply = self._stub.Set(set_request, metadata=metadata, timeout=timeout) - self._logger.info('set_reply={:s}'.format(grpc_message_to_json_string(set_reply))) + self._logger.debug('set_reply={:s}'.format(grpc_message_to_json_string(set_reply))) results = [] - for (resource_key, resource_value), update_result in zip(resources, set_reply.response): + for (resource_key, resource_value), update_result in zip(resources_requested, set_reply.response): operation = update_result.op if operation == UpdateResult.UPDATE: results.append((resource_key, True)) @@ -227,30 +242,34 @@ class GnmiSessionHandler: set_request = SetRequest() #for resource_key in resource_keys: + resources_requested = list() for resource_key, resource_value in resources: - self._logger.info('---1') - self._logger.info(str(resource_key)) - self._logger.info(str(resource_value)) + #self._logger.info('---1') + #self._logger.info(str(resource_key)) + #self._logger.info(str(resource_value)) #resource_tuple = resource_tuples.get(resource_key) #if resource_tuple is None: continue #_, value, exists, operation_done = resource_tuple #if not exists: continue if isinstance(resource_value, str): resource_value = json.loads(resource_value) - str_path, str_data = compose(resource_key, resource_value, delete=True) - self._logger.info('---3') - self._logger.info(str(str_path)) - self._logger.info(str(str_data)) + # pylint: disable=unused-variable + str_path, str_data = compose(resource_key, resource_value, self._yang_handler, delete=True) + if str_path is None: continue # nothing to do with this resource_key + #self._logger.info('---3') + #self._logger.info(str(str_path)) + #self._logger.info(str(str_data)) set_request_entry = set_request.delete.add() set_request_entry.CopyFrom(path_from_string(str_path)) + resources_requested.append((resource_key, resource_value)) - self._logger.info('set_request={:s}'.format(grpc_message_to_json_string(set_request))) + self._logger.debug('set_request={:s}'.format(grpc_message_to_json_string(set_request))) metadata = [('username', self._username), ('password', self._password)] timeout = None # GNMI_SUBSCRIPTION_TIMEOUT = int(sampling_duration) set_reply = self._stub.Set(set_request, metadata=metadata, timeout=timeout) - self._logger.info('set_reply={:s}'.format(grpc_message_to_json_string(set_reply))) + self._logger.debug('set_reply={:s}'.format(grpc_message_to_json_string(set_reply))) results = [] - for (resource_key, resource_value), update_result in zip(resources, set_reply.response): + for (resource_key, resource_value), update_result in zip(resources_requested, set_reply.response): operation = update_result.op if operation == UpdateResult.DELETE: results.append((resource_key, True)) diff --git a/src/device/service/drivers/gnmi_openconfig/MonitoringThread.py b/src/device/service/drivers/gnmi_openconfig/MonitoringThread.py index 8bf6704a854542b3a085af05d55391e23c8d224f..505c2f009cc7a2ab312e062f1ad82bd01d4c183e 100644 --- a/src/device/service/drivers/gnmi_openconfig/MonitoringThread.py +++ b/src/device/service/drivers/gnmi_openconfig/MonitoringThread.py @@ -94,9 +94,14 @@ class MonitoringThread(threading.Thread): subscriptions = [] while not self._terminate.is_set(): try: - subscription = self._in_subscriptions.get(block=True, timeout=0.1) + # Some devices do not support to process multiple + # SubscriptionList requests in a bidirectional channel. + # Increased timeout to 5 seconds assuming it should + # bring enough time to receive all the subscriptions in + # the queue and process them in bulk. + subscription = self._in_subscriptions.get(block=True, timeout=5.0) operation, resource_key, sampling_duration, sampling_interval = subscription # pylint: disable=unused-variable - if operation != 'subscribe': continue # Unsubscribe not supported by gNM, needs to cancel entire connection + if operation != 'subscribe': continue # Unsubscribe not supported by gNMI, needs to cancel entire connection # options.timeout = int(sampling_duration) #_path = parse_xpath(resource_key) path = path_from_string(resource_key) @@ -107,15 +112,15 @@ class MonitoringThread(threading.Thread): subscriptions.append(subscription) except queue.Empty: if len(subscriptions) == 0: continue - #self._logger.warning('[generate_requests] process') + self._logger.debug('[generate_requests] process') prefix = path_from_string(GNMI_PATH_PREFIX) if GNMI_PATH_PREFIX is not None else None qos = QOSMarking(marking=GNMI_QOS_MARKING) if GNMI_QOS_MARKING is not None else None subscriptions_list = SubscriptionList( prefix=prefix, mode=GNMI_SUBSCRIPTION_LIST_MODE, allow_aggregation=GNMI_ALLOW_AGGREGATION, encoding=GNMI_ENCODING, subscription=subscriptions, qos=qos) subscribe_request = SubscribeRequest(subscribe=subscriptions_list) - #str_subscribe_request = grpc_message_to_json_string(subscribe_request) - #self._logger.warning('[generate_requests] subscribe_request={:s}'.format(str_subscribe_request)) + str_subscribe_request = grpc_message_to_json_string(subscribe_request) + self._logger.debug('[generate_requests] subscribe_request={:s}'.format(str_subscribe_request)) yield subscribe_request subscriptions = [] except: # pylint: disable=bare-except @@ -134,7 +139,7 @@ class MonitoringThread(threading.Thread): self._response_iterator = self._stub.Subscribe(request_iterator, metadata=metadata, timeout=timeout) for subscribe_response in self._response_iterator: str_subscribe_response = grpc_message_to_json_string(subscribe_response) - self._logger.warning('[run] subscribe_response={:s}'.format(str_subscribe_response)) + self._logger.debug('[run] subscribe_response={:s}'.format(str_subscribe_response)) update = subscribe_response.update timestamp_device = float(update.timestamp) / 1.e9 timestamp_local = datetime.timestamp(datetime.utcnow()) @@ -145,25 +150,37 @@ class MonitoringThread(threading.Thread): else: # might be clocks are not synchronized, use local timestamp timestamp = timestamp_local + str_prefix = path_to_string(update.prefix) if len(update.prefix.elem) > 0 else '' for update_entry in update.update: str_path = path_to_string(update_entry.path) + if len(str_prefix) > 0: + str_path = '{:s}/{:s}'.format(str_prefix, str_path) + str_path = str_path.replace('//', '/') + if str_path.startswith('/interfaces/'): + # Add namespace, if missing + str_path_parts = str_path.split('/') + str_path_parts[1] = 'openconfig-interfaces:interfaces' + str_path = '/'.join(str_path_parts) #if str_path != '/system/name/host-name': continue #counter_name = update_entry.path[-1].name value_type = update_entry.val.WhichOneof('value') value = getattr(update_entry.val, value_type) - if re.match(r'^[0-9]+$', value) is not None: - value = int(value) - elif re.match(r'^[0-9]*\.[0-9]*$', value) is not None: - value = float(value) - else: - value = str(value) + if isinstance(value, str): + if re.match(r'^[0-9]+$', value) is not None: + value = int(value) + elif re.match(r'^[0-9]*\.[0-9]*$', value) is not None: + value = float(value) + else: + value = str(value) delta_sample = self._delta_sample_cache.get_delta(str_path, timestamp, value) if delta_sample is None: sample = (timestamp, str_path, value) else: sample = (delta_sample[0], str_path, delta_sample[1]) - self._logger.warning('[run] sample={:s}'.format(str(sample))) - self._out_samples.put_nowait(sample) + self._logger.debug('[run] sample={:s}'.format(str(sample))) + if sample[2] is not None: + # Skip not-a-number (e.g., division by zero) samples + self._out_samples.put_nowait(sample) except grpc.RpcError as e: if e.code() != grpc.StatusCode.CANCELLED: raise # pylint: disable=no-member if e.details() != 'Locally cancelled by application!': raise # pylint: disable=no-member diff --git a/src/device/service/drivers/gnmi_openconfig/clone-yang-models.sh b/src/device/service/drivers/gnmi_openconfig/clone-yang-models.sh new file mode 100755 index 0000000000000000000000000000000000000000..b41fc6bbba60bf18c0cccebdb3536c3f96372c39 --- /dev/null +++ b/src/device/service/drivers/gnmi_openconfig/clone-yang-models.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + +BASE_PATH=~/tfs-ctrl/src/device/service/drivers/gnmi_openconfig +GIT_BASE_PATH=${BASE_PATH}/git/openconfig + +rm -rf ${GIT_BASE_PATH} + +OC_PUBLIC_PATH=${GIT_BASE_PATH}/public +mkdir -p ${OC_PUBLIC_PATH} +git clone https://github.com/openconfig/public.git ${OC_PUBLIC_PATH} + +#OC_HERCULES_PATH=${GIT_BASE_PATH}/hercules +#mkdir -p ${OC_HERCULES_PATH} +#git clone https://github.com/openconfig/hercules.git ${OC_HERCULES_PATH} diff --git a/src/device/service/drivers/gnmi_openconfig/handlers/Component.py b/src/device/service/drivers/gnmi_openconfig/handlers/Component.py index 5ac8754c6081245f79f28b89e026d5a859bc363a..e669872fb5e675ea5490b5e36376ceced4e296ee 100644 --- a/src/device/service/drivers/gnmi_openconfig/handlers/Component.py +++ b/src/device/service/drivers/gnmi_openconfig/handlers/Component.py @@ -12,45 +12,52 @@ # See the License for the specific language governing permissions and # limitations under the License. -import logging +import json, logging, re # libyang from typing import Any, Dict, List, Tuple from common.proto.kpi_sample_types_pb2 import KpiSampleType from ._Handler import _Handler +from .YangHandler import YangHandler LOGGER = logging.getLogger(__name__) -PATH_IF_CTR = "/interfaces/interface[name={:s}]/state/counters/{:s}" +PATH_IF_CTR = '/openconfig-interfaces:interfaces/interface[name={:s}]/state/counters/{:s}' +#pylint: disable=abstract-method class ComponentHandler(_Handler): def get_resource_key(self) -> str: return '/endpoints/endpoint' - def get_path(self) -> str: return '/components/component' + def get_path(self) -> str: return '/openconfig-platform:components' - def parse(self, json_data : Dict) -> List[Tuple[str, Dict[str, Any]]]: - #LOGGER.info('json_data = {:s}'.format(json.dumps(json_data))) - json_component_list : List[Dict] = json_data.get('component', []) - response = [] - for json_component in json_component_list: - #LOGGER.info('json_component = {:s}'.format(json.dumps(json_component))) + def parse( + self, json_data : Dict, yang_handler : YangHandler + ) -> List[Tuple[str, Dict[str, Any]]]: + LOGGER.debug('json_data = {:s}'.format(json.dumps(json_data))) - endpoint = {} + yang_components_path = self.get_path() + json_data_valid = yang_handler.parse_to_dict(yang_components_path, json_data, fmt='json') - component_type = json_component.get('state', {}).get('type') - if component_type is None: continue - component_type = component_type.replace('oc-platform-types:', '') - component_type = component_type.replace('openconfig-platform-types:', '') - if component_type not in {'PORT'}: continue - endpoint['type'] = '-' + entries = [] + for component in json_data_valid['components']['component']: + LOGGER.debug('component={:s}'.format(str(component))) + + component_name = component['name'] + #component_config = component.get('config', {}) - #LOGGER.info('PORT json_component = {:s}'.format(json.dumps(json_component))) + #yang_components : libyang.DContainer = yang_handler.get_data_path(yang_components_path) + #yang_component_path = 'component[name="{:s}"]'.format(component_name) + #yang_component : libyang.DContainer = yang_components.create_path(yang_component_path) + #yang_component.merge_data_dict(component, strict=True, validate=False) - component_name = json_component.get('name') - if component_name is None: continue + component_state = component.get('state', {}) + component_type = component_state.get('type') + if component_type is None: continue + component_type = component_type.split(':')[-1] + if component_type not in {'PORT'}: continue # TODO: improve mapping between interface name and component name # By now, computed by time for the sake of saving time for the Hackfest. - interface_name = component_name.lower().replace('-port', '') + interface_name = re.sub(r'\-[pP][oO][rR][tT]', '', component_name) - endpoint['uuid'] = interface_name + endpoint = {'uuid': interface_name, 'type': '-'} endpoint['sample_types'] = { KpiSampleType.KPISAMPLETYPE_BYTES_RECEIVED : PATH_IF_CTR.format(interface_name, 'in-octets' ), KpiSampleType.KPISAMPLETYPE_BYTES_TRANSMITTED : PATH_IF_CTR.format(interface_name, 'out-octets'), @@ -58,6 +65,6 @@ class ComponentHandler(_Handler): KpiSampleType.KPISAMPLETYPE_PACKETS_TRANSMITTED: PATH_IF_CTR.format(interface_name, 'out-pkts' ), } - if len(endpoint) == 0: continue - response.append(('/endpoints/endpoint[{:s}]'.format(endpoint['uuid']), endpoint)) - return response + entries.append(('/endpoints/endpoint[{:s}]'.format(endpoint['uuid']), endpoint)) + + return entries diff --git a/src/device/service/drivers/gnmi_openconfig/handlers/Interface.py b/src/device/service/drivers/gnmi_openconfig/handlers/Interface.py index e97855aa8b97fc855b07848f1a7f0c7e93717a70..03cfc6ff15e0490aee99be89c3ff1e9327dddf15 100644 --- a/src/device/service/drivers/gnmi_openconfig/handlers/Interface.py +++ b/src/device/service/drivers/gnmi_openconfig/handlers/Interface.py @@ -12,20 +12,23 @@ # See the License for the specific language governing permissions and # limitations under the License. -import json, logging +import json, libyang, logging from typing import Any, Dict, List, Tuple from ._Handler import _Handler -from .Tools import dict_get_first +from .Tools import get_bool, get_int, get_str +from .YangHandler import YangHandler LOGGER = logging.getLogger(__name__) class InterfaceHandler(_Handler): - def get_resource_key(self) -> str: return '/interface' - def get_path(self) -> str: return '/interfaces/interface' + def get_resource_key(self) -> str: return '/interface/subinterface' + def get_path(self) -> str: return '/openconfig-interfaces:interfaces' - def compose(self, resource_key : str, resource_value : Dict, delete : bool = False) -> Tuple[str, str]: - if_name = str (resource_value['name' ]) # ethernet-1/1 - sif_index = int (resource_value.get('sub_if_index' , 0 )) # 0 + def compose( + self, resource_key : str, resource_value : Dict, yang_handler : YangHandler, delete : bool = False + ) -> Tuple[str, str]: + if_name = get_str(resource_value, 'name' ) # ethernet-1/1 + sif_index = get_int(resource_value, 'index', 0) # 0 if delete: PATH_TMPL = '/interfaces/interface[name={:s}]/subinterfaces/subinterface[index={:d}]' @@ -33,216 +36,159 @@ class InterfaceHandler(_Handler): str_data = json.dumps({}) return str_path, str_data - if_enabled = bool(resource_value.get('enabled' , True)) # True/False - sif_enabled = bool(resource_value.get('sub_if_enabled' , True)) # True/False - sif_ipv4_enabled = bool(resource_value.get('sub_if_ipv4_enabled', True)) # True/False - sif_ipv4_address = str (resource_value['sub_if_ipv4_address' ]) # 172.16.0.1 - sif_ipv4_prefix = int (resource_value['sub_if_ipv4_prefix' ]) # 24 + enabled = get_bool(resource_value, 'enabled', True) # True/False + #if_type = get_str (resource_value, 'type' ) # 'l3ipvlan' + vlan_id = get_int (resource_value, 'vlan_id', ) # 127 + address_ip = get_str (resource_value, 'address_ip' ) # 172.16.0.1 + address_prefix = get_int (resource_value, 'address_prefix') # 24 + mtu = get_int (resource_value, 'mtu' ) # 1500 + + yang_ifs : libyang.DContainer = yang_handler.get_data_path('/openconfig-interfaces:interfaces') + yang_if_path = 'interface[name="{:s}"]'.format(if_name) + yang_if : libyang.DContainer = yang_ifs.create_path(yang_if_path) + yang_if.create_path('config/name', if_name ) + if enabled is not None: yang_if.create_path('config/enabled', enabled) + if mtu is not None: yang_if.create_path('config/mtu', mtu) + + yang_sifs : libyang.DContainer = yang_if.create_path('subinterfaces') + yang_sif_path = 'subinterface[index="{:d}"]'.format(sif_index) + yang_sif : libyang.DContainer = yang_sifs.create_path(yang_sif_path) + yang_sif.create_path('config/index', sif_index) + if enabled is not None: yang_sif.create_path('config/enabled', enabled) + + if vlan_id is not None: + yang_subif_vlan : libyang.DContainer = yang_sif.create_path('openconfig-vlan:vlan') + yang_subif_vlan.create_path('match/single-tagged/config/vlan-id', vlan_id) + + yang_ipv4 : libyang.DContainer = yang_sif.create_path('openconfig-if-ip:ipv4') + if enabled is not None: yang_ipv4.create_path('config/enabled', enabled) + + if address_ip is not None and address_prefix is not None: + yang_ipv4_addrs : libyang.DContainer = yang_ipv4.create_path('addresses') + yang_ipv4_addr_path = 'address[ip="{:s}"]'.format(address_ip) + yang_ipv4_addr : libyang.DContainer = yang_ipv4_addrs.create_path(yang_ipv4_addr_path) + yang_ipv4_addr.create_path('config/ip', address_ip) + yang_ipv4_addr.create_path('config/prefix-length', address_prefix) + if mtu is not None: yang_ipv4_addr.create_path('config/mtu', mtu) str_path = '/interfaces/interface[name={:s}]'.format(if_name) - str_data = json.dumps({ - 'name': if_name, - 'config': {'name': if_name, 'enabled': if_enabled}, - 'subinterfaces': { - 'subinterface': { - 'index': sif_index, - 'config': {'index': sif_index, 'enabled': sif_enabled}, - 'ipv4': { - 'config': {'enabled': sif_ipv4_enabled}, - 'addresses': { - 'address': { - 'ip': sif_ipv4_address, - 'config': {'ip': sif_ipv4_address, 'prefix_length': sif_ipv4_prefix}, - } - } - } - } - } - }) + str_data = yang_if.print_mem('json') + json_data = json.loads(str_data) + json_data = json_data['openconfig-interfaces:interface'][0] + str_data = json.dumps(json_data) return str_path, str_data - def parse(self, json_data : Dict) -> List[Tuple[str, Dict[str, Any]]]: - #LOGGER.info('json_data = {:s}'.format(json.dumps(json_data))) - json_interface_list : List[Dict] = json_data.get('interface', []) - - response = [] - for json_interface in json_interface_list: - #LOGGER.info('json_interface = {:s}'.format(json.dumps(json_interface))) - - interface = {} - - interface_name = json_interface.get('name') - if interface_name is None: - LOGGER.info('DISCARDED json_interface = {:s}'.format(json.dumps(json_interface))) - continue - interface['name'] = interface_name - - CONFIG_FIELDS = ('config', 'openconfig-interface:config', 'oci:config') - json_config : Dict = dict_get_first(json_interface, CONFIG_FIELDS, default={}) - - STATE_FIELDS = ('state', 'openconfig-interface:state', 'oci:state') - json_state : Dict = dict_get_first(json_interface, STATE_FIELDS, default={}) - - interface_type = json_config.get('type') - if interface_type is None: interface_type = json_state.get('type') - if interface_type is None: - LOGGER.info('DISCARDED json_interface = {:s}'.format(json.dumps(json_interface))) - continue - interface_type = interface_type.replace('ianaift:', '') - interface_type = interface_type.replace('iana-if-type:', '') - interface['type'] = interface_type - - interface_mtu = json_config.get('mtu') - if interface_mtu is None: interface_mtu = json_state.get('mtu') - if interface_mtu is not None: interface['mtu'] = int(interface_mtu) - - interface_enabled = json_config.get('enabled') - if interface_enabled is None: interface_enabled = json_state.get('enabled') - interface['enabled'] = False if interface_enabled is None else bool(interface_enabled) - - interface_management = json_config.get('management') - if interface_management is None: interface_management = json_state.get('management') - interface['management'] = False if interface_management is None else bool(interface_management) - - interface_descr = json_interface.get('config', {}).get('description') - if interface_descr is not None: interface['description'] = interface_descr - - json_subinterfaces = json_interface.get('subinterfaces', {}) - json_subinterface_list : List[Dict] = json_subinterfaces.get('subinterface', []) - - for json_subinterface in json_subinterface_list: - #LOGGER.info('json_subinterface = {:s}'.format(json.dumps(json_subinterface))) - - subinterface = {} - - subinterface_index = json_subinterface.get('state', {}).get('index') - if subinterface_index is None: continue - subinterface['index'] = int(subinterface_index) - - subinterface_name = json_subinterface.get('state', {}).get('name') - if subinterface_name is None: continue - subinterface['name'] = subinterface_name - - subinterface_enabled = json_subinterface.get('state', {}).get('enabled', False) - subinterface['enabled'] = bool(subinterface_enabled) - - VLAN_FIELDS = ('vlan', 'openconfig-vlan:vlan', 'ocv:vlan') - json_vlan = dict_get_first(json_subinterface, VLAN_FIELDS, default={}) - - MATCH_FIELDS = ('match', 'openconfig-vlan:match', 'ocv:match') - json_vlan = dict_get_first(json_vlan, MATCH_FIELDS, default={}) - - SIN_TAG_FIELDS = ('single-tagged', 'openconfig-vlan:single-tagged', 'ocv:single-tagged') - json_vlan = dict_get_first(json_vlan, SIN_TAG_FIELDS, default={}) - - CONFIG_FIELDS = ('config', 'openconfig-vlan:config', 'ocv:config') - json_vlan = dict_get_first(json_vlan, CONFIG_FIELDS, default={}) - - VLAN_ID_FIELDS = ('vlan-id', 'openconfig-vlan:vlan-id', 'ocv:vlan-id') - subinterface_vlan_id = dict_get_first(json_vlan, VLAN_ID_FIELDS) - if subinterface_vlan_id is not None: subinterface['vlan_id'] = subinterface_vlan_id - - - # TODO: implement support for multiple IP addresses per subinterface - - IPV4_FIELDS = ('ipv4', 'openconfig-if-ip:ipv4', 'ociip:ipv4') - json_ipv4 = dict_get_first(json_subinterface, IPV4_FIELDS, default={}) - - IPV4_ADDRESSES_FIELDS = ('addresses', 'openconfig-if-ip:addresses', 'ociip:addresses') - json_ipv4_addresses = dict_get_first(json_ipv4, IPV4_ADDRESSES_FIELDS, default={}) - - IPV4_ADDRESS_FIELDS = ('address', 'openconfig-if-ip:address', 'ociip:address') - json_ipv4_address_list : List[Dict] = dict_get_first(json_ipv4_addresses, IPV4_ADDRESS_FIELDS, default=[]) - - #ipv4_addresses = [] - for json_ipv4_address in json_ipv4_address_list: - #LOGGER.info('json_ipv4_address = {:s}'.format(json.dumps(json_ipv4_address))) - - STATE_FIELDS = ('state', 'openconfig-if-ip:state', 'ociip:state') - json_ipv4_address_state = dict_get_first(json_ipv4_address, STATE_FIELDS, default={}) - - #ipv4_address = {} - - #ORIGIN_FIELDS = ('origin', 'openconfig-if-ip:origin', 'ociip:origin') - #ipv4_address_origin = dict_get_first(json_ipv4_address_state, ORIGIN_FIELDS, default={}) - #if ipv4_address_origin is not None: ipv4_address['origin'] = ipv4_address_origin - - IP_FIELDS = ('ip', 'openconfig-if-ip:ip', 'ociip:ip') - ipv4_address_ip = dict_get_first(json_ipv4_address_state, IP_FIELDS) - #if ipv4_address_ip is not None: ipv4_address['address_ip'] = ipv4_address_ip - if ipv4_address_ip is not None: subinterface['address_ip'] = ipv4_address_ip - - PREFIX_FIELDS = ('prefix-length', 'openconfig-if-ip:prefix-length', 'ociip:prefix-length') - ipv4_address_prefix = dict_get_first(json_ipv4_address_state, PREFIX_FIELDS) - #if ipv4_address_prefix is not None: ipv4_address['address_prefix'] = int(ipv4_address_prefix) - if ipv4_address_prefix is not None: subinterface['address_prefix'] = int(ipv4_address_prefix) - - #if len(ipv4_address) == 0: continue - #ipv4_addresses.append(ipv4_address) - - #subinterface['ipv4_addresses'] = ipv4_addresses - - if len(subinterface) == 0: continue - resource_key = '/interface[{:s}]/subinterface[{:s}]'.format(interface['name'], str(subinterface['index'])) - response.append((resource_key, subinterface)) - - if len(interface) == 0: continue - response.append(('/interface[{:s}]'.format(interface['name']), interface)) - - return response - - def parse_counters(self, json_data : Dict) -> List[Tuple[str, Dict[str, Any]]]: - LOGGER.info('[parse_counters] json_data = {:s}'.format(json.dumps(json_data))) - json_interface_list : List[Dict] = json_data.get('interface', []) - - response = [] - for json_interface in json_interface_list: - LOGGER.info('[parse_counters] json_interface = {:s}'.format(json.dumps(json_interface))) - - interface = {} - - NAME_FIELDS = ('name', 'openconfig-interface:name', 'oci:name') - interface_name = dict_get_first(json_interface, NAME_FIELDS) - if interface_name is None: continue - interface['name'] = interface_name - - STATE_FIELDS = ('state', 'openconfig-interface:state', 'oci:state') - json_state = dict_get_first(json_interface, STATE_FIELDS, default={}) - - COUNTERS_FIELDS = ('counters', 'openconfig-interface:counters', 'oci:counters') - json_counters = dict_get_first(json_state, COUNTERS_FIELDS, default={}) - - IN_PKTS_FIELDS = ('in-pkts', 'openconfig-interface:in-pkts', 'oci:in-pkts') - interface_in_pkts = dict_get_first(json_counters, IN_PKTS_FIELDS) - if interface_in_pkts is not None: interface['in-pkts'] = int(interface_in_pkts) - - IN_OCTETS_FIELDS = ('in-octets', 'openconfig-interface:in-octets', 'oci:in-octets') - interface_in_octets = dict_get_first(json_counters, IN_OCTETS_FIELDS) - if interface_in_octets is not None: interface['in-octets'] = int(interface_in_octets) - - IN_ERRORS_FIELDS = ('in-errors', 'openconfig-interface:in-errors', 'oci:in-errors') - interface_in_errors = dict_get_first(json_counters, IN_ERRORS_FIELDS) - if interface_in_errors is not None: interface['in-errors'] = int(interface_in_errors) - - OUT_OCTETS_FIELDS = ('out-octets', 'openconfig-interface:out-octets', 'oci:out-octets') - interface_out_octets = dict_get_first(json_counters, OUT_OCTETS_FIELDS) - if interface_out_octets is not None: interface['out-octets'] = int(interface_out_octets) - - OUT_PKTS_FIELDS = ('out-pkts', 'openconfig-interface:out-pkts', 'oci:out-pkts') - interface_out_pkts = dict_get_first(json_counters, OUT_PKTS_FIELDS) - if interface_out_pkts is not None: interface['out-pkts'] = int(interface_out_pkts) - - OUT_ERRORS_FIELDS = ('out-errors', 'openconfig-interface:out-errors', 'oci:out-errors') - interface_out_errors = dict_get_first(json_counters, OUT_ERRORS_FIELDS) - if interface_out_errors is not None: interface['out-errors'] = int(interface_out_errors) - - OUT_DISCARDS_FIELDS = ('out-discards', 'openconfig-interface:out-discards', 'oci:out-discards') - interface_out_discards = dict_get_first(json_counters, OUT_DISCARDS_FIELDS) - if interface_out_discards is not None: interface['out-discards'] = int(interface_out_discards) - - #LOGGER.info('[parse_counters] interface = {:s}'.format(str(interface))) - - if len(interface) == 0: continue - response.append(('/interface[{:s}]'.format(interface['name']), interface)) - - return response + def parse( + self, json_data : Dict, yang_handler : YangHandler + ) -> List[Tuple[str, Dict[str, Any]]]: + LOGGER.debug('json_data = {:s}'.format(json.dumps(json_data))) + + yang_interfaces_path = self.get_path() + json_data_valid = yang_handler.parse_to_dict(yang_interfaces_path, json_data, fmt='json') + + entries = [] + for interface in json_data_valid['interfaces']['interface']: + LOGGER.debug('interface={:s}'.format(str(interface))) + + interface_name = interface['name'] + interface_config = interface.get('config', {}) + + #yang_interfaces : libyang.DContainer = yang_handler.get_data_path(yang_interfaces_path) + #yang_interface_path = 'interface[name="{:s}"]'.format(interface_name) + #yang_interface : libyang.DContainer = yang_interfaces.create_path(yang_interface_path) + #yang_interface.merge_data_dict(interface, strict=True, validate=False) + + interface_state = interface.get('state', {}) + interface_type = interface_state.get('type') + if interface_type is None: continue + interface_type = interface_type.split(':')[-1] + if interface_type not in {'ethernetCsmacd'}: continue + + _interface = { + 'name' : interface_name, + 'type' : interface_type, + 'mtu' : interface_state['mtu'], + 'admin-status' : interface_state['admin-status'], + 'oper-status' : interface_state['oper-status'], + 'management' : interface_state['management'], + } + if not interface_state['management'] and 'ifindex' in interface_state: + _interface['ifindex'] = interface_state['ifindex'] + if 'description' in interface_config: + _interface['description'] = interface_config['description'] + if 'enabled' in interface_config: + _interface['enabled'] = interface_config['enabled'] + if 'hardware-port' in interface_state: + _interface['hardware-port'] = interface_state['hardware-port'] + if 'transceiver' in interface_state: + _interface['transceiver'] = interface_state['transceiver'] + + entry_interface_key = '/interface[{:s}]'.format(interface_name) + entries.append((entry_interface_key, _interface)) + + if interface_type == 'ethernetCsmacd': + ethernet_state = interface['ethernet']['state'] + + _ethernet = { + 'mac-address' : ethernet_state['mac-address'], + 'hw-mac-address' : ethernet_state['hw-mac-address'], + 'port-speed' : ethernet_state['port-speed'].split(':')[-1], + 'negotiated-port-speed' : ethernet_state['negotiated-port-speed'].split(':')[-1], + } + entry_ethernet_key = '{:s}/ethernet'.format(entry_interface_key) + entries.append((entry_ethernet_key, _ethernet)) + + subinterfaces = interface.get('subinterfaces', {}).get('subinterface', []) + for subinterface in subinterfaces: + LOGGER.debug('subinterface={:s}'.format(str(subinterface))) + + subinterface_index = subinterface['index'] + subinterface_state = subinterface.get('state', {}) + + _subinterface = {'index': subinterface_index} + if 'name' in subinterface_state: + _subinterface['name'] = subinterface_state['name'] + if 'enabled' in subinterface_state: + _subinterface['enabled'] = subinterface_state['enabled'] + + if 'vlan' in subinterface: + vlan = subinterface['vlan'] + vlan_match = vlan['match'] + + single_tagged = vlan_match.pop('single-tagged', None) + if single_tagged is not None: + single_tagged_config = single_tagged['config'] + vlan_id = single_tagged_config['vlan-id'] + _subinterface['vlan_id'] = vlan_id + + if len(vlan_match) > 0: + raise Exception('Unsupported VLAN schema: {:s}'.format(str(vlan))) + + ipv4_addresses = subinterface.get('ipv4', {}).get('addresses', {}).get('address', []) + if len(ipv4_addresses) > 1: + raise Exception('Multiple IPv4 Addresses not supported: {:s}'.format(str(ipv4_addresses))) + for ipv4_address in ipv4_addresses: + LOGGER.debug('ipv4_address={:s}'.format(str(ipv4_address))) + _subinterface['address_ip'] = ipv4_address['ip'] + ipv4_address_state = ipv4_address.get('state', {}) + #if 'origin' in ipv4_address_state: + # _subinterface['origin'] = ipv4_address_state['origin'] + if 'prefix-length' in ipv4_address_state: + _subinterface['address_prefix'] = ipv4_address_state['prefix-length'] + + ipv6_addresses = subinterface.get('ipv6', {}).get('addresses', {}).get('address', []) + if len(ipv6_addresses) > 1: + raise Exception('Multiple IPv6 Addresses not supported: {:s}'.format(str(ipv6_addresses))) + for ipv6_address in ipv6_addresses: + LOGGER.debug('ipv6_address={:s}'.format(str(ipv6_address))) + _subinterface['address_ipv6'] = ipv6_address['ip'] + ipv6_address_state = ipv6_address.get('state', {}) + #if 'origin' in ipv6_address_state: + # _subinterface['origin_ipv6'] = ipv6_address_state['origin'] + if 'prefix-length' in ipv6_address_state: + _subinterface['address_prefix_ipv6'] = ipv6_address_state['prefix-length'] + + entry_subinterface_key = '{:s}/subinterface[{:d}]'.format(entry_interface_key, subinterface_index) + entries.append((entry_subinterface_key, _subinterface)) + + return entries diff --git a/src/device/service/drivers/gnmi_openconfig/handlers/InterfaceCounter.py b/src/device/service/drivers/gnmi_openconfig/handlers/InterfaceCounter.py index 502868c2204553d30e7cdd529184cf994d03fd21..ae6d86c43addf4f3083b9900796365b3e0601620 100644 --- a/src/device/service/drivers/gnmi_openconfig/handlers/InterfaceCounter.py +++ b/src/device/service/drivers/gnmi_openconfig/handlers/InterfaceCounter.py @@ -12,69 +12,53 @@ # See the License for the specific language governing permissions and # limitations under the License. -import json, logging +import json, libyang, logging from typing import Any, Dict, List, Tuple from ._Handler import _Handler -from .Tools import dict_get_first +from .YangHandler import YangHandler LOGGER = logging.getLogger(__name__) +#pylint: disable=abstract-method class InterfaceCounterHandler(_Handler): def get_resource_key(self) -> str: return '/interface/counters' - def get_path(self) -> str: return '/interfaces/interface/state/counters' - - def parse(self, json_data : Dict) -> List[Tuple[str, Dict[str, Any]]]: - LOGGER.info('[parse] json_data = {:s}'.format(json.dumps(json_data))) - json_interface_list : List[Dict] = json_data.get('interface', []) - - response = [] - for json_interface in json_interface_list: - LOGGER.info('[parse] json_interface = {:s}'.format(json.dumps(json_interface))) - - interface = {} - - NAME_FIELDS = ('name', 'openconfig-interface:name', 'oci:name') - interface_name = dict_get_first(json_interface, NAME_FIELDS) - if interface_name is None: continue - interface['name'] = interface_name - - STATE_FIELDS = ('state', 'openconfig-interface:state', 'oci:state') - json_state = dict_get_first(json_interface, STATE_FIELDS, default={}) - - COUNTERS_FIELDS = ('counters', 'openconfig-interface:counters', 'oci:counters') - json_counters = dict_get_first(json_state, COUNTERS_FIELDS, default={}) - - IN_PKTS_FIELDS = ('in-pkts', 'openconfig-interface:in-pkts', 'oci:in-pkts') - interface_in_pkts = dict_get_first(json_counters, IN_PKTS_FIELDS) - if interface_in_pkts is not None: interface['in-pkts'] = int(interface_in_pkts) - - IN_OCTETS_FIELDS = ('in-octets', 'openconfig-interface:in-octets', 'oci:in-octets') - interface_in_octets = dict_get_first(json_counters, IN_OCTETS_FIELDS) - if interface_in_octets is not None: interface['in-octets'] = int(interface_in_octets) - - IN_ERRORS_FIELDS = ('in-errors', 'openconfig-interface:in-errors', 'oci:in-errors') - interface_in_errors = dict_get_first(json_counters, IN_ERRORS_FIELDS) - if interface_in_errors is not None: interface['in-errors'] = int(interface_in_errors) - - OUT_OCTETS_FIELDS = ('out-octets', 'openconfig-interface:out-octets', 'oci:out-octets') - interface_out_octets = dict_get_first(json_counters, OUT_OCTETS_FIELDS) - if interface_out_octets is not None: interface['out-octets'] = int(interface_out_octets) - - OUT_PKTS_FIELDS = ('out-pkts', 'openconfig-interface:out-pkts', 'oci:out-pkts') - interface_out_pkts = dict_get_first(json_counters, OUT_PKTS_FIELDS) - if interface_out_pkts is not None: interface['out-pkts'] = int(interface_out_pkts) - - OUT_ERRORS_FIELDS = ('out-errors', 'openconfig-interface:out-errors', 'oci:out-errors') - interface_out_errors = dict_get_first(json_counters, OUT_ERRORS_FIELDS) - if interface_out_errors is not None: interface['out-errors'] = int(interface_out_errors) - - OUT_DISCARDS_FIELDS = ('out-discards', 'openconfig-interface:out-discards', 'oci:out-discards') - interface_out_discards = dict_get_first(json_counters, OUT_DISCARDS_FIELDS) - if interface_out_discards is not None: interface['out-discards'] = int(interface_out_discards) - - #LOGGER.info('[parse] interface = {:s}'.format(str(interface))) - - if len(interface) == 0: continue - response.append(('/interface[{:s}]'.format(interface['name']), interface)) - - return response + def get_path(self) -> str: return '/openconfig-interfaces:interfaces/interface/state/counters' + + def parse( + self, json_data : Dict, yang_handler : YangHandler + ) -> List[Tuple[str, Dict[str, Any]]]: + LOGGER.debug('json_data = {:s}'.format(json.dumps(json_data))) + + yang_interfaces_path = self.get_path() + json_data_valid = yang_handler.parse_to_dict(yang_interfaces_path, json_data, fmt='json') + + entries = [] + for interface in json_data_valid['interfaces']['interface']: + LOGGER.debug('interface={:s}'.format(str(interface))) + + interface_name = interface['name'] + interface_counters = interface.get('state', {}).get('counters', {}) + _interface = { + 'name' : interface_name, + 'in-broadcast-pkts' : interface_counters['in_broadcast_pkts' ], + 'in-discards' : interface_counters['in_discards' ], + 'in-errors' : interface_counters['in_errors' ], + 'in-fcs-errors' : interface_counters['in_fcs_errors' ], + 'in-multicast-pkts' : interface_counters['in_multicast_pkts' ], + 'in-octets' : interface_counters['in_octets' ], + 'in-pkts' : interface_counters['in_pkts' ], + 'in-unicast-pkts' : interface_counters['in_unicast_pkts' ], + 'out-broadcast-pkts': interface_counters['out_broadcast_pkts'], + 'out-discards' : interface_counters['out_discards' ], + 'out-errors' : interface_counters['out_errors' ], + 'out-multicast-pkts': interface_counters['out_multicast_pkts'], + 'out-octets' : interface_counters['out_octets' ], + 'out-pkts' : interface_counters['out_pkts' ], + 'out-unicast-pkts' : interface_counters['out_unicast_pkts' ], + } + LOGGER.debug('interface = {:s}'.format(str(interface))) + + entry_interface_key = '/interface[{:s}]'.format(interface_name) + entries.append((entry_interface_key, _interface)) + + return entries diff --git a/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstance.py b/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstance.py index d522eec964b2c6beffe953075411dbba2594eaa4..f1d1c56b4023a1250263aaf0995975d815eb5fec 100644 --- a/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstance.py +++ b/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstance.py @@ -12,18 +12,39 @@ # See the License for the specific language governing permissions and # limitations under the License. -import json, logging +import json, libyang, logging from typing import Any, Dict, List, Tuple from ._Handler import _Handler +from .Tools import get_str +from .YangHandler import YangHandler LOGGER = logging.getLogger(__name__) +MAP_NETWORK_INSTANCE_TYPE = { + # special routing instance; acts as default/global routing instance for a network device + 'DEFAULT': 'openconfig-network-instance-types:DEFAULT_INSTANCE', + + # private L3-only routing instance; formed of one or more RIBs + 'L3VRF': 'openconfig-network-instance-types:L3VRF', + + # private L2-only switch instance; formed of one or more L2 forwarding tables + 'L2VSI': 'openconfig-network-instance-types:L2VSI', + + # private L2-only forwarding instance; point to point connection between two endpoints + 'L2P2P': 'openconfig-network-instance-types:L2P2P', + + # private Layer 2 and Layer 3 forwarding instance + 'L2L3': 'openconfig-network-instance-types:L2L3', +} + class NetworkInstanceHandler(_Handler): def get_resource_key(self) -> str: return '/network_instance' - def get_path(self) -> str: return '/network-instances/network-instance' + def get_path(self) -> str: return '/openconfig-network-instance:network-instances' - def compose(self, resource_key : str, resource_value : Dict, delete : bool = False) -> Tuple[str, str]: - ni_name = str(resource_value['name']) # test-svc + def compose( + self, resource_key : str, resource_value : Dict, yang_handler : YangHandler, delete : bool = False + ) -> Tuple[str, str]: + ni_name = get_str(resource_value, 'name') # test-svc if delete: PATH_TMPL = '/network-instances/network-instance[name={:s}]' @@ -31,32 +52,124 @@ class NetworkInstanceHandler(_Handler): str_data = json.dumps({}) return str_path, str_data - ni_type = str(resource_value['type']) # L3VRF / L2VSI / ... + ni_type = get_str(resource_value, 'type') # L3VRF / L2VSI / ... + ni_type = MAP_NETWORK_INSTANCE_TYPE.get(ni_type, ni_type) + + str_path = '/network-instances/network-instance[name={:s}]'.format(ni_name) + #str_data = json.dumps({ + # 'name': ni_name, + # 'config': {'name': ni_name, 'type': ni_type}, + #}) - # not works: [FailedPrecondition] unsupported identifier 'DIRECTLY_CONNECTED' - #protocols = [self._compose_directly_connected()] + yang_nis : libyang.DContainer = yang_handler.get_data_path('/openconfig-network-instance:network-instances') + yang_ni_path = 'network-instance[name="{:s}"]'.format(ni_name) + yang_ni : libyang.DContainer = yang_nis.create_path(yang_ni_path) + yang_ni.create_path('config/name', ni_name) + yang_ni.create_path('config/type', ni_type) - MAP_OC_NI_TYPE = { - 'L3VRF': 'openconfig-network-instance-types:L3VRF', - } - ni_type = MAP_OC_NI_TYPE.get(ni_type, ni_type) + # 'DIRECTLY_CONNECTED' is implicitly added + #'protocols': {'protocol': protocols}, - str_path = '/network-instances/network-instance[name={:s}]'.format(ni_name) - str_data = json.dumps({ - 'name': ni_name, - 'config': {'name': ni_name, 'type': ni_type}, - #'protocols': {'protocol': protocols}, - }) + str_data = yang_ni.print_mem('json') + json_data = json.loads(str_data) + json_data = json_data['openconfig-network-instance:network-instance'][0] + str_data = json.dumps(json_data) return str_path, str_data - def _compose_directly_connected(self, name=None, enabled=True) -> Dict: - identifier = 'DIRECTLY_CONNECTED' - if name is None: name = 'DIRECTLY_CONNECTED' - return { - 'identifier': identifier, 'name': name, - 'config': {'identifier': identifier, 'name': name, 'enabled': enabled}, - } - - def parse(self, json_data : Dict) -> List[Tuple[str, Dict[str, Any]]]: - response = [] - return response + def parse( + self, json_data : Dict, yang_handler : YangHandler + ) -> List[Tuple[str, Dict[str, Any]]]: + LOGGER.debug('json_data = {:s}'.format(json.dumps(json_data))) + + # Arista Parsing Fixes: + # - Default instance comes with mpls/signaling-protocols/rsvp-te/global/hellos/state/hello-interval set to 0 + # overwrite with .../hellos/config/hello-interval + network_instances = json_data.get('openconfig-network-instance:network-instance', []) + for network_instance in network_instances: + if network_instance['name'] != 'default': continue + mpls_rsvp_te = network_instance.get('mpls', {}).get('signaling-protocols', {}).get('rsvp-te', {}) + mpls_rsvp_te_hellos = mpls_rsvp_te.get('global', {}).get('hellos', {}) + hello_interval = mpls_rsvp_te_hellos.get('config', {}).get('hello-interval', 9000) + mpls_rsvp_te_hellos.get('state', {})['hello-interval'] = hello_interval + + yang_network_instances_path = self.get_path() + json_data_valid = yang_handler.parse_to_dict(yang_network_instances_path, json_data, fmt='json', strict=False) + + entries = [] + for network_instance in json_data_valid['network-instances']['network-instance']: + LOGGER.debug('network_instance={:s}'.format(str(network_instance))) + ni_name = network_instance['name'] + + ni_config = network_instance['config'] + ni_type = ni_config['type'].split(':')[-1] + + _net_inst = {'name': ni_name, 'type': ni_type} + entry_net_inst_key = '/network_instance[{:s}]'.format(ni_name) + entries.append((entry_net_inst_key, _net_inst)) + + ni_interfaces = network_instance.get('interfaces', {}).get('interface', []) + for ni_interface in ni_interfaces: + #ni_if_id = ni_interface['id'] + ni_if_config = ni_interface['config'] + ni_if_name = ni_if_config['interface'] + ni_sif_index = ni_if_config['subinterface'] + ni_if_id = '{:s}.{:d}'.format(ni_if_name, ni_sif_index) + + _interface = {'name': ni_name, 'id': ni_if_id, 'if_name': ni_if_name, 'sif_index': ni_sif_index} + entry_interface_key = '{:s}/interface[{:s}]'.format(entry_net_inst_key, ni_if_id) + entries.append((entry_interface_key, _interface)) + + ni_protocols = network_instance.get('protocols', {}).get('protocol', []) + for ni_protocol in ni_protocols: + ni_protocol_id = ni_protocol['identifier'].split(':')[-1] + ni_protocol_name = ni_protocol['name'] + + _protocol = {'name': ni_name, 'identifier': ni_protocol_id, 'protocol_name': ni_protocol_name} + entry_protocol_key = '{:s}/protocols[{:s}]'.format(entry_net_inst_key, ni_protocol_id) + entries.append((entry_protocol_key, _protocol)) + + if ni_protocol_id == 'STATIC': + static_routes = ni_protocol.get('static-routes', {}).get('static', []) + for static_route in static_routes: + static_route_prefix = static_route['prefix'] + for next_hop in static_route.get('next-hops', {}).get('next-hop', []): + static_route_metric = next_hop['config']['metric'] + _static_route = { + 'prefix' : static_route_prefix, + 'index' : next_hop['index'], + 'next_hop': next_hop['config']['next-hop'], + 'metric' : static_route_metric, + } + _static_route.update(_protocol) + entry_static_route_key = '{:s}/static_route[{:s}:{:d}]'.format( + entry_protocol_key, static_route_prefix, static_route_metric + ) + entries.append((entry_static_route_key, _static_route)) + + ni_tables = network_instance.get('tables', {}).get('table', []) + for ni_table in ni_tables: + ni_table_protocol = ni_table['protocol'].split(':')[-1] + ni_table_address_family = ni_table['address-family'].split(':')[-1] + _table = {'protocol': ni_table_protocol, 'address_family': ni_table_address_family} + entry_table_key = '{:s}/table[{:s},{:s}]'.format( + entry_net_inst_key, ni_table_protocol, ni_table_address_family + ) + entries.append((entry_table_key, _table)) + + ni_vlans = network_instance.get('vlans', {}).get('vlan', []) + for ni_vlan in ni_vlans: + ni_vlan_id = ni_vlan['vlan-id'] + + #ni_vlan_config = ni_vlan['config'] + ni_vlan_state = ni_vlan['state'] + ni_vlan_name = ni_vlan_state['name'] + + _members = [ + member['state']['interface'] + for member in ni_vlan.get('members', {}).get('member', []) + ] + _vlan = {'vlan_id': ni_vlan_id, 'name': ni_vlan_name, 'members': _members} + entry_vlan_key = '{:s}/vlan[{:d}]'.format(entry_net_inst_key, ni_vlan_id) + entries.append((entry_vlan_key, _vlan)) + + return entries diff --git a/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceInterface.py b/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceInterface.py index cc22618bc4179ba6eabdd2b4232b8cbfb92f1587..5e5ea9bf0bdc38b09d3959e8b6ecfc3534319817 100644 --- a/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceInterface.py +++ b/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceInterface.py @@ -12,35 +12,62 @@ # See the License for the specific language governing permissions and # limitations under the License. -import json, logging +import json, libyang, logging from typing import Any, Dict, List, Tuple from ._Handler import _Handler +from .Tools import get_int, get_str +from .YangHandler import YangHandler LOGGER = logging.getLogger(__name__) +IS_CEOS = True + class NetworkInstanceInterfaceHandler(_Handler): def get_resource_key(self) -> str: return '/network_instance/interface' - def get_path(self) -> str: return '/network-instances/network-instance/interfaces' + def get_path(self) -> str: return '/openconfig-network-instance:network-instances/network-instance/interfaces' + + def compose( + self, resource_key : str, resource_value : Dict, yang_handler : YangHandler, delete : bool = False + ) -> Tuple[str, str]: + ni_name = get_str(resource_value, 'name' ) # test-svc + ni_if_id = get_str(resource_value, 'id' ) # ethernet-1/1.0 + if_name = get_str(resource_value, 'interface' ) # ethernet-1/1 + sif_index = get_int(resource_value, 'subinterface', 0) # 0 - def compose(self, resource_key : str, resource_value : Dict, delete : bool = False) -> Tuple[str, str]: - ni_name = str(resource_value['name' ]) # test-svc - if_name = str(resource_value['if_name' ]) # ethernet-1/1 - sif_index = int(resource_value['sif_index']) # 0 - if_id = '{:s}.{:d}'.format(if_name, sif_index) + if IS_CEOS: ni_if_id = if_name if delete: PATH_TMPL = '/network-instances/network-instance[name={:s}]/interfaces/interface[id={:s}]' - str_path = PATH_TMPL.format(ni_name, if_id) + str_path = PATH_TMPL.format(ni_name, ni_if_id) str_data = json.dumps({}) return str_path, str_data - str_path = '/network-instances/network-instance[name={:s}]/interfaces/interface[id={:s}]'.format(ni_name, if_id) - str_data = json.dumps({ - 'id': if_id, - 'config': {'id': if_id, 'interface': if_name, 'subinterface': sif_index}, - }) + str_path = '/network-instances/network-instance[name={:s}]/interfaces/interface[id={:s}]'.format( + ni_name, ni_if_id + ) + #str_data = json.dumps({ + # 'id': if_id, + # 'config': {'id': if_id, 'interface': if_name, 'subinterface': sif_index}, + #}) + + yang_nis : libyang.DContainer = yang_handler.get_data_path('/openconfig-network-instance:network-instances') + yang_ni : libyang.DContainer = yang_nis.create_path('network-instance[name="{:s}"]'.format(ni_name)) + yang_ni_ifs : libyang.DContainer = yang_ni.create_path('interfaces') + yang_ni_if_path = 'interface[id="{:s}"]'.format(ni_if_id) + yang_ni_if : libyang.DContainer = yang_ni_ifs.create_path(yang_ni_if_path) + yang_ni_if.create_path('config/id', ni_if_id) + yang_ni_if.create_path('config/interface', if_name) + yang_ni_if.create_path('config/subinterface', sif_index) + + str_data = yang_ni_if.print_mem('json') + json_data = json.loads(str_data) + json_data = json_data['openconfig-network-instance:interface'][0] + str_data = json.dumps(json_data) return str_path, str_data - def parse(self, json_data : Dict) -> List[Tuple[str, Dict[str, Any]]]: + def parse( + self, json_data : Dict, yang_handler : YangHandler + ) -> List[Tuple[str, Dict[str, Any]]]: + LOGGER.debug('[parse] json_data = {:s}'.format(str(json_data))) response = [] return response diff --git a/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceProtocol.py b/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceProtocol.py new file mode 100644 index 0000000000000000000000000000000000000000..f155fa1ca5c0a990abf18ab1c78059673d94e04e --- /dev/null +++ b/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceProtocol.py @@ -0,0 +1,79 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import json, libyang, logging +from typing import Any, Dict, List, Tuple +from ._Handler import _Handler +from .Tools import get_str +from .YangHandler import YangHandler + +LOGGER = logging.getLogger(__name__) + +class NetworkInstanceProtocolHandler(_Handler): + def get_resource_key(self) -> str: return '/network_instance/protocols' + def get_path(self) -> str: + return '/openconfig-network-instance:network-instances/network-instance/protocols/protocol' + + def compose( + self, resource_key : str, resource_value : Dict, yang_handler : YangHandler, delete : bool = False + ) -> Tuple[str, str]: + ni_name = get_str(resource_value, 'name' ) # test-svc + identifier = get_str(resource_value, 'identifier') # 'STATIC' + proto_name = get_str(resource_value, 'protocol_name') # 'STATIC' + + if ':' not in identifier: + identifier = 'openconfig-policy-types:{:s}'.format(identifier) + PATH_TMPL = '/network-instances/network-instance[name={:s}]/protocols/protocol[identifier={:s}][name={:s}]' + str_path = PATH_TMPL.format(ni_name, identifier, proto_name) + + if delete: + str_data = json.dumps({}) + return str_path, str_data + + #str_data = json.dumps({ + # 'identifier': identifier, 'name': name, + # 'config': {'identifier': identifier, 'name': name, 'enabled': True}, + # 'static_routes': {'static': [{ + # 'prefix': prefix, + # 'config': {'prefix': prefix}, + # 'next_hops': { + # 'next-hop': [{ + # 'index': next_hop_index, + # 'config': {'index': next_hop_index, 'next_hop': next_hop} + # }] + # } + # }]} + #}) + + yang_nis : libyang.DContainer = yang_handler.get_data_path('/openconfig-network-instance:network-instances') + yang_ni : libyang.DContainer = yang_nis.create_path('network-instance[name="{:s}"]'.format(ni_name)) + yang_ni_prs : libyang.DContainer = yang_ni.create_path('protocols') + yang_ni_pr_path = 'protocol[identifier="{:s}"][name="{:s}"]'.format(identifier, proto_name) + yang_ni_pr : libyang.DContainer = yang_ni_prs.create_path(yang_ni_pr_path) + yang_ni_pr.create_path('config/identifier', identifier) + yang_ni_pr.create_path('config/name', proto_name) + yang_ni_pr.create_path('config/enabled', True ) + + str_data = yang_ni_pr.print_mem('json') + json_data = json.loads(str_data) + json_data = json_data['openconfig-network-instance:protocol'][0] + str_data = json.dumps(json_data) + return str_path, str_data + + def parse( + self, json_data : Dict, yang_handler : YangHandler + ) -> List[Tuple[str, Dict[str, Any]]]: + LOGGER.debug('[parse] json_data = {:s}'.format(str(json_data))) + response = [] + return response diff --git a/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceStaticRoute.py b/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceStaticRoute.py index 6294f9c9bf46b3b60da48f19c08ad57f096fa39b..9f80b647b8e1188c80609dbdb47bbe9ea0d68b5f 100644 --- a/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceStaticRoute.py +++ b/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceStaticRoute.py @@ -12,50 +12,90 @@ # See the License for the specific language governing permissions and # limitations under the License. -import json, logging +import json, libyang, logging from typing import Any, Dict, List, Tuple from ._Handler import _Handler +from .Tools import get_int, get_str +from .YangHandler import YangHandler LOGGER = logging.getLogger(__name__) class NetworkInstanceStaticRouteHandler(_Handler): - def get_resource_key(self) -> str: return '/network_instance/static_route' - def get_path(self) -> str: return '/network-instances/network-instance/static_route' + def get_resource_key(self) -> str: return '/network_instance/protocols/static_route' + def get_path(self) -> str: + return '/openconfig-network-instance:network-instances/network-instance/protocols/protocol/static-routes' - def compose(self, resource_key : str, resource_value : Dict, delete : bool = False) -> Tuple[str, str]: - ni_name = str(resource_value['name' ]) # test-svc - prefix = str(resource_value['prefix' ]) # '172.0.1.0/24' + def compose( + self, resource_key : str, resource_value : Dict, yang_handler : YangHandler, delete : bool = False + ) -> Tuple[str, str]: + ni_name = get_str(resource_value, 'name' ) # test-svc + identifier = get_str(resource_value, 'identifier') # 'STATIC' + proto_name = get_str(resource_value, 'protocol_name') # 'STATIC' + prefix = get_str(resource_value, 'prefix') # '172.0.1.0/24' + + if ':' not in identifier: + identifier = 'openconfig-policy-types:{:s}'.format(identifier) - identifier = 'STATIC' - name = 'static' if delete: PATH_TMPL = '/network-instances/network-instance[name={:s}]/protocols' PATH_TMPL += '/protocol[identifier={:s}][name={:s}]/static-routes/static[prefix={:s}]' - str_path = PATH_TMPL.format(ni_name, identifier, name, prefix) + str_path = PATH_TMPL.format(ni_name, identifier, proto_name, prefix) str_data = json.dumps({}) return str_path, str_data - next_hop = str(resource_value['next_hop' ]) # '172.0.0.1' - next_hop_index = int(resource_value.get('next_hop_index', 0)) # 0 + next_hop = get_str(resource_value, 'next_hop') # '172.0.0.1' + metric = get_int(resource_value, 'metric' ) # 20 + index = get_str(resource_value, 'index' ) # AUTO_1_172-0-0-1 + if index is None: + index = 'AUTO_{:d}_{:s}'.format(metric, next_hop) PATH_TMPL = '/network-instances/network-instance[name={:s}]/protocols/protocol[identifier={:s}][name={:s}]' - str_path = PATH_TMPL.format(ni_name, identifier, name) - str_data = json.dumps({ - 'identifier': identifier, 'name': name, - 'config': {'identifier': identifier, 'name': name, 'enabled': True}, - 'static_routes': {'static': [{ - 'prefix': prefix, - 'config': {'prefix': prefix}, - 'next_hops': { - 'next-hop': [{ - 'index': next_hop_index, - 'config': {'index': next_hop_index, 'next_hop': next_hop} - }] - } - }]} - }) + str_path = PATH_TMPL.format(ni_name, identifier, proto_name) + #str_data = json.dumps({ + # 'identifier': identifier, 'name': name, + # 'config': {'identifier': identifier, 'name': name, 'enabled': True}, + # 'static_routes': {'static': [{ + # 'prefix': prefix, + # 'config': {'prefix': prefix}, + # 'next_hops': { + # 'next-hop': [{ + # 'index': next_hop_index, + # 'config': {'index': next_hop_index, 'next_hop': next_hop} + # }] + # } + # }]} + #}) + + yang_nis : libyang.DContainer = yang_handler.get_data_path('/openconfig-network-instance:network-instances') + yang_ni : libyang.DContainer = yang_nis.create_path('network-instance[name="{:s}"]'.format(ni_name)) + yang_ni_prs : libyang.DContainer = yang_ni.create_path('protocols') + yang_ni_pr_path = 'protocol[identifier="{:s}"][name="{:s}"]'.format(identifier, proto_name) + yang_ni_pr : libyang.DContainer = yang_ni_prs.create_path(yang_ni_pr_path) + yang_ni_pr.create_path('config/identifier', identifier) + yang_ni_pr.create_path('config/name', proto_name) + yang_ni_pr.create_path('config/enabled', True ) + + yang_ni_pr_srs : libyang.DContainer = yang_ni_pr.create_path('static-routes') + yang_ni_pr_sr_path = 'static[prefix="{:s}"]'.format(prefix) + yang_ni_pr_sr : libyang.DContainer = yang_ni_pr_srs.create_path(yang_ni_pr_sr_path) + yang_ni_pr_sr.create_path('config/prefix', prefix) + + yang_ni_pr_sr_nhs : libyang.DContainer = yang_ni_pr_sr.create_path('next-hops') + yang_ni_pr_sr_nh_path = 'next-hop[index="{:s}"]'.format(index) + yang_ni_pr_sr_nh : libyang.DContainer = yang_ni_pr_sr_nhs.create_path(yang_ni_pr_sr_nh_path) + yang_ni_pr_sr_nh.create_path('config/index', index) + yang_ni_pr_sr_nh.create_path('config/next-hop', next_hop) + yang_ni_pr_sr_nh.create_path('config/metric', metric) + + str_data = yang_ni_pr.print_mem('json') + json_data = json.loads(str_data) + json_data = json_data['openconfig-network-instance:protocol'][0] + str_data = json.dumps(json_data) return str_path, str_data - def parse(self, json_data : Dict) -> List[Tuple[str, Dict[str, Any]]]: + def parse( + self, json_data : Dict, yang_handler : YangHandler + ) -> List[Tuple[str, Dict[str, Any]]]: + LOGGER.debug('[parse] json_data = {:s}'.format(str(json_data))) response = [] return response diff --git a/src/device/service/drivers/gnmi_openconfig/handlers/Tools.py b/src/device/service/drivers/gnmi_openconfig/handlers/Tools.py index 358c7de9fa3b9c46c4a7c70142deb1c2ab396ad0..f258de926d44c48a655eab877eeb0350df511b69 100644 --- a/src/device/service/drivers/gnmi_openconfig/handlers/Tools.py +++ b/src/device/service/drivers/gnmi_openconfig/handlers/Tools.py @@ -13,7 +13,7 @@ # limitations under the License. import re -from typing import Any, Dict, Iterable +from typing import Any, Callable, Dict, Iterable, Optional RE_REMOVE_FILTERS = re.compile(r'\[[^\]]+\]') RE_REMOVE_NAMESPACES = re.compile(r'\/[a-zA-Z0-9\_\-]+:') @@ -23,8 +23,39 @@ def get_schema(resource_key : str): resource_key = RE_REMOVE_NAMESPACES.sub('/', resource_key) return resource_key -def dict_get_first(d : Dict, field_names : Iterable[str], default=None) -> Any: - for field_name in field_names: - if field_name not in d: continue - return d[field_name] +def container_get_first( + container : Dict[str, Any], key_name : str, namespace : Optional[str]=None, namespaces : Iterable[str]=tuple(), + default : Optional[Any] = None +) -> Any: + value = container.get(key_name) + if value is not None: return value + + if namespace is not None: + if len(namespaces) > 0: + raise Exception('At maximum, one of namespace or namespaces can be specified') + namespaces = (namespace,) + + for namespace in namespaces: + namespace_key_name = '{:s}:{:s}'.format(namespace, key_name) + if namespace_key_name in container: return container[namespace_key_name] + return default + +def get_value( + resource_value : Dict, field_name : str, cast_func : Callable = lambda x:x, default : Optional[Any] = None +) -> Optional[Any]: + field_value = resource_value.get(field_name, default) + if field_value is not None: field_value = cast_func(field_value) + return field_value + +def get_bool(resource_value : Dict, field_name : bool, default : Optional[Any] = None) -> bool: + return get_value(resource_value, field_name, cast_func=bool, default=default) + +def get_float(resource_value : Dict, field_name : float, default : Optional[Any] = None) -> float: + return get_value(resource_value, field_name, cast_func=float, default=default) + +def get_int(resource_value : Dict, field_name : int, default : Optional[Any] = None) -> int: + return get_value(resource_value, field_name, cast_func=int, default=default) + +def get_str(resource_value : Dict, field_name : str, default : Optional[Any] = None) -> str: + return get_value(resource_value, field_name, cast_func=str, default=default) diff --git a/src/device/service/drivers/gnmi_openconfig/handlers/YangHandler.py b/src/device/service/drivers/gnmi_openconfig/handlers/YangHandler.py new file mode 100644 index 0000000000000000000000000000000000000000..944dfa60781162d841c5da12813a4581c282471b --- /dev/null +++ b/src/device/service/drivers/gnmi_openconfig/handlers/YangHandler.py @@ -0,0 +1,110 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import json, libyang, logging, os +from typing import Dict, Optional + +YANG_BASE_PATH = os.path.join(os.path.dirname(__file__), '..', 'git', 'openconfig', 'public') +YANG_SEARCH_PATHS = ':'.join([ + os.path.join(YANG_BASE_PATH, 'release'), + os.path.join(YANG_BASE_PATH, 'third_party'), +]) + +YANG_MODULES = [ + 'iana-if-type', + 'openconfig-bgp-types', + 'openconfig-vlan-types', + + 'openconfig-interfaces', + 'openconfig-if-8021x', + 'openconfig-if-aggregate', + 'openconfig-if-ethernet-ext', + 'openconfig-if-ethernet', + 'openconfig-if-ip-ext', + 'openconfig-if-ip', + 'openconfig-if-poe', + 'openconfig-if-sdn-ext', + 'openconfig-if-tunnel', + + 'openconfig-vlan', + + 'openconfig-types', + 'openconfig-policy-types', + 'openconfig-mpls-types', + 'openconfig-network-instance-types', + 'openconfig-network-instance', + + 'openconfig-platform', + 'openconfig-platform-controller-card', + 'openconfig-platform-cpu', + 'openconfig-platform-ext', + 'openconfig-platform-fabric', + 'openconfig-platform-fan', + 'openconfig-platform-integrated-circuit', + 'openconfig-platform-linecard', + 'openconfig-platform-pipeline-counters', + 'openconfig-platform-port', + 'openconfig-platform-psu', + 'openconfig-platform-software', + 'openconfig-platform-transceiver', + 'openconfig-platform-types', +] + +LOGGER = logging.getLogger(__name__) + +class YangHandler: + def __init__(self) -> None: + self._yang_context = libyang.Context(YANG_SEARCH_PATHS) + self._loaded_modules = set() + for yang_module_name in YANG_MODULES: + LOGGER.info('Loading module: {:s}'.format(str(yang_module_name))) + self._yang_context.load_module(yang_module_name).feature_enable_all() + self._loaded_modules.add(yang_module_name) + self._data_path_instances = dict() + + def get_data_paths(self) -> Dict[str, libyang.DNode]: + return self._data_path_instances + + def get_data_path(self, path : str) -> libyang.DNode: + data_path_instance = self._data_path_instances.get(path) + if data_path_instance is None: + data_path_instance = self._yang_context.create_data_path(path) + self._data_path_instances[path] = data_path_instance + return data_path_instance + + def parse_to_dict( + self, request_path : str, json_data : Dict, fmt : str = 'json', strict : bool = True + ) -> Dict: + if fmt != 'json': raise Exception('Unsupported format: {:s}'.format(str(fmt))) + LOGGER.debug('request_path = {:s}'.format(str(request_path))) + LOGGER.debug('json_data = {:s}'.format(str(json_data))) + LOGGER.debug('format = {:s}'.format(str(fmt))) + + parent_path_parts = list(filter(lambda s: len(s) > 0, request_path.split('/'))) + for parent_path_part in reversed(parent_path_parts): + json_data = {parent_path_part: json_data} + str_data = json.dumps(json_data) + + dnode : Optional[libyang.DNode] = self._yang_context.parse_data_mem( + str_data, fmt, strict=strict, parse_only=True, #validate_present=True, #validate=True, + ) + if dnode is None: raise Exception('Unable to parse Data({:s})'.format(str(json_data))) + + parsed = dnode.print_dict() + LOGGER.debug('parsed = {:s}'.format(json.dumps(parsed))) + dnode.free() + return parsed + + def destroy(self) -> None: + self._yang_context.destroy() diff --git a/src/device/service/drivers/gnmi_openconfig/handlers/_Handler.py b/src/device/service/drivers/gnmi_openconfig/handlers/_Handler.py index f051c43534ab4e1d6c15a34ae2070067034ba9e1..215a4d499e534ca9797c487adb0c798487a4a7cf 100644 --- a/src/device/service/drivers/gnmi_openconfig/handlers/_Handler.py +++ b/src/device/service/drivers/gnmi_openconfig/handlers/_Handler.py @@ -13,6 +13,7 @@ # limitations under the License. from typing import Any, Dict, List, Tuple +from .YangHandler import YangHandler class _Handler: def get_resource_key(self) -> str: @@ -23,10 +24,14 @@ class _Handler: # Retrieve the OpenConfig path schema used to interrogate the device raise NotImplementedError() - def compose(self, resource_key : str, resource_value : Dict, delete : bool = False) -> Tuple[str, str]: + def compose( + self, resource_key : str, resource_value : Dict, yang_handler : YangHandler, delete : bool = False + ) -> Tuple[str, str]: # Compose a Set/Delete message based on the resource_key/resource_value fields, and the delete flag raise NotImplementedError() - def parse(self, json_data : Dict) -> List[Tuple[str, Dict[str, Any]]]: + def parse( + self, json_data : Dict, yang_handler : YangHandler + ) -> List[Tuple[str, Dict[str, Any]]]: # Parse a Reply from the device and return a list of resource_key/resource_value pairs raise NotImplementedError() diff --git a/src/device/service/drivers/gnmi_openconfig/handlers/__init__.py b/src/device/service/drivers/gnmi_openconfig/handlers/__init__.py index 4ff8e8b38b4a76ba9bb0d2b91fb70b54b06a170e..b36313bb2030ed9d07f1f3c198ea9447a0cafbaa 100644 --- a/src/device/service/drivers/gnmi_openconfig/handlers/__init__.py +++ b/src/device/service/drivers/gnmi_openconfig/handlers/__init__.py @@ -13,7 +13,7 @@ # limitations under the License. import logging -from typing import Dict, List, Optional, Tuple, Union +from typing import Any, Dict, List, Optional, Tuple, Union from device.service.driver_api._Driver import RESOURCE_ENDPOINTS, RESOURCE_INTERFACES, RESOURCE_NETWORK_INSTANCES from ._Handler import _Handler from .Component import ComponentHandler @@ -21,8 +21,10 @@ from .Interface import InterfaceHandler from .InterfaceCounter import InterfaceCounterHandler from .NetworkInstance import NetworkInstanceHandler from .NetworkInstanceInterface import NetworkInstanceInterfaceHandler +from .NetworkInstanceProtocol import NetworkInstanceProtocolHandler from .NetworkInstanceStaticRoute import NetworkInstanceStaticRouteHandler from .Tools import get_schema +from .YangHandler import YangHandler LOGGER = logging.getLogger(__name__) @@ -31,6 +33,7 @@ ifaceh = InterfaceHandler() ifctrh = InterfaceCounterHandler() nih = NetworkInstanceHandler() niifh = NetworkInstanceInterfaceHandler() +niph = NetworkInstanceProtocolHandler() nisrh = NetworkInstanceStaticRouteHandler() ALL_RESOURCE_KEYS = [ @@ -46,9 +49,10 @@ RESOURCE_KEY_MAPPER = { } PATH_MAPPER = { - '/components' : comph.get_path(), - '/interfaces' : ifaceh.get_path(), - '/network-instances' : nih.get_path(), + '/components' : comph.get_path(), + '/components/component' : comph.get_path(), + '/interfaces' : ifaceh.get_path(), + '/network-instances' : nih.get_path(), } RESOURCE_KEY_TO_HANDLER = { @@ -57,6 +61,7 @@ RESOURCE_KEY_TO_HANDLER = { ifctrh.get_resource_key() : ifctrh, nih.get_resource_key() : nih, niifh.get_resource_key() : niifh, + niph.get_resource_key() : niph, nisrh.get_resource_key() : nisrh, } @@ -66,11 +71,13 @@ PATH_TO_HANDLER = { ifctrh.get_path() : ifctrh, nih.get_path() : nih, niifh.get_path() : niifh, + niph.get_path() : niph, nisrh.get_path() : nisrh, } def get_handler( - resource_key : Optional[str] = None, path : Optional[str] = None, raise_if_not_found=True + resource_key : Optional[str] = None, path : Optional[str] = None, + raise_if_not_found=True ) -> Optional[_Handler]: if (resource_key is None) == (path is None): MSG = 'Exactly one of resource_key({:s}) or path({:s}) must be specified' @@ -88,16 +95,24 @@ def get_handler( path_schema = PATH_MAPPER.get(path_schema, path_schema) handler = PATH_TO_HANDLER.get(path_schema) if handler is None and raise_if_not_found: - MSG = 'Handler not found: resource_key={:s} resource_key_schema={:s}' + MSG = 'Handler not found: path={:s} path_schema={:s}' # pylint: disable=broad-exception-raised - raise Exception(MSG.format(str(resource_key), str(resource_key_schema))) + raise Exception(MSG.format(str(path), str(path_schema))) return handler def get_path(resource_key : str) -> str: - return get_handler(resource_key=resource_key).get_path() + handler = get_handler(resource_key=resource_key) + return handler.get_path() -def parse(str_path : str, value : Union[Dict, List]): - return get_handler(path=str_path).parse(value) +def parse( + str_path : str, value : Union[Dict, List], yang_handler : YangHandler +) -> List[Tuple[str, Dict[str, Any]]]: + handler = get_handler(path=str_path) + return handler.parse(value, yang_handler) -def compose(resource_key : str, resource_value : Union[Dict, List], delete : bool = False) -> Tuple[str, str]: - return get_handler(resource_key=resource_key).compose(resource_key, resource_value, delete=delete) +def compose( + resource_key : str, resource_value : Union[Dict, List], + yang_handler : YangHandler, delete : bool = False +) -> Tuple[str, str]: + handler = get_handler(resource_key=resource_key) + return handler.compose(resource_key, resource_value, yang_handler, delete=delete) diff --git a/src/device/service/drivers/gnmi_openconfig/tools/Capabilities.py b/src/device/service/drivers/gnmi_openconfig/tools/Capabilities.py index 093a96233f26399be4e224a48a78ea6329da4304..66b30da9832e661b35e1f13b3e3a47c7a50098cb 100644 --- a/src/device/service/drivers/gnmi_openconfig/tools/Capabilities.py +++ b/src/device/service/drivers/gnmi_openconfig/tools/Capabilities.py @@ -17,7 +17,7 @@ from common.tools.grpc.Tools import grpc_message_to_json from ..gnmi.gnmi_pb2 import CapabilityRequest # pylint: disable=no-name-in-module from ..gnmi.gnmi_pb2_grpc import gNMIStub -def get_supported_encodings( +def check_capabilities( stub : gNMIStub, username : str, password : str, timeout : Optional[int] = None ) -> Set[Union[str, int]]: metadata = [('username', username), ('password', password)] @@ -25,6 +25,17 @@ def get_supported_encodings( reply = stub.Capabilities(req, metadata=metadata, timeout=timeout) data = grpc_message_to_json(reply) + + gnmi_version = data.get('gNMI_version') + if gnmi_version is None or gnmi_version != '0.7.0': + raise Exception('Unsupported gNMI version: {:s}'.format(str(gnmi_version))) + + #supported_models = { + # supported_model['name']: supported_model['version'] + # for supported_model in data.get('supported_models', []) + #} + # TODO: check supported models and versions + supported_encodings = { supported_encoding for supported_encoding in data.get('supported_encodings', []) @@ -33,4 +44,6 @@ def get_supported_encodings( if len(supported_encodings) == 0: # pylint: disable=broad-exception-raised raise Exception('No supported encodings found') - return supported_encodings + if 'JSON_IETF' not in supported_encodings: + # pylint: disable=broad-exception-raised + raise Exception('JSON_IETF encoding not supported') diff --git a/src/device/service/drivers/gnmi_openconfig/tools/Path.py b/src/device/service/drivers/gnmi_openconfig/tools/Path.py index 7ce0631dada58ce581900c974a0b24d170df2f39..1955fc4d94eff0106d324a067809f93151da5699 100644 --- a/src/device/service/drivers/gnmi_openconfig/tools/Path.py +++ b/src/device/service/drivers/gnmi_openconfig/tools/Path.py @@ -19,8 +19,8 @@ from ..gnmi.gnmi_pb2 import Path, PathElem RE_PATH_SPLIT = re.compile(r'/(?=(?:[^\[\]]|\[[^\[\]]+\])*$)') RE_PATH_KEYS = re.compile(r'\[(.*?)\]') -def path_from_string(path='/'): - if not path: return Path(elem=[]) +def path_from_string(path='/'): #, origin='openconfig' + if not path: return Path(elem=[]) #, origin=origin if path[0] == '/': if path[-1] == '/': @@ -40,7 +40,7 @@ def path_from_string(path='/'): dict_keys = dict(x.split('=', 1) for x in elem_keys) path.append(PathElem(name=elem_name, key=dict_keys)) - return Path(elem=path) + return Path(elem=path) #, origin=origin def path_to_string(path : Path) -> str: path_parts = list() diff --git a/src/device/service/drivers/gnmi_openconfig/tools/Value.py b/src/device/service/drivers/gnmi_openconfig/tools/Value.py index 077bdd40ec8859202b8e8e6053b731339edfe7fe..325dacd51b8b1157ea63ff71eed1f9a758d56c3b 100644 --- a/src/device/service/drivers/gnmi_openconfig/tools/Value.py +++ b/src/device/service/drivers/gnmi_openconfig/tools/Value.py @@ -13,9 +13,36 @@ # limitations under the License. import base64, json -from typing import Any +from typing import Any, Dict, List, Union from ..gnmi.gnmi_pb2 import TypedValue +REMOVE_NAMESPACES = ( + 'arista-intf-augments', + 'arista-netinst-augments', + 'openconfig-hercules-platform', +) + +def remove_fields(key : str) -> bool: + parts = key.split(':') + if len(parts) == 1: return False + namespace = parts[0].lower() + return namespace in REMOVE_NAMESPACES + +def recursive_remove_keys(container : Union[Dict, List, Any]) -> None: + if isinstance(container, dict): + remove_keys = [ + key + for key in container.keys() + if remove_fields(key) + ] + for key in remove_keys: + container.pop(key, None) + for value in container.values(): + recursive_remove_keys(value) + elif isinstance(container, list): + for value in container: + recursive_remove_keys(value) + def decode_value(value : TypedValue) -> Any: encoding = value.WhichOneof('value') if encoding == 'json_val': @@ -31,9 +58,13 @@ def decode_value(value : TypedValue) -> Any: raise NotImplementedError() #return value elif encoding == 'json_ietf_val': - value : str = value.json_ietf_val + str_value : str = value.json_ietf_val.decode('UTF-8') try: - return json.loads(value) + # Cleanup and normalize the records according to OpenConfig + #str_value = str_value.replace('openconfig-platform-types:', 'oc-platform-types:') + json_value = json.loads(str_value) + recursive_remove_keys(json_value) + return json_value except json.decoder.JSONDecodeError: # Assume is Base64-encoded b_b64_value = value.encode('UTF-8') diff --git a/src/device/service/drivers/oc_driver/OCDriver.py b/src/device/service/drivers/oc_driver/OCDriver.py index 3d0078c85eedd72c0d8df3b5e4aec3372a6f5782..b75d627b422f93fe1b9b0c06caed46c87d83a135 100644 --- a/src/device/service/drivers/oc_driver/OCDriver.py +++ b/src/device/service/drivers/oc_driver/OCDriver.py @@ -15,10 +15,8 @@ import json import logging, pytz, queue, re, threading #import lxml.etree as ET - from typing import Any, List, Tuple, Union from apscheduler.executors.pool import ThreadPoolExecutor - from apscheduler.jobstores.memory import MemoryJobStore from apscheduler.schedulers.background import BackgroundScheduler from ncclient.manager import Manager, connect_ssh @@ -30,16 +28,15 @@ from device.service.driver_api._Driver import _Driver from device.service.driver_api.AnyTreeTools import TreeNode from .templates.VPN.common import seperate_port_config #from .Tools import xml_pretty_print, xml_to_dict, xml_to_file - -from .templates.VPN.roadms import (create_media_channel,create_optical_band, disable_media_channel - , delete_optical_band,create_media_channel_v2) -from .templates.VPN.transponder import (edit_optical_channel ,change_optical_channel_status) +from .templates.VPN.roadms import ( + create_optical_band, disable_media_channel, delete_optical_band, create_media_channel_v2 +) +from .templates.VPN.transponder import edit_optical_channel, change_optical_channel_status from .RetryDecorator import retry from context.client.ContextClient import ContextClient -from common.proto.context_pb2 import ( - OpticalConfig) +from common.proto.context_pb2 import OpticalConfig from .templates.descovery_tool.transponders import transponder_values_extractor -from .templates.descovery_tool.roadms import roadm_values_extractor ,extract_media_channels +from .templates.descovery_tool.roadms import roadm_values_extractor, extract_media_channels from .templates.descovery_tool.open_roadm import openroadm_values_extractor from .templates.VPN.openroadm import network_media_channel_handler @@ -60,13 +57,14 @@ RE_GET_ENDPOINT_FROM_INTERFACE_XPATH = re.compile(r".*interface\[oci\:name\='([^ SAMPLE_EVICTION_SECONDS = 30.0 # seconds SAMPLE_RESOURCE_KEY = 'interfaces/interface/state/counters' -transponder_filter_fields= ["frequency","target-output-power","operational-mode","line-port","admin-state"] +transponder_filter_fields = ["frequency", "target-output-power", "operational-mode", "line-port", "admin-state"] MAX_RETRIES = 15 DELAY_FUNCTION = delay_exponential(initial=0.01, increment=2.0, maximum=5.0) RETRY_DECORATOR = retry(max_retries=MAX_RETRIES, delay_function=DELAY_FUNCTION, prepare_method_name='connect') context_client= ContextClient() port_xml_filter=f"/components/component[state[type='oc-platform-types:PORT']]/*" transceiver_xml_filter="/components/component[state[type='oc-platform-types:TRANSCEIVER']]/*" + class NetconfSessionHandler: def __init__(self, address : str, port : int, **settings) -> None: self.__lock = threading.RLock() @@ -114,10 +112,10 @@ class NetconfSessionHandler: @property def vendor(self): return self.__vendor - + @property def version(self): return self.__version - + @property def message_renderer(self): return self.__message_renderer @@ -125,7 +123,6 @@ class NetconfSessionHandler: def get(self, filter=None, with_defaults=None): # pylint: disable=redefined-builtin with self.__lock: config=self.__manager.get(filter=filter, with_defaults=with_defaults) - return config @RETRY_DECORATOR @@ -133,20 +130,16 @@ class NetconfSessionHandler: self, config, target='running', default_operation=None, test_option=None, error_option=None, format='xml' # pylint: disable=redefined-builtin ): - response = None with self.__lock: response= self.__manager.edit_config( config, target=target, default_operation=default_operation, test_option=test_option, error_option=error_option, format=format) - logging.info(f"resonse from edit {response}") + str_respones = str(response) if re.search(r'', str_respones): - return True - - return False - + return False @RETRY_DECORATOR def locked(self, target): @@ -155,7 +148,7 @@ class NetconfSessionHandler: @RETRY_DECORATOR def commit(self, confirmed=False, timeout=None, persist=None, persist_id=None): return self.__manager.commit(confirmed=confirmed, timeout=timeout, persist=persist, persist_id=persist_id) - + DRIVER_NAME = 'oc' METRICS_POOL = MetricsPool('Device', 'Driver', labels={'driver': DRIVER_NAME}) def edit_config( # edit the configuration of openconfig devices @@ -184,8 +177,8 @@ def edit_config( else : #roadm media-channel str_config_messages=create_media_channel_v2(resources) - #Disabling of the Configuration - else : + #Disabling of the Configuration + else: # Device type is Transponder if (conditions['edit_type'] == "optical-channel"): _,ports,_=seperate_port_config(resources) @@ -196,35 +189,27 @@ def edit_config( str_config_messages=delete_optical_band(resources) else : str_config_messages=disable_media_channel(resources) - - - - logging.info(f" edit messages {str_config_messages}") - + for str_config_message in str_config_messages: - # configuration of the received templates - if str_config_message is None: raise UnsupportedResourceKeyException("CONFIG") - - result= netconf_handler.edit_config( # configure the device - config=str_config_message, target=target, default_operation=default_operation, - test_option=test_option, error_option=error_option, format=format) - if commit_per_rule: - netconf_handler.commit() # configuration commit - + # configuration of the received templates + if str_config_message is None: raise UnsupportedResourceKeyException("CONFIG") + result= netconf_handler.edit_config( # configure the device + config=str_config_message, target=target, default_operation=default_operation, + test_option=test_option, error_option=error_option, format=format) + if commit_per_rule: + netconf_handler.commit() # configuration commit + #results[i] = True results.append(result) - + return results - class OCDriver(_Driver): def __init__(self, address : str, port : int,device_uuid=None, **settings) -> None: super().__init__(DRIVER_NAME, address, port, **settings) self.__logger = logging.getLogger('{:s}:[{:s}:{:s}]'.format(str(__name__), str(self.address), str(self.port))) self.__lock = threading.Lock() - - - self.__subscriptions = TreeNode('.') + self.__started = threading.Event() self.__terminate = threading.Event() self.__scheduler = BackgroundScheduler(daemon=True) @@ -234,31 +219,24 @@ class OCDriver(_Driver): job_defaults = {'coalesce': False, 'max_instances': 3}, timezone=pytz.utc) self._temp_address=f"{address}{port}" - self.__out_samples = queue.Queue() - logging.info(f"setting ocdriver address {self.address} and {self.port} {self.settings}") + self.__netconf_handler = NetconfSessionHandler(self.address, self.port, **(self.settings)) self.__type = self.settings.get("type","optical-transponder") - self.__device_uuid=device_uuid - self.__pending_tasks=[] + self.__device_uuid = device_uuid self.Connect() - logging.info(f"settings {settings}") def Connect(self) -> bool: with self.__lock: if self.__started.is_set(): return True self.__netconf_handler.connect() - self.__scheduler.start() self.__started.set() return True def Disconnect(self) -> bool: with self.__lock: - self.__terminate.set() - if not self.__started.is_set(): return True - self.__scheduler.shutdown() self.__netconf_handler.disconnect() return True @@ -270,100 +248,91 @@ class OCDriver(_Driver): @metered_subclass_method(METRICS_POOL) def GetConfig(self, resource_keys : List[str] = []) -> List[Tuple[str, Union[Any, None, Exception]]]: - - chk_type('resources', resource_keys, list) results = [] opticalConfig= OpticalConfig() - - with self.__lock: - - config={} - transceivers={} - oc_values={} - ports_result=[] - oc_values["type"]=self.__type - try: + with self.__lock: + config = {} + transceivers = {} + oc_values = {} + ports_result = [] + oc_values["type"] = self.__type + try: xml_data = self.__netconf_handler.get().data_xml - logging.info(f"type {self.__type}") - if (self.__type == "optical-transponder"): - - extracted_values=transponder_values_extractor(data_xml=xml_data,resource_keys=transponder_filter_fields,dic=config) - transceivers,optical_channels_params,channel_namespace,endpoints,ports_result=extracted_values - oc_values["channels"]=optical_channels_params - oc_values["transceivers"]=transceivers - oc_values["channel_namespace"]=channel_namespace - oc_values["endpoints"]=endpoints - oc_values["ports"]=ports_result - elif (self.__type =='openroadm') : - extracted_values=openroadm_values_extractor(data_xml=xml_data,resource_keys=[],dic=oc_values) + if self.__type == "optical-transponder": + extracted_values = transponder_values_extractor( + data_xml=xml_data, resource_keys=transponder_filter_fields, dic=config + ) + transceivers, optical_channels_params, channel_namespace, endpoints, ports_result = extracted_values + oc_values["channels"] = optical_channels_params + oc_values["transceivers"] = transceivers + oc_values["channel_namespace"] = channel_namespace + oc_values["endpoints"] = endpoints + oc_values["ports"] = ports_result + elif (self.__type =='openroadm'): + extracted_values=openroadm_values_extractor(data_xml=xml_data, resource_keys=[], dic=oc_values) ports_result = extracted_values[1] oc_values['interfaces']=extracted_values[0]['interfaces'] - - - - - else : - extracted_values=roadm_values_extractor(data_xml=xml_data,resource_keys=[],dic=config) + else: + extracted_values = roadm_values_extractor(data_xml=xml_data, resource_keys=[], dic=config) ports_result = extracted_values[0] oc_values['optical_bands']=extracted_values[1] oc_values['media_channels']=extracted_values[2] - #results.append((resource_key, e)) # if validation fails, store the exception - + #results.append((resource_key, e)) # if validation fails, store the exception + #///////////////////////// store optical configurtaion //////////////////////////////////////////////////////// - - + opticalConfig.config=json.dumps(oc_values) if self.__device_uuid is not None: - opticalConfig.device_id.device_uuid.uuid=self.__device_uuid results.append((f"/opticalconfigs/opticalconfig/{self.__device_uuid}",{"opticalconfig":opticalConfig})) # context_client.connect() # config_id=context_client.SetOpticalConfig(opticalConfig) - # context_client.close() except Exception as e: # pylint: disable=broad-except - MSG = 'Exception retrieving {:s}' - self.__logger.info("error from getConfig %s",e) - self.__logger.exception(MSG.format(e)) - - if(len(ports_result)>0) : results.extend(ports_result) - logging.info(f"from OCDriver {results}") + MSG = 'Exception retrieving {:s}' + self.__logger.info("error from getConfig %s",e) + self.__logger.exception(MSG.format(e)) + + if len(ports_result) > 0: results.extend(ports_result) return results @metered_subclass_method(METRICS_POOL) def SetConfig(self, resources : List[Tuple[str, Any]],conditions:dict) -> List[Union[bool, Exception]]: - logging.info(f"from setConfig {resources}") - logging.info(f"from setConfig condititons {conditions}") if len(resources) == 0: return [] - results=[] + results = [] with self.__lock: - if self.__netconf_handler.use_candidate: - with self.__netconf_handler.locked(target='candidate'): - results = edit_config( - self.__netconf_handler, self.__logger, resources,conditions, target='candidate', - commit_per_rule=self.__netconf_handler.commit_per_rule - ,) + if self.__netconf_handler.use_candidate: + with self.__netconf_handler.locked(target='candidate'): + results = edit_config( + self.__netconf_handler, self.__logger, resources, conditions, target='candidate', + commit_per_rule=self.__netconf_handler.commit_per_rule + ) else: - results = edit_config(self.__netconf_handler, self.__logger, resources,conditions=conditions - ) + results = edit_config( + self.__netconf_handler, self.__logger, resources, conditions=conditions + ) return results @metered_subclass_method(METRICS_POOL) - def DeleteConfig(self, resources : List[Tuple[str, Any]],conditions:dict,optical_device_configuration=None) -> List[Union[bool, Exception]]: + def DeleteConfig( + self, resources : List[Tuple[str, Any]], conditions : dict, + optical_device_configuration = None + ) -> List[Union[bool, Exception]]: chk_type('resources', resources, list) if len(resources) == 0: return [] - + with self.__lock: if self.__netconf_handler.use_candidate: with self.__netconf_handler.locked(target='candidate'): results = edit_config( self.__netconf_handler, self.__logger, resources, target='candidate', delete=True, - commit_per_rule=self.__netconf_handler.commit_per_rule,conditions=conditions) + commit_per_rule=self.__netconf_handler.commit_per_rule, conditions=conditions + ) else: - results = edit_config(self.__netconf_handler, self.__logger, resources, delete=True,conditions=conditions) + results = edit_config( + self.__netconf_handler, self.__logger, resources, delete=True, conditions=conditions + ) return results - - diff --git a/src/device/service/drivers/oc_driver/templates/Interfaces/interfaces.py b/src/device/service/drivers/oc_driver/templates/Interfaces/interfaces.py index 87ba8835ac6f7ad66a709be90195e6597bc2bf6c..b8c3812f292270b63dbe1391d922cbd989415458 100644 --- a/src/device/service/drivers/oc_driver/templates/Interfaces/interfaces.py +++ b/src/device/service/drivers/oc_driver/templates/Interfaces/interfaces.py @@ -14,6 +14,7 @@ from yattag import Doc, indent import logging + def interface_template (interface_data:dict) : data={"name":"eth0","ip":"192.168.1.1","prefix-length":'24'} doc, tag, text = Doc().tagtext() @@ -31,13 +32,10 @@ def interface_template (interface_data:dict) : with tag('config'): with tag('ip'):text(interface_data["ip"]) with tag('prefix-length'):text(interface_data["prefix-length"]) - + result = indent( doc.getvalue(), indentation = ' '*2, newline = '\r\n' ) - logging.info("interfaces %s",result) - return result - - \ No newline at end of file + return result diff --git a/src/device/service/drivers/oc_driver/templates/Tools.py b/src/device/service/drivers/oc_driver/templates/Tools.py index 93f3ce3df458d4ab726680607093b6f8968ff596..92607aca88c1581218c97484c7dfcc87831b5912 100644 --- a/src/device/service/drivers/oc_driver/templates/Tools.py +++ b/src/device/service/drivers/oc_driver/templates/Tools.py @@ -166,7 +166,7 @@ def extract_channels_based_on_type (xml_data:str): return channel_names def extract_value(resource_key:str,xml_data:str,dic:dict,channel_name:str,channel_namespace:str): - logging.info(f"resource_key {resource_key} and channgel_name {channel_name} and channel_namespace {channel_namespace}") + xml_bytes = xml_data.encode("utf-8") root = ET.fromstring(xml_bytes) channel_name=channel_name if 'index' not in channel_name else channel_name['index'] @@ -186,7 +186,7 @@ def extract_value(resource_key:str,xml_data:str,dic:dict,channel_name:str,channe else: logging.info("element is None") print(" element not found.") - logging.info(f"dic {dic}") + return dic @@ -492,7 +492,3 @@ def extract_openroadm_info(xml_data:str): if (clli is not None): roadm_info['clli']=clli.text return roadm_info - - - - diff --git a/src/device/service/drivers/oc_driver/templates/VPN/common.py b/src/device/service/drivers/oc_driver/templates/VPN/common.py index 3b21974f08f842cf6a19023f23f52e515b411a47..d84afc5563ad9cf1fbc7fda44800b90876ee302e 100644 --- a/src/device/service/drivers/oc_driver/templates/VPN/common.py +++ b/src/device/service/drivers/oc_driver/templates/VPN/common.py @@ -1,5 +1,4 @@ - -# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) +# Copyright 2022-2024 ETSI OSG/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. @@ -14,26 +13,6 @@ # limitations under the License. -from yattag import Doc, indent -import logging - - - - - - - - - - - - - - - - - - def seperate_port_config(resources:list,unwanted_keys=[])->list[list,dict,str]: config=[] ports={} @@ -51,8 +30,6 @@ def seperate_port_config(resources:list,unwanted_keys=[])->list[list,dict,str]: return [config,ports,index] - - def extract_ports (resources:list): if len(resources) ==0 :return ports=[] @@ -60,10 +37,6 @@ def extract_ports (resources:list): if flow is not None: ports = flow['value'] return ports - - - - def filter_config(resources:list,unwanted_keys=[])->list[list,dict,str]: config=[] @@ -80,5 +53,3 @@ def filter_config(resources:list,unwanted_keys=[])->list[list,dict,str]: ports = extract_ports(resources=resources) return [config,ports,index] - - diff --git a/src/device/service/drivers/oc_driver/templates/VPN/physical.py b/src/device/service/drivers/oc_driver/templates/VPN/physical.py index cc59c721b7ea4a68cc49ee23b74dfd3cab442db7..11e6df5d99f8d365eeaeec3960da52f28c717551 100644 --- a/src/device/service/drivers/oc_driver/templates/VPN/physical.py +++ b/src/device/service/drivers/oc_driver/templates/VPN/physical.py @@ -41,7 +41,7 @@ def create_optical_channel(resources:list[dict],ports:list[dict],config:list[dic data ={} data["channel_namespace"]=next((i["value"] for i in resources if i["resource_key"] == "channel_namespace"), None) #config,ports,index=seperate_port_config(resources,unwanted_keys=unwanted_keys) - logging.info(f"ports are {ports}") + port_val = "" if 'destination_port' in ports and ports['destination_port'][0] is not None: port_val = ports['destination_port'][0] @@ -127,7 +127,7 @@ def create_optical_band (resources) : results =[] unwanted_keys=['destination_port','source_port','channel_namespace','frequency','optical-band-parent'] config,ports,index= seperate_port_config(resources,unwanted_keys=unwanted_keys) - logging.info(f"BBBBBBBBBBBBB {ports}") + doc, tag, text = Doc().tagtext() #with tag('config'): with tag('config',xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"): @@ -175,7 +175,7 @@ def create_media_channel (resources): results=[] unwanted_keys=['destination_port','source_port','channel_namespace','frequency','operational-mode', 'optical-band-parent'] config,ports,index= seperate_port_config(resources,unwanted_keys=unwanted_keys) - logging.info(f"BBBBBBBBBBBBB {ports}") + doc, tag, text = Doc().tagtext() #with tag('config'): with tag('config',xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"): @@ -254,11 +254,11 @@ def edit_optical_channel (resources:list[dict]): channel_name=next((i["value"] for i in resources if i["resource_key"]=="channel_name" and i["value"] != None),None) admin_state= next((i["value"] for i in resources if i["resource_key"]== "admin-state" and i["value"] != None) , None) - logging.info(f"admin state is {admin_state}") + if channel_name is not None : if (admin_state is not None): results.extend(change_optical_channel_status(channel_name=channel_name,state=admin_state,ports=ports)) if admin_state is None : results.extend(create_optical_channel(resources=resources,ports=ports,config=config) ) - return results \ No newline at end of file + return results diff --git a/src/device/service/drivers/oc_driver/templates/VPN/roadms.py b/src/device/service/drivers/oc_driver/templates/VPN/roadms.py index 6a83a7a03465b099d19c23b1a67ee2690384214a..7e076588cc160cf22d773476119f8e91001a5053 100644 --- a/src/device/service/drivers/oc_driver/templates/VPN/roadms.py +++ b/src/device/service/drivers/oc_driver/templates/VPN/roadms.py @@ -1,4 +1,4 @@ -# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) +# Copyright 2022-2024 ETSI OSG/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. @@ -239,7 +239,7 @@ def create_optical_band (resources) : results =[] unwanted_keys=['destination_port','source_port','channel_namespace','frequency','optical-band-parent','handled_flow'] config,ports,index= filter_config(resources,unwanted_keys=unwanted_keys) - logging.info(f"SSSSSSSSSSSSSSS {ports}") + #with tag('config'): n = 0 for flow in ports: @@ -251,7 +251,7 @@ def create_optical_band (resources) : #with tag('optical-band', operation="create"): src,dest=flow - logging.info(f"SSSSSSSSSSSSSSS {src}, {dest}") + with tag('optical-band'): if index is not None: with tag('index'):text(str(int(index)+n)) @@ -354,4 +354,4 @@ def delete_optical_band (resources:list): newline = '' ) results.append(result) - return results \ No newline at end of file + return results diff --git a/src/device/service/drivers/oc_driver/templates/VPN/transponder.py b/src/device/service/drivers/oc_driver/templates/VPN/transponder.py index c4a2c3c521e299adf129765e88543056c6b56cb9..a41c7e9a0853a371bf1f6d8d343913c52f9365ac 100644 --- a/src/device/service/drivers/oc_driver/templates/VPN/transponder.py +++ b/src/device/service/drivers/oc_driver/templates/VPN/transponder.py @@ -1,4 +1,4 @@ -# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) +# Copyright 2022-2024 ETSI OSG/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. @@ -13,8 +13,6 @@ # limitations under the License. - - from yattag import Doc, indent import logging @@ -72,7 +70,7 @@ def create_optical_channel(resources:list[dict],ports:list[dict],config:list[dic data ={} data["channel_namespace"]=next((i["value"] for i in resources if i["resource_key"] == "channel_namespace"), None) #config,ports,index=seperate_port_config(resources,unwanted_keys=unwanted_keys) - logging.info(f"ports are {ports}") + port_val = "" if 'destination_port' in ports and ports['destination_port'][0] is not None: port_val = ports['destination_port'][0] @@ -141,7 +139,7 @@ def change_optical_channel_status (state:str,ports:list[dict]) : def edit_optical_channel (resources:list[dict]): - logging.info(f"building xml {resources}") + unwanted_keys=['destination_port','source_port','channel_namespace' ,'optical-band-parent','index', 'name','admin-state','handled_flow'] config,ports,index=seperate_port_config(resources,unwanted_keys=unwanted_keys) @@ -149,12 +147,11 @@ def edit_optical_channel (resources:list[dict]): # channel_name=next((i["value"] for i in resources if i["resource_key"]=="channel_name" and i["value"] != None),None) # admin_state= next((i["value"] for i in resources if i["resource_key"]== "admin-state" and i["value"] != None) , None) - # logging.info(f"channel_name {channel_name}") + # results.extend(change_optical_channel_status(state=admin_state,ports=ports)) # else : - logging.info(f"config_xml {config}") - logging.info(f"ports_xml {ports}") + results.extend(create_optical_channel(resources=resources,ports=ports,config=config) ) - return results \ No newline at end of file + return results diff --git a/src/device/service/drivers/oc_driver/templates/descovery_tool/roadms.py b/src/device/service/drivers/oc_driver/templates/descovery_tool/roadms.py index 3140d5aa1b5474bd0e793756d8b24ce6c8dc6071..f7ebfde705f9e094fc74e7c0ef8f1130345cdb30 100644 --- a/src/device/service/drivers/oc_driver/templates/descovery_tool/roadms.py +++ b/src/device/service/drivers/oc_driver/templates/descovery_tool/roadms.py @@ -1,5 +1,4 @@ - -# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) +# Copyright 2022-2024 ETSI OSG/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. @@ -13,14 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -import re,logging -import json +import re import lxml.etree as ET -from typing import Collection, Dict, Any - - - - def extract_channel_xmlns (data_xml:str,is_opticalband:bool): xml_bytes = data_xml.encode("utf-8") @@ -49,25 +42,19 @@ def extract_channel_xmlns (data_xml:str,is_opticalband:bool): if channels is not None: optical_channel_namespace = channels.tag.replace("optical-bands", "") namespace=optical_channel_namespace.replace("{", "").replace("}", "") - - return namespace - - def extract_optical_bands (data_xml:str,namespace:str): namespaces={"oc":namespace} xml_bytes = data_xml.encode("utf-8") root = ET.fromstring(xml_bytes) op_bands=[] optical_bands= root.find('.//oc:optical-bands',namespaces) - logging.info(f'optical_bands {optical_bands}') + if optical_bands is not None : optical_bands_ele= optical_bands.findall('.//oc:optical-band',namespaces) - - + for optical_band in optical_bands_ele: - band_ele=optical_band.find('.//oc:name',namespaces) lower_freq_ele=optical_band.find('.//oc:lower-frequency',namespaces) upper_freq_ele=optical_band.find('.//oc:upper-frequency',namespaces) @@ -97,9 +84,7 @@ def extract_media_channels (data_xml:str): op_bands=[] if media_channels is not None : media_channels_ele= media_channels.findall('.//oc:channel',namespaces) - for optical_band in media_channels_ele: - band_ele=optical_band.find('.//oc:name',namespaces) lower_freq_ele=optical_band.find('.//oc:lower-frequency',namespaces) upper_freq_ele=optical_band.find('.//oc:upper-frequency',namespaces) @@ -119,62 +104,46 @@ def extract_media_channels (data_xml:str): 'channel_index':channel_index.text if channel_index is not None else None } op_bands.append(op_band_obj) - + return op_bands - - - def extract_roadm_ports_old (xml_data:str): - ports =[] pattern = r'\bMG_ON_OPTICAL_PORT_WAVEBAND\b' xml_bytes = xml_data.encode("utf-8") root = ET.fromstring(xml_bytes) with open('xml.log', 'w') as f: print(xml_bytes, file=f) - namespace = {'oc': 'http://openconfig.net/yang/platform'} ports = [] components = root.findall('.//oc:component',namespace) print(f"component {components}") - - + for component in components: - properties = component.find(".//oc:properties",namespace) - if (properties is not None): for property in properties : value = property.find(".//oc:value",namespace) - if (re.search(pattern,value.text)): name_element= component.find(".//oc:name",namespace) ports.append(name_element.text) return ports - def extract_roadm_ports (xml_data:str): - ports =[] pattern2=r'\bMG_ON_PORT_TYPE' pattern = r'\bMG_ON_OPTICAL_PORT_WAVEBAND\b' xml_bytes = xml_data.encode("utf-8") root = ET.fromstring(xml_bytes) - - namespace = {'oc': 'http://openconfig.net/yang/platform'} ports = [] components = root.findall('.//oc:component',namespace) #print(f"component {components}") - - + for component in components: - properties = component.find(".//oc:properties",namespace) - if (properties is not None): for property in properties : value = property.find(".//oc:value",namespace) @@ -184,28 +153,19 @@ def extract_roadm_ports (xml_data:str): name_element= component.find(".//oc:name",namespace) print('value',value.text) ports.append((name_element.text,value.text)) - return ports - - def roadm_values_extractor (data_xml:str,resource_keys:list,dic:dict): - ports_result=[] - ports = extract_roadm_ports(data_xml) - namespcae= extract_channel_xmlns(data_xml,True) - optical_bands=extract_optical_bands(data_xml=data_xml,namespace=namespcae) - media_cahannels=extract_media_channels(data_xml) - - - if len(ports)>0 : - for port in ports : - name,type=port - resource_key = '/endpoints/endpoint[{:s}]'.format(name) - resource_value = {'uuid': name, 'type':type} - - ports_result.append((resource_key, resource_value)) - - return [ports_result,optical_bands,media_cahannels] - - - \ No newline at end of file + ports_result=[] + ports = extract_roadm_ports(data_xml) + namespcae= extract_channel_xmlns(data_xml,True) + optical_bands=extract_optical_bands(data_xml=data_xml,namespace=namespcae) + media_cahannels=extract_media_channels(data_xml) + + if len(ports)>0 : + for port in ports : + name,type=port + resource_key = '/endpoints/endpoint[{:s}]'.format(name) + resource_value = {'uuid': name, 'type':type} + ports_result.append((resource_key, resource_value)) + return [ports_result,optical_bands,media_cahannels] diff --git a/src/device/service/drivers/oc_driver/templates/descovery_tool/transponders.py b/src/device/service/drivers/oc_driver/templates/descovery_tool/transponders.py index 892ef98dc1f001a859b5ad8e102218607e204540..e0ffc12ffd63f2e5b32ea4c7a813acee7d146c58 100644 --- a/src/device/service/drivers/oc_driver/templates/descovery_tool/transponders.py +++ b/src/device/service/drivers/oc_driver/templates/descovery_tool/transponders.py @@ -1,4 +1,4 @@ -# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) +# Copyright 2022-2024 ETSI OSG/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. @@ -147,7 +147,7 @@ def extract_channels_based_on_type (xml_data:str): return channel_names def extract_value(resource_key:str,xml_data:str,dic:dict,channel_name:str,channel_namespace:str): - logging.info(f"resource_key {resource_key} and channgel_name {channel_name} and channel_namespace {channel_namespace}") + xml_bytes = xml_data.encode("utf-8") root = ET.fromstring(xml_bytes) channel_name=channel_name if 'index' not in channel_name else channel_name['index'] @@ -167,7 +167,7 @@ def extract_value(resource_key:str,xml_data:str,dic:dict,channel_name:str,channe else: logging.info("element is None") print(" element not found.") - logging.info(f"dic {dic}") + return dic @@ -266,7 +266,7 @@ def transponder_values_extractor(data_xml:str,resource_keys:list,dic:dict): # channel_names=extract_channels_based_on_type(xml_data=data_xml) # if len(channel_names)==0 : channel_names= extract_channels_based_on_channelnamespace(xml_data=data_xml,channel_namespace=channel_namespace,is_opticalband=is_opticalband) - logging.info(f"channel_names {channel_names}") + ports = extract_ports_based_on_type(data_xml) optical_channels_params=[] ports_result=[] @@ -299,4 +299,3 @@ def transponder_values_extractor(data_xml:str,resource_keys:list,dic:dict): return [transceivers_dic,optical_channels_params,channel_namespace,endpoints,ports_result] - \ No newline at end of file diff --git a/src/device/tests/gnmi_openconfig/__init__.py b/src/device/tests/gnmi_openconfig/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..3ee6f7071f145e06c3aeaefc09a43ccd88e619e3 --- /dev/null +++ b/src/device/tests/gnmi_openconfig/__init__.py @@ -0,0 +1,14 @@ +# Copyright 2022-2024 ETSI OSG/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. + diff --git a/src/device/tests/gnmi_openconfig/storage/Storage.py b/src/device/tests/gnmi_openconfig/storage/Storage.py new file mode 100644 index 0000000000000000000000000000000000000000..ba3596be791e0bc8a473596e6c238eb87fe21f89 --- /dev/null +++ b/src/device/tests/gnmi_openconfig/storage/Storage.py @@ -0,0 +1,23 @@ +# Copyright 2022-2024 ETSI OSG/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. + +from .StorageEndpoints import StorageEndpoints +from .StorageInterface import StorageInterface +from .StorageNetworkInstance import StorageNetworkInstance + +class Storage: + def __init__(self) -> None: + self.endpoints = StorageEndpoints() + self.interfaces = StorageInterface() + self.network_instances = StorageNetworkInstance() diff --git a/src/device/tests/gnmi_openconfig/storage/StorageEndpoints.py b/src/device/tests/gnmi_openconfig/storage/StorageEndpoints.py new file mode 100644 index 0000000000000000000000000000000000000000..9876c8019317e33e58a64a86a477ea06c1ce76a9 --- /dev/null +++ b/src/device/tests/gnmi_openconfig/storage/StorageEndpoints.py @@ -0,0 +1,75 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import re +from typing import Dict, List, Tuple +from .Tools import compose_resources + +RE_RESKEY_ENDPOINT = re.compile(r'^\/endpoints\/endpoint\[([^\]]+)\]$') + +ENDPOINT_PACKET_SAMPLE_TYPES : Dict[int, str] = { + 101: '/openconfig-interfaces:interfaces/interface[name={:s}]/state/counters/out-pkts', + 102: '/openconfig-interfaces:interfaces/interface[name={:s}]/state/counters/in-pkts', + 201: '/openconfig-interfaces:interfaces/interface[name={:s}]/state/counters/out-octets', + 202: '/openconfig-interfaces:interfaces/interface[name={:s}]/state/counters/in-octets', +} + +class Endpoints: + STRUCT : List[Tuple[str, List[str]]] = [ + ('/endpoints/endpoint[{:s}]', ['uuid', 'type', 'sample_types']), + ] + + def __init__(self) -> None: + self._items : Dict[str, Dict] = dict() + + def add(self, ep_uuid : str, resource_value : Dict) -> None: + item = self._items.setdefault(ep_uuid, dict()) + item['uuid'] = ep_uuid + + for _, field_names in Endpoints.STRUCT: + field_names = set(field_names) + item.update({k:v for k,v in resource_value.items() if k in field_names}) + + item['sample_types'] = { + sample_type_id : sample_type_path.format(ep_uuid) + for sample_type_id, sample_type_path in ENDPOINT_PACKET_SAMPLE_TYPES.items() + } + + def get(self, ep_uuid : str) -> Dict: + return self._items.get(ep_uuid) + + def remove(self, ep_uuid : str) -> None: + self._items.pop(ep_uuid, None) + + def compose_resources(self) -> List[Dict]: + return compose_resources(self._items, Endpoints.STRUCT) + +class StorageEndpoints: + def __init__(self) -> None: + self.endpoints = Endpoints() + + def populate(self, resources : List[Tuple[str, Dict]]) -> None: + for resource_key, resource_value in resources: + match = RE_RESKEY_ENDPOINT.match(resource_key) + if match is not None: + self.endpoints.add(match.group(1), resource_value) + continue + + MSG = 'Unhandled Resource Key: {:s} => {:s}' + raise Exception(MSG.format(str(resource_key), str(resource_value))) + + def get_expected_config(self) -> List[Tuple[str, Dict]]: + expected_config = list() + expected_config.extend(self.endpoints.compose_resources()) + return expected_config diff --git a/src/device/tests/gnmi_openconfig/storage/StorageInterface copy.py b/src/device/tests/gnmi_openconfig/storage/StorageInterface copy.py new file mode 100644 index 0000000000000000000000000000000000000000..1929ced36b9c597656d4f6022616c78c78539a6a --- /dev/null +++ b/src/device/tests/gnmi_openconfig/storage/StorageInterface copy.py @@ -0,0 +1,134 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import re +from typing import Dict, List, Tuple +from .Tools import compose_resources + +PREFIX = r'^\/interface\[([^\]]+)\]' +RE_RESKEY_INTERFACE = re.compile(PREFIX + r'$') +RE_RESKEY_ETHERNET = re.compile(PREFIX + r'\/ethernet$') +RE_RESKEY_SUBINTERFACE = re.compile(PREFIX + r'\/subinterface\[([^\]]+)\]$') +#RE_RESKEY_IPV4_ADDRESS = re.compile(PREFIX + r'\/subinterface\[([^\]]+)\]\/ipv4\[([^\]]+)\]$') + +class Interfaces: + STRUCT : List[Tuple[str, List[str]]] = [ + ('/interface[{:s}]', ['name', 'type', 'admin-status', 'oper-status', 'management', 'mtu', 'ifindex', + 'hardware-port', 'transceiver']), + ('/interface[{:s}]/ethernet', ['port-speed', 'negotiated-port-speed', 'mac-address', 'hw-mac-address']), + ] + + def __init__(self) -> None: + self._items : Dict[str, Dict] = dict() + + def add(self, if_name : str, resource_value : Dict) -> None: + item = self._items.setdefault(if_name, dict()) + item['name'] = if_name + for _, field_names in Interfaces.STRUCT: + field_names = set(field_names) + item.update({k:v for k,v in resource_value.items() if k in field_names}) + + def get(self, if_name : str) -> Dict: + return self._items.get(if_name) + + def remove(self, if_name : str) -> None: + self._items.pop(if_name, None) + + def compose_resources(self) -> List[Dict]: + return compose_resources(self._items, Interfaces.STRUCT) + +class SubInterfaces: + STRUCT : List[Tuple[str, List[str]]] = [ + ('/interface[{:s}]/subinterface[{:d}]', ['index']), + ] + + def __init__(self) -> None: + self._items : Dict[Tuple[str, int], Dict] = dict() + + def add(self, if_name : str, subif_index : int) -> None: + item = self._items.setdefault((if_name, subif_index), dict()) + item['index'] = subif_index + + def get(self, if_name : str, subif_index : int) -> Dict: + return self._items.get((if_name, subif_index)) + + def remove(self, if_name : str, subif_index : int) -> None: + self._items.pop((if_name, subif_index), None) + + def compose_resources(self) -> List[Dict]: + return compose_resources(self._items, SubInterfaces.STRUCT) + +class IPv4Addresses: + STRUCT : List[Tuple[str, List[str]]] = [ + ('/interface[{:s}]/subinterface[{:d}]', ['index', 'address_ip', 'address_prefix', 'origin']), + ] + + def __init__(self) -> None: + self._items : Dict[Tuple[str, int], Dict] = dict() + + def add(self, if_name : str, subif_index : int, ipv4_address : str, resource_value : Dict) -> None: + item = self._items.setdefault((if_name, subif_index), dict()) + item['index' ] = subif_index + item['address_ip' ] = ipv4_address + item['origin' ] = resource_value.get('origin') + item['address_prefix'] = resource_value.get('prefix') + + def get(self, if_name : str, subif_index : int, ipv4_address : str) -> Dict: + return self._items.get((if_name, subif_index)) + + def remove(self, if_name : str, subif_index : int, ipv4_address : str) -> None: + self._items.pop((if_name, subif_index), None) + + def compose_resources(self) -> List[Dict]: + return compose_resources(self._items, IPv4Addresses.STRUCT) + +class StorageInterface: + def __init__(self) -> None: + self.interfaces = Interfaces() + self.subinterfaces = SubInterfaces() + self.ipv4_addresses = IPv4Addresses() + + def populate(self, resources : List[Tuple[str, Dict]]) -> None: + for resource_key, resource_value in resources: + match = RE_RESKEY_INTERFACE.match(resource_key) + if match is not None: + self.interfaces.add(match.group(1), resource_value) + continue + + match = RE_RESKEY_ETHERNET.match(resource_key) + if match is not None: + self.interfaces.add(match.group(1), resource_value) + continue + + match = RE_RESKEY_SUBINTERFACE.match(resource_key) + if match is not None: + self.subinterfaces.add(match.group(1), int(match.group(2))) + address_ip = resource_value.get('address_ip') + self.ipv4_addresses.add(match.group(1), int(match.group(2)), address_ip, resource_value) + continue + + #match = RE_RESKEY_IPV4_ADDRESS.match(resource_key) + #if match is not None: + # self.ipv4_addresses.add(match.group(1), int(match.group(2)), match.group(3), resource_value) + # continue + + MSG = 'Unhandled Resource Key: {:s} => {:s}' + raise Exception(MSG.format(str(resource_key), str(resource_value))) + + def get_expected_config(self) -> List[Tuple[str, Dict]]: + expected_config = list() + expected_config.extend(self.interfaces.compose_resources()) + #expected_config.extend(self.subinterfaces.compose_resources()) + expected_config.extend(self.ipv4_addresses.compose_resources()) + return expected_config diff --git a/src/device/tests/gnmi_openconfig/storage/StorageInterface.py b/src/device/tests/gnmi_openconfig/storage/StorageInterface.py new file mode 100644 index 0000000000000000000000000000000000000000..f07677c123048774326d61c88df61e66c254b612 --- /dev/null +++ b/src/device/tests/gnmi_openconfig/storage/StorageInterface.py @@ -0,0 +1,131 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import re +from typing import Dict, List, Tuple +from .Tools import compose_resources + +PREFIX = r'^\/interface\[([^\]]+)\]' +RE_RESKEY_INTERFACE = re.compile(PREFIX + r'$') +RE_RESKEY_ETHERNET = re.compile(PREFIX + r'\/ethernet$') +RE_RESKEY_SUBINTERFACE = re.compile(PREFIX + r'\/subinterface\[([^\]]+)\]$') +RE_RESKEY_IPV4_ADDRESS = re.compile(PREFIX + r'\/subinterface\[([^\]]+)\]\/ipv4\[([^\]]+)\]$') + +class Interfaces: + STRUCT : List[Tuple[str, List[str]]] = [ + ('/interface[{:s}]', ['name', 'type', 'admin-status', 'oper-status', 'management', 'mtu', 'ifindex', + 'hardware-port', 'transceiver']), + ('/interface[{:s}]/ethernet', ['port-speed', 'negotiated-port-speed', 'mac-address', 'hw-mac-address']), + ] + + def __init__(self) -> None: + self._items : Dict[str, Dict] = dict() + + def add(self, if_name : str, resource_value : Dict) -> None: + item = self._items.setdefault(if_name, dict()) + item['name'] = if_name + for _, field_names in Interfaces.STRUCT: + field_names = set(field_names) + item.update({k:v for k,v in resource_value.items() if k in field_names}) + + def get(self, if_name : str) -> Dict: + return self._items.get(if_name) + + def remove(self, if_name : str) -> None: + self._items.pop(if_name, None) + + def compose_resources(self) -> List[Dict]: + return compose_resources(self._items, Interfaces.STRUCT) + +class SubInterfaces: + STRUCT : List[Tuple[str, List[str]]] = [ + ('/interface[{:s}]/subinterface[{:d}]', ['index']), + ] + + def __init__(self) -> None: + self._items : Dict[Tuple[str, int], Dict] = dict() + + def add(self, if_name : str, subif_index : int) -> None: + item = self._items.setdefault((if_name, subif_index), dict()) + item['index'] = subif_index + + def get(self, if_name : str, subif_index : int) -> Dict: + return self._items.get((if_name, subif_index)) + + def remove(self, if_name : str, subif_index : int) -> None: + self._items.pop((if_name, subif_index), None) + + def compose_resources(self) -> List[Dict]: + return compose_resources(self._items, SubInterfaces.STRUCT) + +class IPv4Addresses: + STRUCT : List[Tuple[str, List[str]]] = [ + ('/interface[{:s}]/subinterface[{:d}]/ipv4[{:s}]', ['ip', 'origin', 'prefix']), + ] + + def __init__(self) -> None: + self._items : Dict[Tuple[str, int, str], Dict] = dict() + + def add(self, if_name : str, subif_index : int, ipv4_address : str, resource_value : Dict) -> None: + item = self._items.setdefault((if_name, subif_index, ipv4_address), dict()) + item['ip' ] = ipv4_address + item['origin'] = resource_value.get('origin') + item['prefix'] = resource_value.get('prefix') + + def get(self, if_name : str, subif_index : int, ipv4_address : str) -> Dict: + return self._items.get((if_name, subif_index, ipv4_address)) + + def remove(self, if_name : str, subif_index : int, ipv4_address : str) -> None: + self._items.pop((if_name, subif_index, ipv4_address), None) + + def compose_resources(self) -> List[Dict]: + return compose_resources(self._items, IPv4Addresses.STRUCT) + +class StorageInterface: + def __init__(self) -> None: + self.interfaces = Interfaces() + self.subinterfaces = SubInterfaces() + self.ipv4_addresses = IPv4Addresses() + + def populate(self, resources : List[Tuple[str, Dict]]) -> None: + for resource_key, resource_value in resources: + match = RE_RESKEY_INTERFACE.match(resource_key) + if match is not None: + self.interfaces.add(match.group(1), resource_value) + continue + + match = RE_RESKEY_ETHERNET.match(resource_key) + if match is not None: + self.interfaces.add(match.group(1), resource_value) + continue + + match = RE_RESKEY_SUBINTERFACE.match(resource_key) + if match is not None: + self.subinterfaces.add(match.group(1), int(match.group(2))) + continue + + match = RE_RESKEY_IPV4_ADDRESS.match(resource_key) + if match is not None: + self.ipv4_addresses.add(match.group(1), int(match.group(2)), match.group(3), resource_value) + continue + + MSG = 'Unhandled Resource Key: {:s} => {:s}' + raise Exception(MSG.format(str(resource_key), str(resource_value))) + + def get_expected_config(self) -> List[Tuple[str, Dict]]: + expected_config = list() + expected_config.extend(self.interfaces.compose_resources()) + expected_config.extend(self.subinterfaces.compose_resources()) + expected_config.extend(self.ipv4_addresses.compose_resources()) + return expected_config diff --git a/src/device/tests/gnmi_openconfig/storage/StorageNetworkInstance.py b/src/device/tests/gnmi_openconfig/storage/StorageNetworkInstance.py new file mode 100644 index 0000000000000000000000000000000000000000..642099aba80542dd93a504c11778a91be615799f --- /dev/null +++ b/src/device/tests/gnmi_openconfig/storage/StorageNetworkInstance.py @@ -0,0 +1,218 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import re +from typing import Dict, List, Tuple +from .Tools import compose_resources + +PREFIX = r'^\/network\_instance\[([^\]]+)\]' +RE_RESKEY_NET_INST = re.compile(PREFIX + r'$') +RE_RESKEY_INTERFACE = re.compile(PREFIX + r'\/interface\[([^\]]+)\]$') +RE_RESKEY_PROTOCOL = re.compile(PREFIX + r'\/protocol\[([^\]]+)\]$') +RE_RESKEY_PROTO_STATIC = re.compile(PREFIX + r'\/protocol\[([^\]]+)\]\/static\_routes\[([^\]]+)\]$') +RE_RESKEY_TABLE = re.compile(PREFIX + r'\/table\[([^\,]+)\,([^\]]+)\]$') +RE_RESKEY_VLAN = re.compile(PREFIX + r'\/vlan\[([^\]]+)\]$') + +class NetworkInstances: + STRUCT : List[Tuple[str, List[str]]] = [ + ('/network_instance[{:s}]', ['name', 'type']), + ] + + def __init__(self) -> None: + self._items : Dict[str, Dict] = dict() + + def add(self, ni_name : str, resource_value : Dict) -> None: + item = self._items.setdefault(ni_name, dict()) + item['name'] = ni_name + item['type'] = resource_value.get('type') + + def get(self, ni_name : str) -> Dict: + return self._items.get(ni_name) + + def remove(self, ni_name : str) -> None: + self._items.pop(ni_name, None) + + def compose_resources(self) -> List[Dict]: + return compose_resources(self._items, NetworkInstances.STRUCT) + +class Interfaces: + STRUCT : List[Tuple[str, List[str]]] = [ + ('/network_instance[{:s}]/interface[{:s}.{:d}]', ['name', 'id', 'if_name', 'sif_index']), + ] + + def __init__(self) -> None: + self._items : Dict[Tuple[str, str], Dict] = dict() + + def add(self, ni_name : str, if_name : str, sif_index : int) -> None: + item = self._items.setdefault((ni_name, if_name, sif_index), dict()) + item['name' ] = ni_name + item['id' ] = '{:s}.{:d}'.format(if_name, sif_index) + item['if_name' ] = if_name + item['sif_index'] = sif_index + + def get(self, ni_name : str, if_name : str, sif_index : int) -> Dict: + return self._items.get((ni_name, if_name, sif_index)) + + def remove(self, ni_name : str, if_name : str, sif_index : int) -> None: + self._items.pop((ni_name, if_name, sif_index), None) + + def compose_resources(self) -> List[Dict]: + return compose_resources(self._items, Interfaces.STRUCT) + +class Protocols: + STRUCT : List[Tuple[str, List[str]]] = [ + ('/network_instance[{:s}]/protocol[{:s}]', ['id', 'name']), + ] + + def __init__(self) -> None: + self._items : Dict[Tuple[str, str], Dict] = dict() + + def add(self, ni_name : str, protocol : str) -> None: + item = self._items.setdefault((ni_name, protocol), dict()) + item['id' ] = protocol + item['name'] = protocol + + def get(self, ni_name : str, protocol : str) -> Dict: + return self._items.get((ni_name, protocol)) + + def remove(self, ni_name : str, protocol : str) -> None: + self._items.pop((ni_name, protocol), None) + + def compose_resources(self) -> List[Dict]: + return compose_resources(self._items, Protocols.STRUCT) + +class StaticRoutes: + STRUCT : List[Tuple[str, List[str]]] = [ + ('/network_instance[{:s}]/protocol[{:s}]/static_routes[{:s}]', ['prefix', 'next_hops']), + ] + + def __init__(self) -> None: + self._items : Dict[Tuple[str, str, str], Dict] = dict() + + def add(self, ni_name : str, protocol : str, prefix : str, resource_value : Dict) -> None: + item = self._items.setdefault((ni_name, protocol, prefix), dict()) + item['prefix' ] = prefix + item['next_hops'] = resource_value.get('next_hops') + + def get(self, ni_name : str, protocol : str, prefix : str) -> Dict: + return self._items.get((ni_name, protocol, prefix)) + + def remove(self, ni_name : str, protocol : str, prefix : str) -> None: + self._items.pop((ni_name, protocol, prefix), None) + + def compose_resources(self) -> List[Dict]: + return compose_resources(self._items, StaticRoutes.STRUCT) + +class Tables: + STRUCT : List[Tuple[str, List[str]]] = [ + ('/network_instance[{:s}]/table[{:s},{:s}]', ['protocol', 'address_family']), + ] + + def __init__(self) -> None: + self._items : Dict[Tuple[str, str, str], Dict] = dict() + + def add(self, ni_name : str, protocol : str, address_family : str) -> None: + item = self._items.setdefault((ni_name, protocol, address_family), dict()) + item['protocol' ] = protocol + item['address_family'] = address_family + + def get(self, ni_name : str, protocol : str, address_family : str) -> Dict: + return self._items.get((ni_name, protocol, address_family)) + + def remove(self, ni_name : str, protocol : str, address_family : str) -> None: + self._items.pop((ni_name, protocol, address_family), None) + + def compose_resources(self) -> List[Dict]: + return compose_resources(self._items, Tables.STRUCT) + +class Vlans: + STRUCT : List[Tuple[str, List[str]]] = [ + ('/network_instance[{:s}]/vlan[{:d}]', ['vlan_id', 'name', 'members']), + ] + + def __init__(self) -> None: + self._items : Dict[Tuple[str, int], Dict] = dict() + + def add(self, ni_name : str, vlan_id : int, resource_value : Dict) -> None: + item = self._items.setdefault((ni_name, vlan_id), dict()) + item['vlan_id'] = vlan_id + item['name' ] = resource_value.get('name') + item['members'] = sorted(resource_value.get('members')) + + def get(self, ni_name : str, vlan_id : int) -> Dict: + return self._items.get((ni_name, vlan_id)) + + def remove(self, ni_name : str, vlan_id : int) -> None: + self._items.pop((ni_name, vlan_id), None) + + def compose_resources(self) -> List[Dict]: + return compose_resources(self._items, Vlans.STRUCT) + +class StorageNetworkInstance: + def __init__(self) -> None: + self.network_instances = NetworkInstances() + self.interfaces = Interfaces() + self.protocols = Protocols() + self.protocol_static = StaticRoutes() + self.tables = Tables() + self.vlans = Vlans() + + def populate(self, resources : List[Tuple[str, Dict]]) -> None: + for resource_key, resource_value in resources: + match = RE_RESKEY_NET_INST.match(resource_key) + if match is not None: + self.network_instances.add(match.group(1), resource_value) + continue + + match = RE_RESKEY_INTERFACE.match(resource_key) + if match is not None: + if_id = match.group(2) + if_id_parts = if_id.split('.') + if_name = if_id_parts[0] + sif_index = 0 if len(if_id_parts) == 1 else int(if_id_parts[1]) + self.interfaces.add(match.group(1), if_name, sif_index) + continue + + match = RE_RESKEY_PROTOCOL.match(resource_key) + if match is not None: + self.protocols.add(match.group(1), match.group(2)) + continue + + match = RE_RESKEY_PROTO_STATIC.match(resource_key) + if match is not None: + self.protocol_static.add(match.group(1), match.group(2), match.group(3), resource_value) + continue + + match = RE_RESKEY_TABLE.match(resource_key) + if match is not None: + self.tables.add(match.group(1), match.group(2), match.group(3)) + continue + + match = RE_RESKEY_VLAN.match(resource_key) + if match is not None: + self.vlans.add(match.group(1), int(match.group(2)), resource_value) + continue + + MSG = 'Unhandled Resource Key: {:s} => {:s}' + raise Exception(MSG.format(str(resource_key), str(resource_value))) + + def get_expected_config(self) -> List[Tuple[str, Dict]]: + expected_config = list() + expected_config.extend(self.network_instances.compose_resources()) + expected_config.extend(self.interfaces.compose_resources()) + expected_config.extend(self.protocols.compose_resources()) + expected_config.extend(self.protocol_static.compose_resources()) + expected_config.extend(self.tables.compose_resources()) + expected_config.extend(self.vlans.compose_resources()) + return expected_config diff --git a/src/device/tests/gnmi_openconfig/storage/Tools.py b/src/device/tests/gnmi_openconfig/storage/Tools.py new file mode 100644 index 0000000000000000000000000000000000000000..0e26417d98ccd40ec9685c56de253d0a414475e3 --- /dev/null +++ b/src/device/tests/gnmi_openconfig/storage/Tools.py @@ -0,0 +1,33 @@ +# Copyright 2022-2024 ETSI OSG/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. + +from typing import Dict, List, Tuple + +def compose_resources( + storage : Dict[Tuple, Dict], config_struct : List[Tuple[str, List[str]]] +) -> List[Dict]: + expected_config = list() + + for resource_key_fields, resource_value_data in storage.items(): + for resource_key_template, resource_key_field_names in config_struct: + if isinstance(resource_key_fields, (str, int, float, bool)): resource_key_fields = (resource_key_fields,) + resource_key = resource_key_template.format(*resource_key_fields) + resource_value = { + field_name : resource_value_data[field_name] + for field_name in resource_key_field_names + if field_name in resource_value_data and resource_value_data[field_name] is not None + } + expected_config.append((resource_key, resource_value)) + + return expected_config diff --git a/src/device/tests/gnmi_openconfig/storage/__init__.py b/src/device/tests/gnmi_openconfig/storage/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..3ee6f7071f145e06c3aeaefc09a43ccd88e619e3 --- /dev/null +++ b/src/device/tests/gnmi_openconfig/storage/__init__.py @@ -0,0 +1,14 @@ +# Copyright 2022-2024 ETSI OSG/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. + diff --git a/src/device/tests/gnmi_openconfig/test_unitary_gnmi_oc_arista_l2vpn.py b/src/device/tests/gnmi_openconfig/test_unitary_gnmi_oc_arista_l2vpn.py new file mode 100644 index 0000000000000000000000000000000000000000..b09d7186b684d15172c25714d2df6458442f9e80 --- /dev/null +++ b/src/device/tests/gnmi_openconfig/test_unitary_gnmi_oc_arista_l2vpn.py @@ -0,0 +1,576 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import json, logging, os, pytest, time +from typing import Dict, Tuple +os.environ['DEVICE_EMULATED_ONLY'] = 'YES' + +# pylint: disable=wrong-import-position +from device.service.drivers.gnmi_openconfig.GnmiOpenConfigDriver import GnmiOpenConfigDriver +#from device.service.driver_api._Driver import ( +# RESOURCE_ENDPOINTS, RESOURCE_INTERFACES, RESOURCE_NETWORK_INSTANCES, RESOURCE_ROUTING_POLICIES, RESOURCE_SERVICES +#) + +logging.basicConfig(level=logging.DEBUG) +#logging.getLogger('ncclient.operations.rpc').setLevel(logging.INFO) +#logging.getLogger('ncclient.transport.parser').setLevel(logging.INFO) + +LOGGER = logging.getLogger(__name__) + + +##### DRIVERS FIXTURE ################################################################################################## + +DEVICES = { + 'SW1': {'address': '172.20.20.101', 'port': 6030, 'settings': { + 'username': 'admin', 'password': 'admin', + 'vendor': None, 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'allow_agent': False, + 'commit_per_rule': True, 'device_params': {'name': 'default'}, 'manager_params': {'timeout' : 120} + }}, + 'SW2': {'address': '10.1.1.87', 'port': 830, 'settings': { + 'username': 'ocnos', 'password': 'ocnos', + 'vendor': None, 'force_running': False, 'hostkey_verify': False, 'look_for_keys': False, 'allow_agent': False, + 'commit_per_rule': True, 'device_params': {'name': 'default'}, 'manager_params': {'timeout' : 120} + }}, +} + +@pytest.fixture(scope='session') +def drivers() -> Dict[str, OpenConfigDriver]: + _drivers : Dict[str, OpenConfigDriver] = dict() + for device_name, driver_params in DEVICES.items(): + driver = OpenConfigDriver(driver_params['address'], driver_params['port'], **(driver_params['settings'])) + driver.Connect() + _drivers[device_name] = driver + yield _drivers + time.sleep(1) + for _,driver in _drivers.items(): + driver.Disconnect() + + +def network_instance(ni_name, ni_type, ni_router_id=None, ni_route_distinguisher=None) -> Tuple[str, Dict]: + path = '/network_instance[{:s}]'.format(ni_name) + data = {'name': ni_name, 'type': ni_type} + if ni_router_id is not None: data['router_id'] = ni_router_id + if ni_route_distinguisher is not None: data['route_distinguisher'] = ni_route_distinguisher + return path, json.dumps(data) + +def network_instance_add_protocol_bgp(ni_name, ni_type, ni_router_id, ni_bgp_as, neighbors=[]) -> Tuple[str, Dict]: + path = '/network_instance[{:s}]/protocols[BGP]'.format(ni_name) + data = { + 'name': ni_name, 'type': ni_type, 'router_id': ni_router_id, 'identifier': 'BGP', + 'protocol_name': ni_bgp_as, 'as': ni_bgp_as + } + if len(neighbors) > 0: + data['neighbors'] = [ + {'ip_address': neighbor_ip_address, 'remote_as': neighbor_remote_as} + for neighbor_ip_address, neighbor_remote_as in neighbors + ] + return path, json.dumps(data) + +def network_instance_add_protocol_direct(ni_name, ni_type) -> Tuple[str, Dict]: + path = '/network_instance[{:s}]/protocols[DIRECTLY_CONNECTED]'.format(ni_name) + data = { + 'name': ni_name, 'type': ni_type, 'identifier': 'DIRECTLY_CONNECTED', + 'protocol_name': 'DIRECTLY_CONNECTED' + } + return path, json.dumps(data) + +def network_instance_add_protocol_static(ni_name, ni_type) -> Tuple[str, Dict]: + path = '/network_instance[{:s}]/protocols[STATIC]'.format(ni_name) + data = { + 'name': ni_name, 'type': ni_type, 'identifier': 'STATIC', + 'protocol_name': 'STATIC' + } + return path, json.dumps(data) + +#def network_instance_static_route(ni_name, prefix, next_hop, next_hop_index=0) -> Tuple[str, Dict]: +# path = '/network_instance[{:s}]/static_route[{:s}]'.format(ni_name, prefix) +# data = {'name': ni_name, 'prefix': prefix, 'next_hop': next_hop, 'next_hop_index': next_hop_index} +# return path, json.dumps(data) + +def network_instance_add_table_connection( + ni_name, src_protocol, dst_protocol, address_family, default_import_policy, bgp_as=None +) -> Tuple[str, Dict]: + path = '/network_instance[{:s}]/table_connections[{:s}][{:s}][{:s}]'.format( + ni_name, src_protocol, dst_protocol, address_family + ) + data = { + 'name': ni_name, 'src_protocol': src_protocol, 'dst_protocol': dst_protocol, + 'address_family': address_family, 'default_import_policy': default_import_policy, + } + if bgp_as is not None: data['as'] = bgp_as + return path, json.dumps(data) + +def interface( + name, index, description=None, if_type=None, vlan_id=None, mtu=None, ipv4_address_prefix=None, enabled=None +) -> Tuple[str, Dict]: + path = '/interface[{:s}]/subinterface[{:d}]'.format(name, index) + data = {'name': name, 'index': index} + if description is not None: data['description'] = description + if if_type is not None: data['type' ] = if_type + if vlan_id is not None: data['vlan_id' ] = vlan_id + if mtu is not None: data['mtu' ] = mtu + if enabled is not None: data['enabled' ] = enabled + if ipv4_address_prefix is not None: + ipv4_address, ipv4_prefix = ipv4_address_prefix + data['address_ip' ] = ipv4_address + data['address_prefix'] = ipv4_prefix + return path, json.dumps(data) + +def network_instance_interface(ni_name, ni_type, if_name, if_index) -> Tuple[str, Dict]: + path = '/network_instance[{:s}]/interface[{:s}.{:d}]'.format(ni_name, if_name, if_index) + data = {'name': ni_name, 'type': ni_type, 'id': if_name, 'interface': if_name, 'subinterface': if_index} + return path, json.dumps(data) + +def test_configure(drivers : Dict[str, OpenConfigDriver]): + #resources_to_get = [] + #resources_to_get = [RESOURCE_ENDPOINTS] + #resources_to_get = [RESOURCE_INTERFACES] + #resources_to_get = [RESOURCE_NETWORK_INSTANCES] + #resources_to_get = [RESOURCE_ROUTING_POLICIES] + #resources_to_get = [RESOURCE_SERVICES] + #LOGGER.info('resources_to_get = {:s}'.format(str(resources_to_get))) + #results_getconfig = driver.GetConfig(resources_to_get) + #LOGGER.info('results_getconfig = {:s}'.format(str(results_getconfig))) + + csgw1_resources_to_set = [ + network_instance('ecoc24', 'L3VRF', '192.168.150.1', '65001:1'), + network_instance_add_protocol_direct('ecoc24', 'L3VRF'), + network_instance_add_protocol_static('ecoc24', 'L3VRF'), + network_instance_add_protocol_bgp('ecoc24', 'L3VRF', '192.168.150.1', '65001', neighbors=[ + ('192.168.150.2', '65001') + ]), + network_instance_add_table_connection('ecoc24', 'DIRECTLY_CONNECTED', 'BGP', 'IPV4', 'ACCEPT_ROUTE', bgp_as='65001'), + network_instance_add_table_connection('ecoc24', 'STATIC', 'BGP', 'IPV4', 'ACCEPT_ROUTE', bgp_as='65001'), + + interface('ce1', 0, if_type='ethernetCsmacd', mtu=1500), + network_instance_interface('ecoc24', 'L3VRF', 'ce1', 0), + interface('ce1', 0, if_type='ethernetCsmacd', mtu=1500, ipv4_address_prefix=('192.168.10.1', 24), enabled=True), + + interface('xe5', 0, if_type='ethernetCsmacd', mtu=1500), + network_instance_interface('ecoc24', 'L3VRF', 'xe5', 0), + interface('xe5', 0, if_type='ethernetCsmacd', mtu=1500, ipv4_address_prefix=('192.168.150.1', 24), enabled=True), + ] + LOGGER.info('CSGW1 resources_to_set = {:s}'.format(str(csgw1_resources_to_set))) + results_setconfig = drivers['CSGW1'].SetConfig(csgw1_resources_to_set) + LOGGER.info('CSGW1 results_setconfig = {:s}'.format(str(results_setconfig))) + + csgw2_resources_to_set = [ + network_instance('ecoc24', 'L3VRF', '192.168.150.2', '65001:1'), + network_instance_add_protocol_direct('ecoc24', 'L3VRF'), + network_instance_add_protocol_static('ecoc24', 'L3VRF'), + network_instance_add_protocol_bgp('ecoc24', 'L3VRF', '192.168.150.2', '65001', neighbors=[ + ('192.168.150.1', '65001') + ]), + network_instance_add_table_connection('ecoc24', 'DIRECTLY_CONNECTED', 'BGP', 'IPV4', 'ACCEPT_ROUTE', bgp_as='65001'), + network_instance_add_table_connection('ecoc24', 'STATIC', 'BGP', 'IPV4', 'ACCEPT_ROUTE', bgp_as='65001'), + + interface('ce1', 0, if_type='ethernetCsmacd', mtu=1500), + network_instance_interface('ecoc24', 'L3VRF', 'ce1', 0), + interface('ce1', 0, if_type='ethernetCsmacd', mtu=1500, ipv4_address_prefix=('192.168.20.1', 24), enabled=True), + + interface('xe5', 0, if_type='ethernetCsmacd', mtu=1500), + network_instance_interface('ecoc24', 'L3VRF', 'xe5', 0), + interface('xe5', 0, if_type='ethernetCsmacd', mtu=1500, ipv4_address_prefix=('192.168.150.2', 24), enabled=True), + ] + LOGGER.info('CSGW2 resources_to_set = {:s}'.format(str(csgw2_resources_to_set))) + results_setconfig = drivers['CSGW2'].SetConfig(csgw2_resources_to_set) + LOGGER.info('CSGW2 results_setconfig = {:s}'.format(str(results_setconfig))) + + csgw1_resources_to_delete = [ + network_instance_interface('ecoc24', 'L3VRF', 'ce1', 0), + network_instance_interface('ecoc24', 'L3VRF', 'xe5', 0), + #interface('ce1', 0), + #interface('xe5', 0), + network_instance('ecoc24', 'L3VRF'), + ] + LOGGER.info('CSGW1 resources_to_delete = {:s}'.format(str(csgw1_resources_to_delete))) + results_deleteconfig = drivers['CSGW1'].DeleteConfig(csgw1_resources_to_delete) + LOGGER.info('CSGW1 results_deleteconfig = {:s}'.format(str(results_deleteconfig))) + + csgw2_resources_to_delete = [ + network_instance_interface('ecoc24', 'L3VRF', 'ce1', 0), + network_instance_interface('ecoc24', 'L3VRF', 'xe5', 0), + #interface('ce1', 0), + #interface('xe5', 0), + network_instance('ecoc24', 'L3VRF'), + ] + LOGGER.info('CSGW2 resources_to_delete = {:s}'.format(str(csgw2_resources_to_delete))) + results_deleteconfig = drivers['CSGW2'].DeleteConfig(csgw2_resources_to_delete) + LOGGER.info('CSGW2 results_deleteconfig = {:s}'.format(str(results_deleteconfig))) + + + + + + +# Copyright 2022-2024 ETSI OSG/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. + +import os +os.environ['DEVICE_EMULATED_ONLY'] = 'YES' + +# pylint: disable=wrong-import-position +import logging, pytest, time +from typing import Dict, List +from device.service.driver_api._Driver import ( + RESOURCE_ENDPOINTS, RESOURCE_INTERFACES, RESOURCE_NETWORK_INSTANCES, + RESOURCE_ROUTING_POLICIES, RESOURCE_SERVICES +) +from device.service.drivers.gnmi_openconfig.GnmiOpenConfigDriver import GnmiOpenConfigDriver +from .storage.Storage import Storage +from .tools.manage_config import ( + check_config_endpoints, check_config_interfaces, check_config_network_instances, del_config, get_config, set_config +) +from .tools.check_updates import check_updates +from .tools.request_composers import ( + interface, network_instance, network_instance_interface, network_instance_static_route +) + +logging.basicConfig(level=logging.DEBUG) +LOGGER = logging.getLogger(__name__) +LOGGER.setLevel(logging.DEBUG) + + +##### DRIVER FIXTURE ################################################################################################### + +DRIVER_SETTING_ADDRESS = '172.20.20.101' +DRIVER_SETTING_PORT = 6030 +DRIVER_SETTING_USERNAME = 'admin' +DRIVER_SETTING_PASSWORD = 'admin' +DRIVER_SETTING_USE_TLS = False + +@pytest.fixture(scope='session') +def driver() -> GnmiOpenConfigDriver: + _driver = GnmiOpenConfigDriver( + DRIVER_SETTING_ADDRESS, DRIVER_SETTING_PORT, + username=DRIVER_SETTING_USERNAME, + password=DRIVER_SETTING_PASSWORD, + use_tls=DRIVER_SETTING_USE_TLS, + ) + _driver.Connect() + yield _driver + time.sleep(1) + _driver.Disconnect() + + +##### STORAGE FIXTURE ################################################################################################## + +@pytest.fixture(scope='session') +def storage() -> Dict: + yield Storage() + + +##### NETWORK INSTANCE DETAILS ######################################################################################### + +NETWORK_INSTANCES = [ + { + 'name': 'test-l3-svc', + 'type': 'L3VRF', + 'interfaces': [ + {'name': 'Ethernet1', 'index': 0, 'ipv4_addr': '192.168.1.1', 'ipv4_prefix': 24, 'enabled': True}, + {'name': 'Ethernet10', 'index': 0, 'ipv4_addr': '192.168.10.1', 'ipv4_prefix': 24, 'enabled': True}, + ], + 'static_routes': [ + {'prefix': '172.0.0.0/24', 'next_hop': '172.16.0.2', 'metric': 1}, + {'prefix': '172.2.0.0/24', 'next_hop': '172.16.0.3', 'metric': 1}, + ] + }, + #{ + # 'name': 'test-l2-svc', + # 'type': 'L2VSI', + # 'interfaces': [ + # {'name': 'Ethernet2', 'index': 0, 'ipv4_addr': '192.168.1.1', 'ipv4_prefix': 24, 'enabled': True}, + # {'name': 'Ethernet4', 'index': 0, 'ipv4_addr': '192.168.10.1', 'ipv4_prefix': 24, 'enabled': True}, + # ], + # 'static_routes': [ + # {'prefix': '172.0.0.0/24', 'next_hop': '172.16.0.2', 'metric': 1}, + # {'prefix': '172.2.0.0/24', 'next_hop': '172.16.0.3', 'metric': 1}, + # ] + #} +] + + +##### TEST METHODS ##################################################################################################### + +def test_get_endpoints( + driver : GnmiOpenConfigDriver, # pylint: disable=redefined-outer-name + storage : Storage, # pylint: disable=redefined-outer-name +) -> None: + results_getconfig = get_config(driver, [RESOURCE_ENDPOINTS]) + storage.endpoints.populate(results_getconfig) + check_config_endpoints(driver, storage) + + +def test_get_interfaces( + driver : GnmiOpenConfigDriver, # pylint: disable=redefined-outer-name + storage : Storage, # pylint: disable=redefined-outer-name +) -> None: + results_getconfig = get_config(driver, [RESOURCE_INTERFACES]) + storage.interfaces.populate(results_getconfig) + check_config_interfaces(driver, storage) + + +def test_get_network_instances( + driver : GnmiOpenConfigDriver, # pylint: disable=redefined-outer-name + storage : Storage, # pylint: disable=redefined-outer-name +) -> None: + results_getconfig = get_config(driver, [RESOURCE_NETWORK_INSTANCES]) + storage.network_instances.populate(results_getconfig) + check_config_network_instances(driver, storage) + + +def test_set_network_instances( + driver : GnmiOpenConfigDriver, # pylint: disable=redefined-outer-name + storage : Storage, # pylint: disable=redefined-outer-name +) -> None: + check_config_interfaces(driver, storage) + check_config_network_instances(driver, storage) + + resources_to_set = list() + ni_names = list() + for ni in NETWORK_INSTANCES: + ni_name = ni['name'] + ni_type = ni['type'] + resources_to_set.append(network_instance(ni_name, ni_type)) + ni_names.append(ni_name) + storage.network_instances.network_instances.add(ni_name, {'type': ni_type}) + storage.network_instances.protocols.add(ni_name, 'DIRECTLY_CONNECTED') + storage.network_instances.tables.add(ni_name, 'DIRECTLY_CONNECTED', 'IPV4') + storage.network_instances.tables.add(ni_name, 'DIRECTLY_CONNECTED', 'IPV6') + + results_setconfig = set_config(driver, resources_to_set) + check_updates(results_setconfig, '/network_instance[{:s}]', ni_names) + + check_config_interfaces(driver, storage, max_retries=10, retry_delay=2.0) + check_config_network_instances(driver, storage, max_retries=10, retry_delay=2.0) + + +def test_add_interfaces_to_network_instance( + driver : GnmiOpenConfigDriver, # pylint: disable=redefined-outer-name + storage : Storage, # pylint: disable=redefined-outer-name +) -> None: + check_config_interfaces(driver, storage) + check_config_network_instances(driver, storage) + + resources_to_set = list() + ni_if_names = list() + for ni in NETWORK_INSTANCES: + ni_name = ni['name'] + for ni_if in ni.get('interfaces', list()): + if_name = ni_if['name' ] + subif_index = ni_if['index'] + resources_to_set.append(network_instance_interface(ni_name, if_name, subif_index)) + ni_if_names.append((ni_name, '{:s}.{:d}'.format(if_name, subif_index))) + storage.network_instances.interfaces.add(ni_name, if_name, subif_index) + + results_setconfig = set_config(driver, resources_to_set) + check_updates(results_setconfig, '/network_instance[{:s}]/interface[{:s}]', ni_if_names) + + check_config_interfaces(driver, storage, max_retries=10, retry_delay=2.0) + check_config_network_instances(driver, storage, max_retries=10, retry_delay=2.0) + + +def test_set_interfaces( + driver : GnmiOpenConfigDriver, # pylint: disable=redefined-outer-name + storage : Storage, # pylint: disable=redefined-outer-name +) -> None: + check_config_interfaces(driver, storage) + check_config_network_instances(driver, storage) + + resources_to_set = list() + if_names = list() + for ni in NETWORK_INSTANCES: + for ni_if in ni.get('interfaces', list()): + if_name = ni_if['name' ] + subif_index = ni_if['index' ] + ipv4_address = ni_if['ipv4_addr' ] + ipv4_prefix = ni_if['ipv4_prefix'] + enabled = ni_if['enabled' ] + resources_to_set.append(interface( + if_name, subif_index, ipv4_address, ipv4_prefix, enabled + )) + if_names.append(if_name) + storage.interfaces.ipv4_addresses.add(if_name, subif_index, ipv4_address, { + 'origin' : 'STATIC', 'prefix': ipv4_prefix + }) + default_vlan = storage.network_instances.vlans.get('default', 1) + default_vlan_members : List[str] = default_vlan.setdefault('members', list()) + if if_name in default_vlan_members: default_vlan_members.remove(if_name) + + results_setconfig = set_config(driver, resources_to_set) + check_updates(results_setconfig, '/interface[{:s}]', if_names) + + check_config_interfaces(driver, storage, max_retries=10, retry_delay=2.0) + check_config_network_instances(driver, storage, max_retries=10, retry_delay=2.0) + + +def test_set_network_instance_static_routes( + driver : GnmiOpenConfigDriver, # pylint: disable=redefined-outer-name + storage : Storage, # pylint: disable=redefined-outer-name +) -> None: + check_config_interfaces(driver, storage) + check_config_network_instances(driver, storage) + + resources_to_set = list() + ni_sr_prefixes = list() + for ni in NETWORK_INSTANCES: + ni_name = ni['name'] + for ni_sr in ni.get('static_routes', list()): + ni_sr_prefix = ni_sr['prefix' ] + ni_sr_next_hop = ni_sr['next_hop'] + ni_sr_metric = ni_sr['metric' ] + ni_sr_next_hop_index = 'AUTO_{:d}_{:s}'.format(ni_sr_metric, '-'.join(ni_sr_next_hop.split('.'))) + resources_to_set.append(network_instance_static_route( + ni_name, ni_sr_prefix, ni_sr_next_hop_index, ni_sr_next_hop, metric=ni_sr_metric + )) + ni_sr_prefixes.append((ni_name, ni_sr_prefix)) + storage.network_instances.protocols.add(ni_name, 'STATIC') + storage.network_instances.protocol_static.add(ni_name, 'STATIC', ni_sr_prefix, { + 'prefix': ni_sr_prefix, 'next_hops': { + ni_sr_next_hop_index: {'next_hop': ni_sr_next_hop, 'metric': ni_sr_metric} + } + }) + storage.network_instances.tables.add(ni_name, 'STATIC', 'IPV4') + storage.network_instances.tables.add(ni_name, 'STATIC', 'IPV6') + + results_setconfig = set_config(driver, resources_to_set) + check_updates(results_setconfig, '/network_instance[{:s}]/static_route[{:s}]', ni_sr_prefixes) + + check_config_interfaces(driver, storage, max_retries=10, retry_delay=2.0) + check_config_network_instances(driver, storage, max_retries=10, retry_delay=2.0) + + +def test_del_network_instance_static_routes( + driver : GnmiOpenConfigDriver, # pylint: disable=redefined-outer-name + storage : Storage, # pylint: disable=redefined-outer-name +) -> None: + check_config_interfaces(driver, storage) + check_config_network_instances(driver, storage) + + resources_to_delete = list() + ni_sr_prefixes = list() + for ni in NETWORK_INSTANCES: + ni_name = ni['name'] + for ni_sr in ni.get('static_routes', list()): + ni_sr_prefix = ni_sr['prefix' ] + ni_sr_next_hop = ni_sr['next_hop'] + ni_sr_metric = ni_sr['metric' ] + ni_sr_next_hop_index = 'AUTO_{:d}_{:s}'.format(ni_sr_metric, '-'.join(ni_sr_next_hop.split('.'))) + resources_to_delete.append(network_instance_static_route( + ni_name, ni_sr_prefix, ni_sr_next_hop_index, ni_sr_next_hop, metric=ni_sr_metric + )) + ni_sr_prefixes.append((ni_name, ni_sr_prefix)) + + storage.network_instances.protocols.remove(ni_name, 'STATIC') + storage.network_instances.protocol_static.remove(ni_name, 'STATIC', ni_sr_prefix) + storage.network_instances.tables.remove(ni_name, 'STATIC', 'IPV4') + storage.network_instances.tables.remove(ni_name, 'STATIC', 'IPV6') + + results_deleteconfig = del_config(driver, resources_to_delete) + check_updates(results_deleteconfig, '/network_instance[{:s}]/static_route[{:s}]', ni_sr_prefixes) + + check_config_interfaces(driver, storage, max_retries=10, retry_delay=2.0) + #check_config_network_instances(driver, storage, max_retries=10, retry_delay=2.0) + + +def test_del_interfaces( + driver : GnmiOpenConfigDriver, # pylint: disable=redefined-outer-name + storage : Storage, # pylint: disable=redefined-outer-name +) -> None: + check_config_interfaces(driver, storage) + #check_config_network_instances(driver, storage) + + resources_to_delete = list() + if_names = list() + for ni in NETWORK_INSTANCES: + for ni_if in ni.get('interfaces', list()): + if_name = ni_if['name' ] + subif_index = ni_if['index' ] + ipv4_address = ni_if['ipv4_addr' ] + ipv4_prefix = ni_if['ipv4_prefix'] + enabled = ni_if['enabled' ] + resources_to_delete.append(interface(if_name, subif_index, ipv4_address, ipv4_prefix, enabled)) + if_names.append(if_name) + storage.interfaces.ipv4_addresses.remove(if_name, subif_index, ipv4_address) + default_vlan = storage.network_instances.vlans.get('default', 1) + default_vlan_members : List[str] = default_vlan.setdefault('members', list()) + if if_name not in default_vlan_members: default_vlan_members.append(if_name) + + results_deleteconfig = del_config(driver, resources_to_delete) + check_updates(results_deleteconfig, '/interface[{:s}]', if_names) + + check_config_interfaces(driver, storage, max_retries=10, retry_delay=2.0) + #check_config_network_instances(driver, storage, max_retries=10, retry_delay=2.0) + + +def test_del_interfaces_from_network_instance( + driver : GnmiOpenConfigDriver, # pylint: disable=redefined-outer-name + storage : Storage, # pylint: disable=redefined-outer-name +) -> None: + check_config_interfaces(driver, storage) + #check_config_network_instances(driver, storage) + + resources_to_delete = list() + ni_if_names = list() + for ni in NETWORK_INSTANCES: + ni_name = ni['name'] + for ni_if in ni.get('interfaces', list()): + if_name = ni_if['name' ] + subif_index = ni_if['index'] + resources_to_delete.append(network_instance_interface(ni_name, if_name, subif_index)) + ni_if_names.append((ni_name, '{:s}.{:d}'.format(if_name, subif_index))) + storage.network_instances.interfaces.remove(ni_name, if_name, subif_index) + + results_deleteconfig = del_config(driver, resources_to_delete) + check_updates(results_deleteconfig, '/network_instance[{:s}]/interface[{:s}]', ni_if_names) + + check_config_interfaces(driver, storage, max_retries=10, retry_delay=2.0) + #check_config_network_instances(driver, storage, max_retries=10, retry_delay=2.0) + + +def test_del_network_instances( + driver : GnmiOpenConfigDriver, # pylint: disable=redefined-outer-name + storage : Storage, # pylint: disable=redefined-outer-name +) -> None: + check_config_interfaces(driver, storage) + #check_config_network_instances(driver, storage) + + resources_to_delete = list() + ni_names = list() + for ni in NETWORK_INSTANCES: + ni_name = ni['name'] + ni_type = ni['type'] + resources_to_delete.append(network_instance(ni_name, ni_type)) + ni_names.append(ni_name) + storage.network_instances.network_instances.remove(ni_name) + storage.network_instances.protocols.remove(ni_name, 'DIRECTLY_CONNECTED') + storage.network_instances.tables.remove(ni_name, 'DIRECTLY_CONNECTED', 'IPV4') + storage.network_instances.tables.remove(ni_name, 'DIRECTLY_CONNECTED', 'IPV6') + + results_deleteconfig = del_config(driver, resources_to_delete) + check_updates(results_deleteconfig, '/network_instance[{:s}]', ni_names) + + check_config_interfaces(driver, storage, max_retries=10, retry_delay=2.0) + check_config_network_instances(driver, storage, max_retries=10, retry_delay=2.0) diff --git a/src/device/tests/gnmi_openconfig/test_unitary_gnmi_openconfig.py b/src/device/tests/gnmi_openconfig/test_unitary_gnmi_openconfig.py new file mode 100644 index 0000000000000000000000000000000000000000..1ec2e2f5f808ad5caa12c7dd1effb927bc4dd068 --- /dev/null +++ b/src/device/tests/gnmi_openconfig/test_unitary_gnmi_openconfig.py @@ -0,0 +1,360 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import os +os.environ['DEVICE_EMULATED_ONLY'] = 'YES' + +# pylint: disable=wrong-import-position +import logging, pytest, time +from typing import Dict, List +from device.service.driver_api._Driver import ( + RESOURCE_ENDPOINTS, RESOURCE_INTERFACES, RESOURCE_NETWORK_INSTANCES, + RESOURCE_ROUTING_POLICIES, RESOURCE_SERVICES +) +from device.service.drivers.gnmi_openconfig.GnmiOpenConfigDriver import GnmiOpenConfigDriver +from .storage.Storage import Storage +from .tools.manage_config import ( + check_config_endpoints, check_config_interfaces, check_config_network_instances, del_config, get_config, set_config +) +from .tools.check_updates import check_updates +from .tools.request_composers import ( + interface, network_instance, network_instance_interface, network_instance_static_route +) + +logging.basicConfig(level=logging.DEBUG) +LOGGER = logging.getLogger(__name__) +LOGGER.setLevel(logging.DEBUG) + + +##### DRIVER FIXTURE ################################################################################################### + +DRIVER_SETTING_ADDRESS = '172.20.20.101' +DRIVER_SETTING_PORT = 6030 +DRIVER_SETTING_USERNAME = 'admin' +DRIVER_SETTING_PASSWORD = 'admin' +DRIVER_SETTING_USE_TLS = False + +@pytest.fixture(scope='session') +def driver() -> GnmiOpenConfigDriver: + _driver = GnmiOpenConfigDriver( + DRIVER_SETTING_ADDRESS, DRIVER_SETTING_PORT, + username=DRIVER_SETTING_USERNAME, + password=DRIVER_SETTING_PASSWORD, + use_tls=DRIVER_SETTING_USE_TLS, + ) + _driver.Connect() + yield _driver + time.sleep(1) + _driver.Disconnect() + + +##### STORAGE FIXTURE ################################################################################################## + +@pytest.fixture(scope='session') +def storage() -> Dict: + yield Storage() + + +##### NETWORK INSTANCE DETAILS ######################################################################################### + +NETWORK_INSTANCES = [ + { + 'name': 'test-l3-svc', + 'type': 'L3VRF', + 'interfaces': [ + {'name': 'Ethernet1', 'index': 0, 'ipv4_addr': '192.168.1.1', 'ipv4_prefix': 24, 'enabled': True}, + {'name': 'Ethernet10', 'index': 0, 'ipv4_addr': '192.168.10.1', 'ipv4_prefix': 24, 'enabled': True}, + ], + 'static_routes': [ + {'prefix': '172.0.0.0/24', 'next_hop': '172.16.0.2', 'metric': 1}, + {'prefix': '172.2.0.0/24', 'next_hop': '172.16.0.3', 'metric': 1}, + ] + }, + #{ + # 'name': 'test-l2-svc', + # 'type': 'L2VSI', + # 'interfaces': [ + # {'name': 'Ethernet2', 'index': 0, 'ipv4_addr': '192.168.1.1', 'ipv4_prefix': 24, 'enabled': True}, + # {'name': 'Ethernet4', 'index': 0, 'ipv4_addr': '192.168.10.1', 'ipv4_prefix': 24, 'enabled': True}, + # ], + # 'static_routes': [ + # {'prefix': '172.0.0.0/24', 'next_hop': '172.16.0.2', 'metric': 1}, + # {'prefix': '172.2.0.0/24', 'next_hop': '172.16.0.3', 'metric': 1}, + # ] + #} +] + + +##### TEST METHODS ##################################################################################################### + +def test_get_endpoints( + driver : GnmiOpenConfigDriver, # pylint: disable=redefined-outer-name + storage : Storage, # pylint: disable=redefined-outer-name +) -> None: + results_getconfig = get_config(driver, [RESOURCE_ENDPOINTS]) + storage.endpoints.populate(results_getconfig) + check_config_endpoints(driver, storage) + + +def test_get_interfaces( + driver : GnmiOpenConfigDriver, # pylint: disable=redefined-outer-name + storage : Storage, # pylint: disable=redefined-outer-name +) -> None: + results_getconfig = get_config(driver, [RESOURCE_INTERFACES]) + storage.interfaces.populate(results_getconfig) + check_config_interfaces(driver, storage) + + +def test_get_network_instances( + driver : GnmiOpenConfigDriver, # pylint: disable=redefined-outer-name + storage : Storage, # pylint: disable=redefined-outer-name +) -> None: + results_getconfig = get_config(driver, [RESOURCE_NETWORK_INSTANCES]) + storage.network_instances.populate(results_getconfig) + check_config_network_instances(driver, storage) + + +def test_set_network_instances( + driver : GnmiOpenConfigDriver, # pylint: disable=redefined-outer-name + storage : Storage, # pylint: disable=redefined-outer-name +) -> None: + check_config_interfaces(driver, storage) + check_config_network_instances(driver, storage) + + resources_to_set = list() + ni_names = list() + for ni in NETWORK_INSTANCES: + ni_name = ni['name'] + ni_type = ni['type'] + resources_to_set.append(network_instance(ni_name, ni_type)) + ni_names.append(ni_name) + storage.network_instances.network_instances.add(ni_name, {'type': ni_type}) + storage.network_instances.protocols.add(ni_name, 'DIRECTLY_CONNECTED') + storage.network_instances.tables.add(ni_name, 'DIRECTLY_CONNECTED', 'IPV4') + storage.network_instances.tables.add(ni_name, 'DIRECTLY_CONNECTED', 'IPV6') + + results_setconfig = set_config(driver, resources_to_set) + check_updates(results_setconfig, '/network_instance[{:s}]', ni_names) + + check_config_interfaces(driver, storage, max_retries=10, retry_delay=2.0) + check_config_network_instances(driver, storage, max_retries=10, retry_delay=2.0) + + +def test_add_interfaces_to_network_instance( + driver : GnmiOpenConfigDriver, # pylint: disable=redefined-outer-name + storage : Storage, # pylint: disable=redefined-outer-name +) -> None: + check_config_interfaces(driver, storage) + check_config_network_instances(driver, storage) + + resources_to_set = list() + ni_if_names = list() + for ni in NETWORK_INSTANCES: + ni_name = ni['name'] + for ni_if in ni.get('interfaces', list()): + if_name = ni_if['name' ] + subif_index = ni_if['index'] + resources_to_set.append(network_instance_interface(ni_name, if_name, subif_index)) + ni_if_names.append((ni_name, '{:s}.{:d}'.format(if_name, subif_index))) + storage.network_instances.interfaces.add(ni_name, if_name, subif_index) + + results_setconfig = set_config(driver, resources_to_set) + check_updates(results_setconfig, '/network_instance[{:s}]/interface[{:s}]', ni_if_names) + + check_config_interfaces(driver, storage, max_retries=10, retry_delay=2.0) + check_config_network_instances(driver, storage, max_retries=10, retry_delay=2.0) + + +def test_set_interfaces( + driver : GnmiOpenConfigDriver, # pylint: disable=redefined-outer-name + storage : Storage, # pylint: disable=redefined-outer-name +) -> None: + check_config_interfaces(driver, storage) + check_config_network_instances(driver, storage) + + resources_to_set = list() + if_names = list() + for ni in NETWORK_INSTANCES: + for ni_if in ni.get('interfaces', list()): + if_name = ni_if['name' ] + subif_index = ni_if['index' ] + ipv4_address = ni_if['ipv4_addr' ] + ipv4_prefix = ni_if['ipv4_prefix'] + enabled = ni_if['enabled' ] + resources_to_set.append(interface( + if_name, subif_index, ipv4_address, ipv4_prefix, enabled + )) + if_names.append(if_name) + storage.interfaces.ipv4_addresses.add(if_name, subif_index, ipv4_address, { + 'origin' : 'STATIC', 'prefix': ipv4_prefix + }) + default_vlan = storage.network_instances.vlans.get('default', 1) + default_vlan_members : List[str] = default_vlan.setdefault('members', list()) + if if_name in default_vlan_members: default_vlan_members.remove(if_name) + + results_setconfig = set_config(driver, resources_to_set) + check_updates(results_setconfig, '/interface[{:s}]', if_names) + + check_config_interfaces(driver, storage, max_retries=10, retry_delay=2.0) + check_config_network_instances(driver, storage, max_retries=10, retry_delay=2.0) + + +def test_set_network_instance_static_routes( + driver : GnmiOpenConfigDriver, # pylint: disable=redefined-outer-name + storage : Storage, # pylint: disable=redefined-outer-name +) -> None: + check_config_interfaces(driver, storage) + check_config_network_instances(driver, storage) + + resources_to_set = list() + ni_sr_prefixes = list() + for ni in NETWORK_INSTANCES: + ni_name = ni['name'] + for ni_sr in ni.get('static_routes', list()): + ni_sr_prefix = ni_sr['prefix' ] + ni_sr_next_hop = ni_sr['next_hop'] + ni_sr_metric = ni_sr['metric' ] + ni_sr_next_hop_index = 'AUTO_{:d}_{:s}'.format(ni_sr_metric, '-'.join(ni_sr_next_hop.split('.'))) + resources_to_set.append(network_instance_static_route( + ni_name, ni_sr_prefix, ni_sr_next_hop_index, ni_sr_next_hop, metric=ni_sr_metric + )) + ni_sr_prefixes.append((ni_name, ni_sr_prefix)) + storage.network_instances.protocols.add(ni_name, 'STATIC') + storage.network_instances.protocol_static.add(ni_name, 'STATIC', ni_sr_prefix, { + 'prefix': ni_sr_prefix, 'next_hops': { + ni_sr_next_hop_index: {'next_hop': ni_sr_next_hop, 'metric': ni_sr_metric} + } + }) + storage.network_instances.tables.add(ni_name, 'STATIC', 'IPV4') + storage.network_instances.tables.add(ni_name, 'STATIC', 'IPV6') + + results_setconfig = set_config(driver, resources_to_set) + check_updates(results_setconfig, '/network_instance[{:s}]/static_route[{:s}]', ni_sr_prefixes) + + check_config_interfaces(driver, storage, max_retries=10, retry_delay=2.0) + check_config_network_instances(driver, storage, max_retries=10, retry_delay=2.0) + + +def test_del_network_instance_static_routes( + driver : GnmiOpenConfigDriver, # pylint: disable=redefined-outer-name + storage : Storage, # pylint: disable=redefined-outer-name +) -> None: + check_config_interfaces(driver, storage) + check_config_network_instances(driver, storage) + + resources_to_delete = list() + ni_sr_prefixes = list() + for ni in NETWORK_INSTANCES: + ni_name = ni['name'] + for ni_sr in ni.get('static_routes', list()): + ni_sr_prefix = ni_sr['prefix' ] + ni_sr_next_hop = ni_sr['next_hop'] + ni_sr_metric = ni_sr['metric' ] + ni_sr_next_hop_index = 'AUTO_{:d}_{:s}'.format(ni_sr_metric, '-'.join(ni_sr_next_hop.split('.'))) + resources_to_delete.append(network_instance_static_route( + ni_name, ni_sr_prefix, ni_sr_next_hop_index, ni_sr_next_hop, metric=ni_sr_metric + )) + ni_sr_prefixes.append((ni_name, ni_sr_prefix)) + + storage.network_instances.protocols.remove(ni_name, 'STATIC') + storage.network_instances.protocol_static.remove(ni_name, 'STATIC', ni_sr_prefix) + storage.network_instances.tables.remove(ni_name, 'STATIC', 'IPV4') + storage.network_instances.tables.remove(ni_name, 'STATIC', 'IPV6') + + results_deleteconfig = del_config(driver, resources_to_delete) + check_updates(results_deleteconfig, '/network_instance[{:s}]/static_route[{:s}]', ni_sr_prefixes) + + check_config_interfaces(driver, storage, max_retries=10, retry_delay=2.0) + #check_config_network_instances(driver, storage, max_retries=10, retry_delay=2.0) + + +def test_del_interfaces( + driver : GnmiOpenConfigDriver, # pylint: disable=redefined-outer-name + storage : Storage, # pylint: disable=redefined-outer-name +) -> None: + check_config_interfaces(driver, storage) + #check_config_network_instances(driver, storage) + + resources_to_delete = list() + if_names = list() + for ni in NETWORK_INSTANCES: + for ni_if in ni.get('interfaces', list()): + if_name = ni_if['name' ] + subif_index = ni_if['index' ] + ipv4_address = ni_if['ipv4_addr' ] + ipv4_prefix = ni_if['ipv4_prefix'] + enabled = ni_if['enabled' ] + resources_to_delete.append(interface(if_name, subif_index, ipv4_address, ipv4_prefix, enabled)) + if_names.append(if_name) + storage.interfaces.ipv4_addresses.remove(if_name, subif_index, ipv4_address) + default_vlan = storage.network_instances.vlans.get('default', 1) + default_vlan_members : List[str] = default_vlan.setdefault('members', list()) + if if_name not in default_vlan_members: default_vlan_members.append(if_name) + + results_deleteconfig = del_config(driver, resources_to_delete) + check_updates(results_deleteconfig, '/interface[{:s}]', if_names) + + check_config_interfaces(driver, storage, max_retries=10, retry_delay=2.0) + #check_config_network_instances(driver, storage, max_retries=10, retry_delay=2.0) + + +def test_del_interfaces_from_network_instance( + driver : GnmiOpenConfigDriver, # pylint: disable=redefined-outer-name + storage : Storage, # pylint: disable=redefined-outer-name +) -> None: + check_config_interfaces(driver, storage) + #check_config_network_instances(driver, storage) + + resources_to_delete = list() + ni_if_names = list() + for ni in NETWORK_INSTANCES: + ni_name = ni['name'] + for ni_if in ni.get('interfaces', list()): + if_name = ni_if['name' ] + subif_index = ni_if['index'] + resources_to_delete.append(network_instance_interface(ni_name, if_name, subif_index)) + ni_if_names.append((ni_name, '{:s}.{:d}'.format(if_name, subif_index))) + storage.network_instances.interfaces.remove(ni_name, if_name, subif_index) + + results_deleteconfig = del_config(driver, resources_to_delete) + check_updates(results_deleteconfig, '/network_instance[{:s}]/interface[{:s}]', ni_if_names) + + check_config_interfaces(driver, storage, max_retries=10, retry_delay=2.0) + #check_config_network_instances(driver, storage, max_retries=10, retry_delay=2.0) + + +def test_del_network_instances( + driver : GnmiOpenConfigDriver, # pylint: disable=redefined-outer-name + storage : Storage, # pylint: disable=redefined-outer-name +) -> None: + check_config_interfaces(driver, storage) + #check_config_network_instances(driver, storage) + + resources_to_delete = list() + ni_names = list() + for ni in NETWORK_INSTANCES: + ni_name = ni['name'] + ni_type = ni['type'] + resources_to_delete.append(network_instance(ni_name, ni_type)) + ni_names.append(ni_name) + storage.network_instances.network_instances.remove(ni_name) + storage.network_instances.protocols.remove(ni_name, 'DIRECTLY_CONNECTED') + storage.network_instances.tables.remove(ni_name, 'DIRECTLY_CONNECTED', 'IPV4') + storage.network_instances.tables.remove(ni_name, 'DIRECTLY_CONNECTED', 'IPV6') + + results_deleteconfig = del_config(driver, resources_to_delete) + check_updates(results_deleteconfig, '/network_instance[{:s}]', ni_names) + + check_config_interfaces(driver, storage, max_retries=10, retry_delay=2.0) + check_config_network_instances(driver, storage, max_retries=10, retry_delay=2.0) diff --git a/src/device/tests/gnmi_openconfig/tools/__init__.py b/src/device/tests/gnmi_openconfig/tools/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..3ee6f7071f145e06c3aeaefc09a43ccd88e619e3 --- /dev/null +++ b/src/device/tests/gnmi_openconfig/tools/__init__.py @@ -0,0 +1,14 @@ +# Copyright 2022-2024 ETSI OSG/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. + diff --git a/src/device/tests/gnmi_openconfig/tools/check_updates.py b/src/device/tests/gnmi_openconfig/tools/check_updates.py new file mode 100644 index 0000000000000000000000000000000000000000..7e120ab89ac508623ef27b6e6a6f792b6c565840 --- /dev/null +++ b/src/device/tests/gnmi_openconfig/tools/check_updates.py @@ -0,0 +1,22 @@ +# Copyright 2022-2024 ETSI OSG/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. + +from typing import Iterable, List, Tuple + +def check_updates(results : Iterable[Tuple[str, bool]], format_str : str, item_ids : List[Tuple]) -> None: + results = set(results) + assert len(results) == len(item_ids) + for item_id_fields in item_ids: + if isinstance(item_id_fields, (str, int, float, bool)): item_id_fields = (item_id_fields,) + assert (format_str.format(*item_id_fields), True) in results diff --git a/src/device/tests/gnmi_openconfig/tools/manage_config.py b/src/device/tests/gnmi_openconfig/tools/manage_config.py new file mode 100644 index 0000000000000000000000000000000000000000..6dc485bf256236bf9438536e9182181f784faacd --- /dev/null +++ b/src/device/tests/gnmi_openconfig/tools/manage_config.py @@ -0,0 +1,103 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import copy, deepdiff, logging, time +from typing import Callable, Dict, List, Tuple, Union +from device.service.driver_api._Driver import ( + RESOURCE_ENDPOINTS, RESOURCE_INTERFACES, RESOURCE_NETWORK_INSTANCES, + RESOURCE_ROUTING_POLICIES, RESOURCE_SERVICES +) +from device.service.drivers.gnmi_openconfig.GnmiOpenConfigDriver import GnmiOpenConfigDriver +from device.tests.gnmi_openconfig.storage.Storage import Storage +from .result_config_adapters import adapt_endpoint, adapt_interface, adapt_network_instance + +LOGGER = logging.getLogger(__name__) + +def get_config(driver : GnmiOpenConfigDriver, resources_to_get : List[str]) -> List[Tuple[str, Dict]]: + LOGGER.info('[get_config] resources_to_get = {:s}'.format(str(resources_to_get))) + results_getconfig = driver.GetConfig(resources_to_get) + LOGGER.info('[get_config] results_getconfig = {:s}'.format(str(results_getconfig))) + return results_getconfig + +def set_config( + driver : GnmiOpenConfigDriver, resources_to_set : List[Tuple[str, Dict]] +) -> List[Tuple[str, Union[bool, Exception]]]: + LOGGER.info('[set_config] resources_to_set = {:s}'.format(str(resources_to_set))) + results_setconfig = driver.SetConfig(resources_to_set) + LOGGER.info('[set_config] results_setconfig = {:s}'.format(str(results_setconfig))) + return results_setconfig + +def del_config( + driver : GnmiOpenConfigDriver, resources_to_delete : List[Tuple[str, Dict]] +) -> List[Tuple[str, Union[bool, Exception]]]: + LOGGER.info('resources_to_delete = {:s}'.format(str(resources_to_delete))) + results_deleteconfig = driver.DeleteConfig(resources_to_delete) + LOGGER.info('results_deleteconfig = {:s}'.format(str(results_deleteconfig))) + return results_deleteconfig + +def check_expected_config( + driver : GnmiOpenConfigDriver, resources_to_get : List[str], expected_config : List[Dict], + func_adapt_returned_config : Callable[[Tuple[str, Dict]], Tuple[str, Dict]] = lambda x: x, + max_retries : int = 1, retry_delay : float = 0.5 +) -> List[Dict]: + LOGGER.info('expected_config = {:s}'.format(str(expected_config))) + + num_retry = 0 + return_data = None + while num_retry < max_retries: + results_getconfig = get_config(driver, resources_to_get) + return_data = copy.deepcopy(results_getconfig) + + results_getconfig = [ + func_adapt_returned_config(resource_key, resource_value) + for resource_key, resource_value in results_getconfig + ] + + diff_data = deepdiff.DeepDiff(sorted(expected_config), sorted(results_getconfig)) + num_diffs = len(diff_data) + if num_diffs == 0: break + # let the device take some time to reconfigure + time.sleep(retry_delay) + num_retry += 1 + + if num_diffs > 0: LOGGER.error('Differences[{:d}]:\n{:s}'.format(num_diffs, str(diff_data.pretty()))) + assert num_diffs == 0 + return return_data + +def check_config_endpoints( + driver : GnmiOpenConfigDriver, storage : Storage, + max_retries : int = 1, retry_delay : float = 0.5 +) -> List[Dict]: + return check_expected_config( + driver, [RESOURCE_ENDPOINTS], storage.endpoints.get_expected_config(), + adapt_endpoint, max_retries=max_retries, retry_delay=retry_delay + ) + +def check_config_interfaces( + driver : GnmiOpenConfigDriver, storage : Storage, + max_retries : int = 1, retry_delay : float = 0.5 +) -> List[Dict]: + return check_expected_config( + driver, [RESOURCE_INTERFACES], storage.interfaces.get_expected_config(), + adapt_interface, max_retries=max_retries, retry_delay=retry_delay + ) + +def check_config_network_instances( + driver : GnmiOpenConfigDriver, storage : Storage, + max_retries : int = 1, retry_delay : float = 0.5 +) -> List[Dict]: + return check_expected_config( + driver, [RESOURCE_NETWORK_INSTANCES], storage.network_instances.get_expected_config(), + adapt_network_instance, max_retries=max_retries, retry_delay=retry_delay + ) diff --git a/src/device/tests/gnmi_openconfig/tools/request_composers copy.py b/src/device/tests/gnmi_openconfig/tools/request_composers copy.py new file mode 100644 index 0000000000000000000000000000000000000000..9545e156df2c88ea1c86f094b770e09328b368e6 --- /dev/null +++ b/src/device/tests/gnmi_openconfig/tools/request_composers copy.py @@ -0,0 +1,46 @@ +# Copyright 2022-2024 ETSI OSG/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. + +from typing import Dict, Tuple + +def interface(if_name, sif_index, ipv4_address, ipv4_prefix, enabled) -> Tuple[str, Dict]: + str_path = '/interface[{:s}]'.format(if_name) + str_data = { + 'name': if_name, 'enabled': enabled, 'sub_if_index': sif_index, 'sub_if_enabled': enabled, + 'sub_if_ipv4_enabled': enabled, 'sub_if_ipv4_address': ipv4_address, 'sub_if_ipv4_prefix': ipv4_prefix + } + return str_path, str_data + +def network_instance(ni_name, ni_type) -> Tuple[str, Dict]: + str_path = '/network_instance[{:s}]'.format(ni_name) + str_data = { + 'name': ni_name, 'type': ni_type + } + return str_path, str_data + +def network_instance_static_route(ni_name, prefix, next_hop_index, next_hop, metric=1) -> Tuple[str, Dict]: + str_path = '/network_instance[{:s}]/static_route[{:s}]'.format(ni_name, prefix) + str_data = { + 'name': ni_name, 'identifier': 'STATIC', 'protocol_name': 'STATIC', + 'prefix': prefix, 'index': next_hop_index, 'next_hop': next_hop, 'metric': metric + } + return str_path, str_data + +def network_instance_interface(ni_name, if_name, sif_index) -> Tuple[str, Dict]: + ni_if_id = '{:s}.{:d}'.format(if_name, sif_index) + str_path = '/network_instance[{:s}]/interface[{:s}]'.format(ni_name, ni_if_id) + str_data = { + 'name': ni_name, 'id': ni_if_id, 'interface': if_name, 'subinterface': sif_index + } + return str_path, str_data diff --git a/src/device/tests/gnmi_openconfig/tools/request_composers.py b/src/device/tests/gnmi_openconfig/tools/request_composers.py new file mode 100644 index 0000000000000000000000000000000000000000..d80709114bdf36c1e634047256c7e42d638de3c5 --- /dev/null +++ b/src/device/tests/gnmi_openconfig/tools/request_composers.py @@ -0,0 +1,44 @@ +# Copyright 2022-2024 ETSI OSG/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. + +from typing import Dict, Tuple + +def interface(if_name, sif_index, ipv4_address, ipv4_prefix, enabled) -> Tuple[str, Dict]: + str_path = '/interface[{:s}]'.format(if_name) + str_data = { + 'name': if_name, 'enabled': enabled, 'sub_if_index': sif_index, 'sub_if_enabled': enabled, + 'sub_if_ipv4_enabled': enabled, 'sub_if_ipv4_address': ipv4_address, 'sub_if_ipv4_prefix': ipv4_prefix + } + return str_path, str_data + +def network_instance(ni_name, ni_type) -> Tuple[str, Dict]: + str_path = '/network_instance[{:s}]'.format(ni_name) + str_data = { + 'name': ni_name, 'type': ni_type + } + return str_path, str_data + +def network_instance_static_route(ni_name, prefix, next_hop_index, next_hop, metric=1) -> Tuple[str, Dict]: + str_path = '/network_instance[{:s}]/static_route[{:s}]'.format(ni_name, prefix) + str_data = { + 'name': ni_name, 'prefix': prefix, 'next_hop_index': next_hop_index, 'next_hop': next_hop, 'metric': metric + } + return str_path, str_data + +def network_instance_interface(ni_name, if_name, sif_index) -> Tuple[str, Dict]: + str_path = '/network_instance[{:s}]/interface[{:s}.{:d}]'.format(ni_name, if_name, sif_index) + str_data = { + 'name': ni_name, 'if_name': if_name, 'sif_index': sif_index + } + return str_path, str_data diff --git a/src/device/tests/gnmi_openconfig/tools/result_config_adapters.py b/src/device/tests/gnmi_openconfig/tools/result_config_adapters.py new file mode 100644 index 0000000000000000000000000000000000000000..db7d5735d05eba9e4b8a2bec3b2763bdb3c3cc42 --- /dev/null +++ b/src/device/tests/gnmi_openconfig/tools/result_config_adapters.py @@ -0,0 +1,29 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import re +from typing import Dict, Tuple + +def adapt_endpoint(resource_key : str, resource_value : Dict) -> Tuple[str, Dict]: + return resource_key, resource_value + +def adapt_interface(resource_key : str, resource_value : Dict) -> Tuple[str, Dict]: + return resource_key, resource_value + +def adapt_network_instance(resource_key : str, resource_value : Dict) -> Tuple[str, Dict]: + match = re.match(r'^\/network\_instance\[([^\]]+)\]\/vlan\[([^\]]+)\]$', resource_key) + if match is not None: + members = resource_value.get('members') + if len(members) > 0: resource_value['members'] = sorted(members) + return resource_key, resource_value diff --git a/src/device/tests/test_gnmi.py b/src/device/tests/test_gnmi.py deleted file mode 100644 index ebd026a206ddf9444d30c01e8ac2d097307cc0db..0000000000000000000000000000000000000000 --- a/src/device/tests/test_gnmi.py +++ /dev/null @@ -1,115 +0,0 @@ -# Copyright 2022-2024 ETSI OSG/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. - -import logging, os, sys, time -from typing import Dict, Tuple -os.environ['DEVICE_EMULATED_ONLY'] = 'YES' -from device.service.drivers.gnmi_openconfig.GnmiOpenConfigDriver import GnmiOpenConfigDriver # pylint: disable=wrong-import-position -#from device.service.driver_api._Driver import ( -# RESOURCE_ENDPOINTS, RESOURCE_INTERFACES, RESOURCE_NETWORK_INSTANCES, RESOURCE_ROUTING_POLICIES, RESOURCE_SERVICES -#) - -logging.basicConfig(level=logging.DEBUG) -LOGGER = logging.getLogger(__name__) -LOGGER.setLevel(logging.DEBUG) - -# +---+---------------------------+--------------+---------------------------------+-------+---------+--------------------+--------------+ -# | # | Name | Container ID | Image | Kind | State | IPv4 Address | IPv6 Address | -# +---+---------------------------+--------------+---------------------------------+-------+---------+--------------------+--------------+ -# | 1 | clab-tfs-scenario-client1 | a8d48ec3265a | ghcr.io/hellt/network-multitool | linux | running | 172.100.100.201/24 | N/A | -# | 2 | clab-tfs-scenario-client2 | fc88436d2b32 | ghcr.io/hellt/network-multitool | linux | running | 172.100.100.202/24 | N/A | -# | 3 | clab-tfs-scenario-srl1 | b995b9bdadda | ghcr.io/nokia/srlinux | srl | running | 172.100.100.101/24 | N/A | -# | 4 | clab-tfs-scenario-srl2 | aacfc38cc376 | ghcr.io/nokia/srlinux | srl | running | 172.100.100.102/24 | N/A | -# +---+---------------------------+--------------+---------------------------------+-------+---------+--------------------+--------------+ - -def interface(if_name, sif_index, ipv4_address, ipv4_prefix, enabled) -> Tuple[str, Dict]: - str_path = '/interface[{:s}]'.format(if_name) - str_data = {'name': if_name, 'enabled': enabled, 'sub_if_index': sif_index, 'sub_if_enabled': enabled, - 'sub_if_ipv4_enabled': enabled, 'sub_if_ipv4_address': ipv4_address, 'sub_if_ipv4_prefix': ipv4_prefix} - return str_path, str_data - -def network_instance(ni_name, ni_type) -> Tuple[str, Dict]: - str_path = '/network_instance[{:s}]'.format(ni_name) - str_data = {'name': ni_name, 'type': ni_type} - return str_path, str_data - -def network_instance_static_route(ni_name, prefix, next_hop, next_hop_index=0) -> Tuple[str, Dict]: - str_path = '/network_instance[{:s}]/static_route[{:s}]'.format(ni_name, prefix) - str_data = {'name': ni_name, 'prefix': prefix, 'next_hop': next_hop, 'next_hop_index': next_hop_index} - return str_path, str_data - -def network_instance_interface(ni_name, if_name, sif_index) -> Tuple[str, Dict]: - str_path = '/network_instance[{:s}]/interface[{:s}.{:d}]'.format(ni_name, if_name, sif_index) - str_data = {'name': ni_name, 'if_name': if_name, 'sif_index': sif_index} - return str_path, str_data - -def main(): - driver_settings = { - 'protocol': 'gnmi', - 'username': 'admin', - 'password': 'NokiaSrl1!', - 'use_tls' : True, - } - driver = GnmiOpenConfigDriver('172.100.100.102', 57400, **driver_settings) - driver.Connect() - - #resources_to_get = [] - #resources_to_get = [RESOURCE_ENDPOINTS] - #resources_to_get = [RESOURCE_INTERFACES] - #resources_to_get = [RESOURCE_NETWORK_INSTANCES] - #resources_to_get = [RESOURCE_ROUTING_POLICIES] - #resources_to_get = [RESOURCE_SERVICES] - #LOGGER.info('resources_to_get = {:s}'.format(str(resources_to_get))) - #results_getconfig = driver.GetConfig(resources_to_get) - #LOGGER.info('results_getconfig = {:s}'.format(str(results_getconfig))) - - #resources_to_set = [ - # network_instance('test-svc', 'L3VRF'), - # - # interface('ethernet-1/1', 0, '172.16.0.1', 24, True), - # network_instance_interface('test-svc', 'ethernet-1/1', 0), - # - # interface('ethernet-1/2', 0, '172.0.0.1', 24, True), - # network_instance_interface('test-svc', 'ethernet-1/2', 0), - # - # network_instance_static_route('test-svc', '172.0.0.0/24', '172.16.0.2'), - # network_instance_static_route('test-svc', '172.2.0.0/24', '172.16.0.3'), - #] - #LOGGER.info('resources_to_set = {:s}'.format(str(resources_to_set))) - #results_setconfig = driver.SetConfig(resources_to_set) - #LOGGER.info('results_setconfig = {:s}'.format(str(results_setconfig))) - - resources_to_delete = [ - #network_instance_static_route('d35fc1d9', '172.0.0.0/24', '172.16.0.2'), - #network_instance_static_route('d35fc1d9', '172.2.0.0/24', '172.16.0.3'), - - #network_instance_interface('d35fc1d9', 'ethernet-1/1', 0), - #network_instance_interface('d35fc1d9', 'ethernet-1/2', 0), - - interface('ethernet-1/1', 0, '172.16.1.1', 24, True), - interface('ethernet-1/2', 0, '172.0.0.2', 24, True), - - network_instance('20f66fb5', 'L3VRF'), - ] - LOGGER.info('resources_to_delete = {:s}'.format(str(resources_to_delete))) - results_deleteconfig = driver.DeleteConfig(resources_to_delete) - LOGGER.info('results_deleteconfig = {:s}'.format(str(results_deleteconfig))) - - time.sleep(1) - - driver.Disconnect() - return 0 - -if __name__ == '__main__': - sys.exit(main()) diff --git a/src/e2e_orchestrator/.gitlab-ci.yml b/src/e2e_orchestrator/.gitlab-ci.yml index ecc17f26119e40659d6191e88e26a4000c9d9ada..0930be486cce13706292a48c6e6e01c60228f061 100644 --- a/src/e2e_orchestrator/.gitlab-ci.yml +++ b/src/e2e_orchestrator/.gitlab-ci.yml @@ -13,9 +13,9 @@ # limitations under the License. # build, tag and push the Docker image to the gitlab registry -build e2eorchestrator: +build e2e_orchestrator: variables: - IMAGE_NAME: 'e2eorchestrator' # name of the microservice + IMAGE_NAME: 'e2e_orchestrator' # name of the microservice IMAGE_TAG: 'latest' # tag of the container image (production, development, etc) stage: build before_script: diff --git a/src/e2e_orchestrator/Dockerfile b/src/e2e_orchestrator/Dockerfile index 1ead42a2fd85316b8f8a45aded98f91d861e6b8d..132d6ba47938e1c74cee08aa3ad41ead6f992f68 100644 --- a/src/e2e_orchestrator/Dockerfile +++ b/src/e2e_orchestrator/Dockerfile @@ -77,8 +77,11 @@ RUN pip-compile --quiet --output-file=e2e_orchestrator/requirements.txt e2e_orch RUN python3 -m pip install -r e2e_orchestrator/requirements.txt # Add component files into working directory -COPY --chown=teraflow:teraflow ./src/context/. context -COPY --chown=teraflow:teraflow ./src/e2e_orchestrator/. e2e_orchestrator +COPY src/context/__init__.py context/__init__.py +COPY src/context/client/. context/client/ +COPY src/service/__init__.py service/__init__.py +COPY src/service/client/. service/client/ +COPY src/e2e_orchestrator/. e2e_orchestrator/ # Start the service ENTRYPOINT ["python", "-m", "e2e_orchestrator.service"] diff --git a/src/e2e_orchestrator/requirements.in b/src/e2e_orchestrator/requirements.in index 6553c5a41eb9bcf20b7841d8af1fb84be61a27fc..5732b1bf053301f73a37830e66eb211912d9e200 100644 --- a/src/e2e_orchestrator/requirements.in +++ b/src/e2e_orchestrator/requirements.in @@ -12,4 +12,5 @@ # See the License for the specific language governing permissions and # limitations under the License. -networkx \ No newline at end of file +networkx +websockets==12.0 diff --git a/src/e2e_orchestrator/service/E2EOrchestratorServiceServicerImpl.py b/src/e2e_orchestrator/service/E2EOrchestratorServiceServicerImpl.py index 0ba2eba3390ab13f38ce80affd4faaeba61e1b87..4fc0ea3ba45a85bb3b1dccb18191dc1b4e380404 100644 --- a/src/e2e_orchestrator/service/E2EOrchestratorServiceServicerImpl.py +++ b/src/e2e_orchestrator/service/E2EOrchestratorServiceServicerImpl.py @@ -12,33 +12,181 @@ # See the License for the specific language governing permissions and # limitations under the License. -import logging - -import networkx as nx -import grpc import copy - -from common.Constants import ServiceNameEnum -from common.method_wrappers.Decorator import (MetricsPool, MetricTypeEnum, safe_and_metered_rpc_method) +from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_method from common.proto.e2eorchestrator_pb2 import E2EOrchestratorRequest, E2EOrchestratorReply -from common.proto.context_pb2 import Empty, Connection, EndPointId +from common.proto.context_pb2 import ( + Empty, Connection, EndPointId, Link, LinkId, TopologyDetails, Topology, Context, Service, ServiceId, + ServiceTypeEnum, ServiceStatusEnum) from common.proto.e2eorchestrator_pb2_grpc import E2EOrchestratorServiceServicer +from common.Settings import get_setting from context.client.ContextClient import ContextClient +from service.client.ServiceClient import ServiceClient from context.service.database.uuids.EndPoint import endpoint_get_uuid +from context.service.database.uuids.Device import device_get_uuid +from common.proto.vnt_manager_pb2 import VNTSubscriptionRequest +from common.tools.grpc.Tools import grpc_message_to_json_string +import grpc +import json +import logging +import networkx as nx +from threading import Thread +from websockets.sync.client import connect +from websockets.sync.server import serve +from common.Constants import DEFAULT_CONTEXT_NAME LOGGER = logging.getLogger(__name__) +logging.getLogger("websockets").propagate = True METRICS_POOL = MetricsPool("E2EOrchestrator", "RPC") + context_client: ContextClient = ContextClient() +service_client: ServiceClient = ServiceClient() + +EXT_HOST = str(get_setting('WS_IP_HOST')) +EXT_PORT = str(get_setting('WS_IP_PORT')) + +OWN_HOST = str(get_setting('WS_E2E_HOST')) +OWN_PORT = str(get_setting('WS_E2E_PORT')) + + +ALL_HOSTS = "0.0.0.0" + +class SubscriptionServer(Thread): + def __init__(self): + Thread.__init__(self) + + def run(self): + url = "ws://" + EXT_HOST + ":" + EXT_PORT + request = VNTSubscriptionRequest() + request.host = OWN_HOST + request.port = OWN_PORT + try: + LOGGER.debug("Trying to connect to {}".format(url)) + websocket = connect(url) + except Exception as ex: + LOGGER.error('Error connecting to {}'.format(url)) + else: + with websocket: + LOGGER.debug("Connected to {}".format(url)) + send = grpc_message_to_json_string(request) + websocket.send(send) + LOGGER.debug("Sent: {}".format(send)) + try: + message = websocket.recv() + LOGGER.debug("Received message from WebSocket: {}".format(message)) + except Exception as ex: + LOGGER.error('Exception receiving from WebSocket: {}'.format(ex)) + + self._events_server() + + + def _events_server(self): + all_hosts = "0.0.0.0" + + try: + server = serve(self._event_received, all_hosts, int(OWN_PORT)) + except Exception as ex: + LOGGER.error('Error starting server on {}:{}'.format(all_hosts, OWN_PORT)) + LOGGER.error('Exception!: {}'.format(ex)) + else: + with server: + LOGGER.info("Running events server...: {}:{}".format(all_hosts, OWN_PORT)) + server.serve_forever() + + + def _event_received(self, connection): + LOGGER.info("EVENT received!") + for message in connection: + message_json = json.loads(message) + # LOGGER.info("message_json: {}".format(message_json)) + + # Link creation + if 'link_id' in message_json: + link = Link(**message_json) + + service = Service() + service.service_id.service_uuid.uuid = link.link_id.link_uuid.uuid + service.service_id.context_id.context_uuid.uuid = DEFAULT_CONTEXT_NAME + service.service_type = ServiceTypeEnum.SERVICETYPE_OPTICAL_CONNECTIVITY + service.service_status.service_status = ServiceStatusEnum.SERVICESTATUS_PLANNED + service_client.CreateService(service) + + links = context_client.ListLinks(Empty()).links + a_device_uuid = device_get_uuid(link.link_endpoint_ids[0].device_id) + a_endpoint_uuid = endpoint_get_uuid(link.link_endpoint_ids[0])[2] + z_device_uuid = device_get_uuid(link.link_endpoint_ids[1].device_id) + z_endpoint_uuid = endpoint_get_uuid(link.link_endpoint_ids[1])[2] + + for _link in links: + for _endpoint_id in _link.link_endpoint_ids: + if _endpoint_id.device_id.device_uuid.uuid == a_device_uuid and \ + _endpoint_id.endpoint_uuid.uuid == a_endpoint_uuid: + a_ep_id = _endpoint_id + elif _endpoint_id.device_id.device_uuid.uuid == z_device_uuid and \ + _endpoint_id.endpoint_uuid.uuid == z_endpoint_uuid: + z_ep_id = _endpoint_id + + if (not 'a_ep_id' in locals()) or (not 'z_ep_id' in locals()): + error_msg = 'Could not get VNT link endpoints' + LOGGER.error(error_msg) + connection.send(error_msg) + return + + service.service_endpoint_ids.append(copy.deepcopy(a_ep_id)) + service.service_endpoint_ids.append(copy.deepcopy(z_ep_id)) + + # service_client.UpdateService(service) + connection.send(grpc_message_to_json_string(link)) + # Link removal + elif 'link_uuid' in message_json: + LOGGER.info('REMOVING VIRTUAL LINK') + link_id = LinkId(**message_json) + + service_id = ServiceId() + service_id.service_uuid.uuid = link_id.link_uuid.uuid + service_id.context_id.context_uuid.uuid = DEFAULT_CONTEXT_NAME + # service_client.DeleteService(service_id) + connection.send(grpc_message_to_json_string(link_id)) + context_client.RemoveLink(link_id) + # Topology received + else: + LOGGER.info('TOPOLOGY') + topology_details = TopologyDetails(**message_json) + + context = Context() + context.context_id.context_uuid.uuid = topology_details.topology_id.context_id.context_uuid.uuid + context_client.SetContext(context) + + topology = Topology() + topology.topology_id.context_id.CopyFrom(context.context_id) + topology.topology_id.topology_uuid.uuid = topology_details.topology_id.topology_uuid.uuid + context_client.SetTopology(topology) + + for device in topology_details.devices: + context_client.SetDevice(device) + + for link in topology_details.links: + context_client.SetLink(link) + class E2EOrchestratorServiceServicerImpl(E2EOrchestratorServiceServicer): def __init__(self): LOGGER.debug("Creating Servicer...") - LOGGER.debug("Servicer Created") + try: + LOGGER.debug("Requesting subscription") + sub_server = SubscriptionServer() + sub_server.start() + LOGGER.debug("Servicer Created") + + except Exception as ex: + LOGGER.info("Exception!: {}".format(ex)) + + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def Compute(self, request: E2EOrchestratorRequest, context: grpc.ServicerContext) -> E2EOrchestratorReply: endpoints_ids = [] diff --git a/src/e2e_orchestrator/service/__main__.py b/src/e2e_orchestrator/service/__main__.py index 5f20fd72f062127e12fc41352e7213fa320d4a94..b4763627d6de04e49765c047d560cc5626fbc17f 100644 --- a/src/e2e_orchestrator/service/__main__.py +++ b/src/e2e_orchestrator/service/__main__.py @@ -43,13 +43,6 @@ def main(): logging.basicConfig(level=log_level) LOGGER = logging.getLogger(__name__) - wait_for_environment_variables( - [ - get_env_var_name(ServiceNameEnum.E2EORCHESTRATOR, ENVVAR_SUFIX_SERVICE_HOST), - get_env_var_name(ServiceNameEnum.E2EORCHESTRATOR, ENVVAR_SUFIX_SERVICE_PORT_GRPC), - ] - ) - signal.signal(signal.SIGINT, signal_handler) signal.signal(signal.SIGTERM, signal_handler) diff --git a/src/kpi_manager/.gitlab-ci.yml b/src/kpi_manager/.gitlab-ci.yml index 498cfd89fb3da85fec1b2ad0c930408eab215dc5..47c866b4a963a4ce94e227bf24bdeb9263af04e1 100644 --- a/src/kpi_manager/.gitlab-ci.yml +++ b/src/kpi_manager/.gitlab-ci.yml @@ -83,6 +83,7 @@ unit_test kpi-manager: - docker exec -i $IMAGE_NAME bash -c "coverage report --include='${IMAGE_NAME}/*' --show-missing" coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/' after_script: + - docker rm -f $IMAGE_NAME crdb - docker volume rm -f crdb - docker network rm teraflowbridge - docker volume prune --force diff --git a/src/kpi_manager/database/KpiDB.py b/src/kpi_manager/database/KpiDB.py new file mode 100644 index 0000000000000000000000000000000000000000..d503f06f4cdeb57efd4c02701803f81fd31d3eea --- /dev/null +++ b/src/kpi_manager/database/KpiDB.py @@ -0,0 +1,66 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import logging +from common.method_wrappers.Decorator import MetricsPool +from common.tools.database.GenericDatabase import Database +from common.method_wrappers.ServiceExceptions import OperationFailedException + +LOGGER = logging.getLogger(__name__) +METRICS_POOL = MetricsPool('KpiManager', 'Database') + +class KpiDB(Database): + def __init__(self, model) -> None: + LOGGER.info('Init KpiManagerService') + super().__init__(model) + + def select_with_filter(self, model, filter_object): + """ + Generic method to create filters dynamically based on filter_object attributes. + params: model: SQLAlchemy model class to query. + filter_object: Object that contains filtering criteria as attributes. + return: SQLAlchemy session, query and Model + """ + session = self.Session() + try: + query = session.query(model) + # Apply filters based on the filter_object + if filter_object.kpi_id: + query = query.filter(model.kpi_id.in_([k.kpi_id.uuid for k in filter_object.kpi_id])) + + if filter_object.kpi_sample_type: + query = query.filter(model.kpi_sample_type.in_(filter_object.kpi_sample_type)) + + if filter_object.device_id: + query = query.filter(model.device_id.in_([d.device_uuid.uuid for d in filter_object.device_id])) + + if filter_object.endpoint_id: + query = query.filter(model.endpoint_id.in_([e.endpoint_uuid.uuid for e in filter_object.endpoint_id])) + + if filter_object.service_id: + query = query.filter(model.service_id.in_([s.service_uuid.uuid for s in filter_object.service_id])) + + if filter_object.slice_id: + query = query.filter(model.slice_id.in_([s.slice_uuid.uuid for s in filter_object.slice_id])) + + if filter_object.connection_id: + query = query.filter(model.connection_id.in_([c.connection_uuid.uuid for c in filter_object.connection_id])) + + if filter_object.link_id: + query = query.filter(model.link_id.in_([l.link_uuid.uuid for l in filter_object.link_id])) + except Exception as e: + LOGGER.error(f"Error creating filter of {model.__name__} table. ERROR: {e}") + raise OperationFailedException ("CreateKpiDescriptorFilter", extra_details=["unable to create the filter {:}".format(e)]) + + return super().select_with_filter(query, session, model) diff --git a/src/kpi_manager/service/KpiManagerServiceServicerImpl.py b/src/kpi_manager/service/KpiManagerServiceServicerImpl.py index fd22474829ea0dfb6b1a25e70bbb4d5440c0216b..3f9ae8492380e5e11cd3cbc926a2fce07620d8a7 100644 --- a/src/kpi_manager/service/KpiManagerServiceServicerImpl.py +++ b/src/kpi_manager/service/KpiManagerServiceServicerImpl.py @@ -18,7 +18,8 @@ from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_m from common.proto.context_pb2 import Empty from common.proto.kpi_manager_pb2_grpc import KpiManagerServiceServicer from common.proto.kpi_manager_pb2 import KpiId, KpiDescriptor, KpiDescriptorFilter, KpiDescriptorList -from kpi_manager.database.Kpi_DB import KpiDB +# from kpi_manager.database.Kpi_DB import KpiDB +from kpi_manager.database.KpiDB import KpiDB from kpi_manager.database.KpiModel import Kpi as KpiModel LOGGER = logging.getLogger(__name__) @@ -27,7 +28,7 @@ METRICS_POOL = MetricsPool('KpiManager', 'NBIgRPC') class KpiManagerServiceServicerImpl(KpiManagerServiceServicer): def __init__(self): LOGGER.info('Init KpiManagerService') - self.kpi_db_obj = KpiDB() + self.kpi_db_obj = KpiDB(KpiModel) @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def SetKpiDescriptor(self, request: KpiDescriptor, grpc_context: grpc.ServicerContext # type: ignore diff --git a/src/kpi_manager/service/__main__.py b/src/kpi_manager/service/__main__.py index 244d5afa373a6462a0382a0ed26a588088a689a1..05e32bb58128975ea5d2a5f015d1e8b3977c9905 100644 --- a/src/kpi_manager/service/__main__.py +++ b/src/kpi_manager/service/__main__.py @@ -16,8 +16,11 @@ import logging, signal, sys, threading from common.Settings import get_log_level from .KpiManagerService import KpiManagerService +from kpi_manager.database.KpiModel import Kpi as Model +from common.tools.database.GenericDatabase import Database + terminate = threading.Event() -LOGGER = None +LOGGER = None def signal_handler(signal, frame): # pylint: disable=redefined-outer-name LOGGER.warning('Terminate signal received') @@ -35,6 +38,11 @@ def main(): LOGGER.debug('Starting...') + # To create DB + kpiDBobj = Database(Model) + kpiDBobj.create_database() + kpiDBobj.create_tables() + grpc_service = KpiManagerService() grpc_service.start() diff --git a/src/kpi_manager/tests/__init__.py b/src/kpi_manager/tests/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..3ee6f7071f145e06c3aeaefc09a43ccd88e619e3 --- /dev/null +++ b/src/kpi_manager/tests/__init__.py @@ -0,0 +1,14 @@ +# Copyright 2022-2024 ETSI OSG/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. + diff --git a/src/kpi_manager/tests/test_kpi_db.py b/src/kpi_manager/tests/test_kpi_db.py index d4a57f83664f851504389b3bbe99d5c2a92542d9..b731ba385e54ed3ccb3c7a2e589977188ceb0e3c 100644 --- a/src/kpi_manager/tests/test_kpi_db.py +++ b/src/kpi_manager/tests/test_kpi_db.py @@ -14,13 +14,14 @@ import logging -from kpi_manager.database.Kpi_DB import KpiDB +from kpi_manager.database.KpiDB import KpiDB +from kpi_manager.database.KpiModel import Kpi as KpiModel LOGGER = logging.getLogger(__name__) def test_verify_databases_and_Tables(): LOGGER.info('>>> test_verify_Tables : START <<< ') - kpiDBobj = KpiDB() + kpiDBobj = KpiDB(KpiModel) # kpiDBobj.drop_database() # kpiDBobj.verify_tables() kpiDBobj.create_database() diff --git a/src/kpi_manager/tests/test_kpi_manager.py b/src/kpi_manager/tests/test_kpi_manager.py index 219fdadee9e2f4ca9ea9ac0be040043d4edfbdbe..3d046ea2ce99e655856470178bf7643f83324f17 100755 --- a/src/kpi_manager/tests/test_kpi_manager.py +++ b/src/kpi_manager/tests/test_kpi_manager.py @@ -138,10 +138,3 @@ def test_SelectKpiDescriptor(kpi_manager_client): response = kpi_manager_client.SelectKpiDescriptor(create_kpi_filter_request()) LOGGER.info("Response gRPC message object: {:}".format(response)) assert isinstance(response, KpiDescriptorList) - -def test_set_list_of_KPIs(kpi_manager_client): - LOGGER.debug(" >>> test_set_list_of_KPIs: START <<< ") - KPIs_TO_SEARCH = ["node_in_power_total", "node_in_current_total", "node_out_power_total"] - # adding KPI - for kpi in KPIs_TO_SEARCH: - kpi_manager_client.SetKpiDescriptor(create_kpi_descriptor_request_a(kpi)) diff --git a/src/kpi_manager/tests/test_messages.py b/src/kpi_manager/tests/test_messages.py index 7b5c45859b6c10056211f9f33df950d9668c11ea..08a2dbf7334c3e4e68c3cfa6c27ce08532521342 100644 --- a/src/kpi_manager/tests/test_messages.py +++ b/src/kpi_manager/tests/test_messages.py @@ -27,6 +27,8 @@ def create_kpi_id_request(): def create_kpi_descriptor_request(descriptor_name: str = "Test_name"): _create_kpi_request = kpi_manager_pb2.KpiDescriptor() _create_kpi_request.kpi_id.kpi_id.uuid = str(uuid.uuid4()) + # _create_kpi_request.kpi_id.kpi_id.uuid = "6e22f180-ba28-4641-b190-2287bf448888" + # _create_kpi_request.kpi_id.kpi_id.uuid = "1e22f180-ba28-4641-b190-2287bf446666" _create_kpi_request.kpi_description = descriptor_name _create_kpi_request.kpi_sample_type = KpiSampleType.KPISAMPLETYPE_PACKETS_RECEIVED _create_kpi_request.device_id.device_uuid.uuid = 'DEV2' diff --git a/src/kpi_value_api/.gitlab-ci.yml b/src/kpi_value_api/.gitlab-ci.yml index 1a6f821ba9e798bb4220d914109ab3a65f0f1792..14c8df299b1a4970ec0a4733bcd918bf1485b00d 100644 --- a/src/kpi_value_api/.gitlab-ci.yml +++ b/src/kpi_value_api/.gitlab-ci.yml @@ -59,9 +59,11 @@ unit_test kpi-value-api: - docker pull "bitnami/kafka:latest" - > docker run --name zookeeper -d --network=teraflowbridge -p 2181:2181 + --env ALLOW_ANONYMOUS_LOGIN=yes bitnami/zookeeper:latest - sleep 10 # Wait for Zookeeper to start - - docker run --name kafka -d --network=teraflowbridge -p 9092:9092 + - > + docker run --name kafka -d --network=teraflowbridge -p 9092:9092 --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env ALLOW_PLAINTEXT_LISTENER=yes bitnami/kafka:latest @@ -84,6 +86,8 @@ unit_test kpi-value-api: coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/' after_script: - docker rm -f $IMAGE_NAME + - docker rm -f kafka + - docker rm -f zookeeper - docker network rm teraflowbridge rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)' diff --git a/src/kpi_value_api/client/KpiValueApiClient.py b/src/kpi_value_api/client/KpiValueApiClient.py index f432271cfb7c8136f72156330b25d0b82b934d99..dfc5f07254a30db34a20ee8d0eae931cfd0ce571 100644 --- a/src/kpi_value_api/client/KpiValueApiClient.py +++ b/src/kpi_value_api/client/KpiValueApiClient.py @@ -15,17 +15,18 @@ import grpc, logging from common.Constants import ServiceNameEnum -from common.Settings import get_service_host, get_service_port_grpc -from common.tools.client.RetryDecorator import retry, delay_exponential -from common.tools.grpc.Tools import grpc_message_to_json_string +from common.Settings import get_service_host, get_service_port_grpc -from common.proto.context_pb2 import Empty -from common.proto.kpi_value_api_pb2 import KpiValueList, KpiValueFilter +from common.tools.client.RetryDecorator import retry, delay_exponential +from common.tools.grpc.Tools import grpc_message_to_json_string +from common.proto.context_pb2 import Empty +from common.proto.kpi_manager_pb2 import KpiId +from common.proto.kpi_value_api_pb2 import KpiValueList, KpiValueFilter, KpiAlarms from common.proto.kpi_value_api_pb2_grpc import KpiValueAPIServiceStub -LOGGER = logging.getLogger(__name__) -MAX_RETRIES = 10 -DELAY_FUNCTION = delay_exponential(initial=0.01, increment=2.0, maximum=5.0) +LOGGER = logging.getLogger(__name__) +MAX_RETRIES = 10 +DELAY_FUNCTION = delay_exponential(initial=0.01, increment=2.0, maximum=5.0) RETRY_DECORATOR = retry(max_retries=MAX_RETRIES, delay_function=DELAY_FUNCTION, prepare_method_name='connect') class KpiValueApiClient: @@ -34,8 +35,8 @@ class KpiValueApiClient: if not port: port = get_service_port_grpc(ServiceNameEnum.KPIVALUEAPI) self.endpoint = '{:s}:{:s}'.format(str(host), str(port)) LOGGER.debug('Creating channel to {:s}...'.format(str(self.endpoint))) - self.channel = None - self.stub = None + self.channel = None + self.stub = None self.connect() LOGGER.debug('Channel created') @@ -46,18 +47,25 @@ class KpiValueApiClient: def close(self): if self.channel is not None: self.channel.close() self.channel = None - self.stub = None + self.stub = None @RETRY_DECORATOR - def StoreKpiValues(self, request: KpiValueList) -> Empty: + def StoreKpiValues(self, request: KpiValueList) -> Empty: # type: ignore LOGGER.debug('StoreKpiValues: {:s}'.format(grpc_message_to_json_string(request))) response = self.stub.StoreKpiValues(request) LOGGER.debug('StoreKpiValues result: {:s}'.format(grpc_message_to_json_string(response))) return response @RETRY_DECORATOR - def SelectKpiValues(self, request: KpiValueFilter) -> KpiValueList: + def SelectKpiValues(self, request: KpiValueFilter) -> KpiValueList: # type: ignore LOGGER.debug('SelectKpiValues: {:s}'.format(grpc_message_to_json_string(request))) response = self.stub.SelectKpiValues(request) LOGGER.debug('SelectKpiValues result: {:s}'.format(grpc_message_to_json_string(response))) return response + + @RETRY_DECORATOR + def GetKpiAlarms(self, request: KpiId) -> KpiAlarms: # type: ignore + LOGGER.debug('GetKpiAlarms: {:s}'.format(grpc_message_to_json_string(request))) + response = self.stub.GetKpiAlarms(request) + LOGGER.debug('GetKpiAlarms result: {:s}'.format(grpc_message_to_json_string(response))) + return response diff --git a/src/kpi_value_api/requirements.in b/src/kpi_value_api/requirements.in index f5695906a8d02d55e15960a76986b8d03f02dba1..0615fa833f255bf91fd72fc484e40842face7a44 100644 --- a/src/kpi_value_api/requirements.in +++ b/src/kpi_value_api/requirements.in @@ -14,4 +14,5 @@ confluent-kafka==2.3.* requests==2.27.* -prometheus-api-client==0.5.3 \ No newline at end of file +prometheus-api-client==0.5.3 +apscheduler==3.10.1 diff --git a/src/kpi_value_api/service/KpiValueApiServiceServicerImpl.py b/src/kpi_value_api/service/KpiValueApiServiceServicerImpl.py index 4ea978fafc8d7454d41f64182d553d030215113a..706e180d5cf65107f5899315cdf75867beb81608 100644 --- a/src/kpi_value_api/service/KpiValueApiServiceServicerImpl.py +++ b/src/kpi_value_api/service/KpiValueApiServiceServicerImpl.py @@ -12,18 +12,22 @@ # See the License for the specific language governing permissions and # limitations under the License. -import logging, grpc, json +from datetime import datetime +import logging, grpc, json, queue from typing import Dict from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_method from common.tools.kafka.Variables import KafkaConfig, KafkaTopic +from confluent_kafka import KafkaError from common.proto.context_pb2 import Empty from common.proto.kpi_sample_types_pb2 import KpiSampleType from common.proto.kpi_manager_pb2 import KpiDescriptor, KpiId from common.proto.kpi_value_api_pb2_grpc import KpiValueAPIServiceServicer -from common.proto.kpi_value_api_pb2 import KpiValueList, KpiValueFilter, KpiValue, KpiValueType - +from common.proto.kpi_value_api_pb2 import KpiAlarms, KpiValueList, KpiValueFilter, KpiValue, KpiValueType +from apscheduler.schedulers.background import BackgroundScheduler +from apscheduler.triggers.interval import IntervalTrigger from confluent_kafka import Producer as KafkaProducer +from confluent_kafka import Consumer as KafkaConsumer from prometheus_api_client import PrometheusConnect from prometheus_api_client.utils import parse_datetime @@ -37,8 +41,14 @@ PROM_URL = "http://prometheus-k8s.monitoring.svc.cluster.local:9090" # TO class KpiValueApiServiceServicerImpl(KpiValueAPIServiceServicer): def __init__(self): LOGGER.debug('Init KpiValueApiService') + self.listener_topic = KafkaTopic.ALARMS.value + self.result_queue = queue.Queue() + self.scheduler = BackgroundScheduler() self.kafka_producer = KafkaProducer({'bootstrap.servers' : KafkaConfig.get_kafka_address()}) - + self.kafka_consumer = KafkaConsumer({'bootstrap.servers' : KafkaConfig.get_kafka_address(), + 'group.id' : 'kpi-value-api-frontend', + 'auto.offset.reset' : 'latest'}) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def StoreKpiValues(self, request: KpiValueList, grpc_context: grpc.ServicerContext ) -> Empty: @@ -109,17 +119,14 @@ class KpiValueApiServiceServicerImpl(KpiValueAPIServiceServicer): kpi_value = KpiValue() kpi_value.kpi_id.kpi_id = record['metric']['__name__'], kpi_value.timestamp = value[0], - kpi_value.kpi_value_type = self.ConverValueToKpiValueType(value[1]) + kpi_value.kpi_value_type.CopyFrom(self.ConverValueToKpiValueType(value['kpi_value'])) response.kpi_value_list.append(kpi_value) return response def GetKpiSampleType(self, kpi_value: str, kpi_manager_client): - print("--- START -----") - kpi_id = KpiId() kpi_id.kpi_id.uuid = kpi_value.kpi_id.kpi_id.uuid # print("KpiId generated: {:}".format(kpi_id)) - try: kpi_descriptor_object = KpiDescriptor() kpi_descriptor_object = kpi_manager_client.GetKpiDescriptor(kpi_id) @@ -135,26 +142,90 @@ class KpiValueApiServiceServicerImpl(KpiValueAPIServiceServicer): LOGGER.info("Unable to get KpiDescriptor. Error: {:}".format(e)) print ("Unable to get KpiDescriptor. Error: {:}".format(e)) - def ConverValueToKpiValueType(self, value): - # Check if the value is an integer (int64) - try: - int_value = int(value) - return KpiValueType(int64Val=int_value) - except (ValueError, TypeError): - pass - # Check if the value is a float + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) + def GetKpiAlarms(self, request: KpiId, grpc_context: grpc.ServicerContext) -> KpiAlarms: # type: ignore + """ + Get Alarms from Kafka return Alrams periodically. + """ + LOGGER.debug('GetKpiAlarms: {:}'.format(request)) + response = KpiAlarms() + + for alarm_key, value in self.StartResponseListener(request.kpi_id.uuid): + response.start_timestamp.timestamp = datetime.strptime( + value["window_start"], "%Y-%m-%dT%H:%M:%S.%fZ").timestamp() + response.kpi_id.kpi_id.uuid = value['kpi_id'] + for key, threshold in value.items(): + if key not in ['kpi_id', 'window']: + response.alarms[key] = threshold + + yield response + + def StartResponseListener(self, filter_key=None): + """ + Start the Kafka response listener with APScheduler and return key-value pairs periodically. + """ + LOGGER.info("Starting StartResponseListener") + # Schedule the ResponseListener at fixed intervals + self.scheduler.add_job( + self.response_listener, + trigger=IntervalTrigger(seconds=5), + args=[filter_key], + id=f"response_listener_{self.listener_topic}", + replace_existing=True + ) + self.scheduler.start() + LOGGER.info(f"Started Kafka listener for topic {self.listener_topic}...") try: - float_value = float(value) - return KpiValueType(floatVal=float_value) - except (ValueError, TypeError): - pass - # Check if the value is a boolean - if value.lower() in ['true', 'false']: - bool_value = value.lower() == 'true' - return KpiValueType(boolVal=bool_value) - # If none of the above, treat it as a string - return KpiValueType(stringVal=value) + while True: + LOGGER.info("entering while...") + key, value = self.result_queue.get() # Wait until a result is available + LOGGER.info("In while true ...") + yield key, value # Yield the result to the calling function + except Exception as e: + LOGGER.warning("Listener stopped. Error: {:}".format(e)) + finally: + self.scheduler.shutdown() + + def response_listener(self, filter_key=None): + """ + Poll Kafka messages and put key-value pairs into the queue. + """ + LOGGER.info(f"Polling Kafka topic {self.listener_topic}...") + + consumer = self.kafka_consumer + consumer.subscribe([self.listener_topic]) + while True: + msg = consumer.poll(1.0) + if msg is None: + continue + elif msg.error(): + if msg.error().code() != KafkaError._PARTITION_EOF: + LOGGER.error(f"Kafka error: {msg.error()}") + break + try: + key = msg.key().decode('utf-8') if msg.key() else None + if filter_key is not None and key == filter_key: + value = json.loads(msg.value().decode('utf-8')) + LOGGER.info(f"Received key: {key}, value: {value}") + self.result_queue.put((key, value)) + else: + LOGGER.warning(f"Skipping message with unmatched key: {key} - {filter_key}") + except Exception as e: + LOGGER.error(f"Error processing Kafka message: {e}") def delivery_callback(self, err, msg): if err: LOGGER.debug('Message delivery failed: {:}'.format(err)) else: LOGGER.debug('Message delivered to topic {:}'.format(msg.topic())) + + def ConverValueToKpiValueType(self, value): + kpi_value_type = KpiValueType() + if isinstance(value, int): + kpi_value_type.int32Val = value + elif isinstance(value, float): + kpi_value_type.floatVal = value + elif isinstance(value, str): + kpi_value_type.stringVal = value + elif isinstance(value, bool): + kpi_value_type.boolVal = value + # Add other checks for different types as needed + return kpi_value_type diff --git a/src/kpi_value_api/tests/messages.py b/src/kpi_value_api/tests/messages.py index d8ad14bd44eebc1e9412cfd5ff2973e6018c95e9..50240c0154deff33dfdbb797cd5e0fca9a05c8ab 100644 --- a/src/kpi_value_api/tests/messages.py +++ b/src/kpi_value_api/tests/messages.py @@ -13,9 +13,16 @@ # limitations under the License. import uuid, time +from common.proto import kpi_manager_pb2 from common.proto.kpi_value_api_pb2 import KpiValue, KpiValueList +def create_kpi_id_request(): + _create_kpi_id = kpi_manager_pb2.KpiId() + _create_kpi_id.kpi_id.uuid = "6e22f180-ba28-4641-b190-2287bf448888" + # _create_kpi_id.kpi_id.uuid = str(uuid.uuid4()) + return _create_kpi_id + def create_kpi_value_list(): _create_kpi_value_list = KpiValueList() # To run this experiment sucessfully, add an existing UUID of a KPI Descriptor from the KPI DB. diff --git a/src/kpi_value_api/tests/test_kpi_value_api.py b/src/kpi_value_api/tests/test_kpi_value_api.py index 307b5cdad4e6503a774e308f669fc44762f84bf1..c245bb9ef64eaa29dc4d51955ff94adeeeeb8dda 100644 --- a/src/kpi_value_api/tests/test_kpi_value_api.py +++ b/src/kpi_value_api/tests/test_kpi_value_api.py @@ -21,8 +21,8 @@ from common.Settings import ( ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC, get_env_var_name, get_service_port_grpc) from kpi_value_api.service.KpiValueApiService import KpiValueApiService from kpi_value_api.client.KpiValueApiClient import KpiValueApiClient -from kpi_value_api.tests.messages import create_kpi_value_list - +from kpi_value_api.tests.messages import create_kpi_value_list, create_kpi_id_request +from common.proto.kpi_value_api_pb2 import KpiAlarms LOCAL_HOST = '127.0.0.1' KPIVALUEAPI_SERVICE_PORT = get_service_port_grpc(ServiceNameEnum.KPIVALUEAPI) # type: ignore @@ -78,7 +78,14 @@ def test_validate_kafka_topics(): response = KafkaTopic.create_all_topics() assert isinstance(response, bool) -def test_store_kpi_values(kpi_value_api_client): - LOGGER.debug(" >>> test_set_list_of_KPIs: START <<< ") - response = kpi_value_api_client.StoreKpiValues(create_kpi_value_list()) - assert isinstance(response, Empty) +# def test_GetKpiAlarms(kpi_value_api_client): +# LOGGER.debug(" >>> test_GetKpiAlarms") +# stream = kpi_value_api_client.GetKpiAlarms(create_kpi_id_request()) +# for response in stream: +# LOGGER.debug(str(response)) +# assert isinstance(response, KpiAlarms) + +# def test_store_kpi_values(kpi_value_api_client): +# LOGGER.debug(" >>> test_set_list_of_KPIs: START <<< ") +# response = kpi_value_api_client.StoreKpiValues(create_kpi_value_list()) +# assert isinstance(response, Empty) diff --git a/src/kpi_value_writer/.gitlab-ci.yml b/src/kpi_value_writer/.gitlab-ci.yml index 9a2f9fd47e435b26e2e3a335bd9b95da58a0517f..3f376a6739ebf72964d889e0c43e04f8daed6069 100644 --- a/src/kpi_value_writer/.gitlab-ci.yml +++ b/src/kpi_value_writer/.gitlab-ci.yml @@ -59,9 +59,11 @@ unit_test kpi-value-writer: - docker pull "bitnami/kafka:latest" - > docker run --name zookeeper -d --network=teraflowbridge -p 2181:2181 + --env ALLOW_ANONYMOUS_LOGIN=yes bitnami/zookeeper:latest - sleep 10 # Wait for Zookeeper to start - - docker run --name kafka -d --network=teraflowbridge -p 9092:9092 + - > + docker run --name kafka -d --network=teraflowbridge -p 9092:9092 --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env ALLOW_PLAINTEXT_LISTENER=yes bitnami/kafka:latest @@ -76,6 +78,8 @@ unit_test kpi-value-writer: $CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG - sleep 5 - docker ps -a + - docker logs zookeeper + - docker logs kafka - docker logs $IMAGE_NAME - > docker exec -i $IMAGE_NAME bash -c @@ -84,8 +88,8 @@ unit_test kpi-value-writer: coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/' after_script: - docker rm -f $IMAGE_NAME - - docker rm -f zookeeper - docker rm -f kafka + - docker rm -f zookeeper - docker network rm teraflowbridge rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)' diff --git a/src/kpi_value_writer/service/MetricWriterToPrometheus.py b/src/kpi_value_writer/service/MetricWriterToPrometheus.py index 85e618a4b5b330cb83cf255652e7be8dff2dabd3..ad37d73bc2564851ee3659f3ddd756611c57bbfc 100644 --- a/src/kpi_value_writer/service/MetricWriterToPrometheus.py +++ b/src/kpi_value_writer/service/MetricWriterToPrometheus.py @@ -15,7 +15,6 @@ # read Kafka stream from Kafka topic import logging -from typing import Dict from prometheus_client import Gauge from common.proto.kpi_sample_types_pb2 import KpiSampleType @@ -45,13 +44,13 @@ class MetricWriterToPrometheus: 'slice_id' : kpi_descriptor.slice_id.slice_uuid.uuid, 'connection_id' : kpi_descriptor.connection_id.connection_uuid.uuid, 'link_id' : kpi_descriptor.link_id.link_uuid.uuid, - 'time_stamp' : kpi_value['timestamp'], - 'kpi_value' : kpi_value['kpi_value_type'] + 'time_stamp' : kpi_value.timestamp.timestamp, + 'kpi_value' : kpi_value.kpi_value_type.floatVal } - # LOGGER.debug("Cooked Kpi: {:}".format(cooked_kpi)) + LOGGER.debug("Cooked Kpi: {:}".format(cooked_kpi)) return cooked_kpi - def create_and_expose_cooked_kpi(self, kpi_descriptor: KpiDescriptor, kpi_value: Dict): + def create_and_expose_cooked_kpi(self, kpi_descriptor: KpiDescriptor, kpi_value: KpiValue): # merge both gRPC messages into single varible. cooked_kpi = self.merge_kpi_descriptor_and_kpi_value(kpi_descriptor, kpi_value) tags_to_exclude = {'kpi_description', 'kpi_sample_type', 'kpi_value'} @@ -74,7 +73,7 @@ class MetricWriterToPrometheus: connection_id = cooked_kpi['connection_id'], link_id = cooked_kpi['link_id'], time_stamp = cooked_kpi['time_stamp'], - ).set(cooked_kpi['kpi_value']) + ).set(float(cooked_kpi['kpi_value'])) LOGGER.debug("Metric pushed to the endpoints: {:}".format(PROM_METRICS[metric_name])) except ValueError as e: diff --git a/src/kpi_value_writer/tests/test_kpi_value_writer.py b/src/kpi_value_writer/tests/test_kpi_value_writer.py index b784fae5da713f9bd7cd7a1668f48b080f7a84fa..521dd676eb20d35f46a02d959a809eea685bd67a 100755 --- a/src/kpi_value_writer/tests/test_kpi_value_writer.py +++ b/src/kpi_value_writer/tests/test_kpi_value_writer.py @@ -29,5 +29,5 @@ def test_validate_kafka_topics(): def test_KafkaConsumer(): LOGGER.debug(" --->>> test_kafka_consumer: START <<<--- ") - kpi_value_writer = KpiValueWriter() - kpi_value_writer.RunKafkaConsumer() + # kpi_value_writer = KpiValueWriter() + # kpi_value_writer.RunKafkaConsumer() diff --git a/src/monitoring/service/EventTools.py b/src/monitoring/service/EventTools.py index 7820f11c86e87f543087c88704572e1a169c6e7d..2ad31c9cb7df68e2b57d280aa5cdcf356376d8c6 100644 --- a/src/monitoring/service/EventTools.py +++ b/src/monitoring/service/EventTools.py @@ -108,12 +108,15 @@ class EventsDeviceCollector: if config_rule.action != ConfigActionEnum.CONFIGACTION_SET: continue if config_rule.WhichOneof('config_rule') != 'custom': continue str_resource_key = str(config_rule.custom.resource_key) - if not str_resource_key.startswith('/interface['): continue - json_resource_value = json.loads(config_rule.custom.resource_value) - if 'name' not in json_resource_value: continue - if 'enabled' not in json_resource_value: continue - if not json_resource_value['enabled']: continue - enabled_endpoint_names.add(json_resource_value['name']) + if str_resource_key.startswith('/interface[') or str_resource_key.startswith('/endpoints/endpoint['): + json_resource_value = json.loads(config_rule.custom.resource_value) + if 'name' not in json_resource_value: continue + if 'enabled' in json_resource_value: + if not json_resource_value['enabled']: continue + enabled_endpoint_names.add(json_resource_value['name']) + if 'oper-status' in json_resource_value: + if str(json_resource_value['oper-status']).upper() != 'UP': continue + enabled_endpoint_names.add(json_resource_value['name']) endpoints_monitored = self._device_endpoint_monitored.setdefault(device_uuid, dict()) for endpoint in device.device_endpoints: @@ -127,7 +130,10 @@ class EventsDeviceCollector: endpoint_was_monitored = endpoints_monitored.get(endpoint_uuid, False) endpoint_is_enabled = (endpoint_name_or_uuid in enabled_endpoint_names) - if not endpoint_was_monitored and endpoint_is_enabled: + if not endpoint_was_monitored and not endpoint_is_enabled: + # endpoint is idle, do nothing + pass + elif not endpoint_was_monitored and endpoint_is_enabled: # activate for value in endpoint.kpi_sample_types: if value == KPISAMPLETYPE_UNKNOWN: continue diff --git a/src/nbi/Dockerfile b/src/nbi/Dockerfile index 1435e9757226e290e92f208ef48a7182eb106c55..ec1c054858b5f97dcdff36e2ccd4c8039942b51e 100644 --- a/src/nbi/Dockerfile +++ b/src/nbi/Dockerfile @@ -16,9 +16,24 @@ FROM python:3.9-slim # Install dependencies RUN apt-get --yes --quiet --quiet update && \ - apt-get --yes --quiet --quiet install wget g++ git && \ + apt-get --yes --quiet --quiet install wget g++ git build-essential cmake libpcre2-dev python3-dev python3-cffi && \ rm -rf /var/lib/apt/lists/* +# Download, build and install libyang. Note that APT package is outdated +# - Ref: https://github.com/CESNET/libyang +# - Ref: https://github.com/CESNET/libyang-python/ +RUN mkdir -p /var/libyang +RUN git clone https://github.com/CESNET/libyang.git /var/libyang +WORKDIR /var/libyang +RUN git fetch +RUN git checkout v2.1.148 +RUN mkdir -p /var/libyang/build +WORKDIR /var/libyang/build +RUN cmake -D CMAKE_BUILD_TYPE:String="Release" .. +RUN make +RUN make install +RUN ldconfig + # Set Python to show logs as they occur ENV PYTHONUNBUFFERED=0 @@ -53,24 +68,6 @@ RUN python3 -m grpc_tools.protoc -I=. --python_out=. --grpc_python_out=. *.proto RUN rm *.proto RUN find . -type f -exec sed -i -E 's/(import\ .*)_pb2/from . \1_pb2/g' {} \; -# Download, build and install libyang. Note that APT package is outdated -# - Ref: https://github.com/CESNET/libyang -# - Ref: https://github.com/CESNET/libyang-python/ -RUN apt-get --yes --quiet --quiet update && \ - apt-get --yes --quiet --quiet install build-essential cmake libpcre2-dev python3-dev python3-cffi && \ - rm -rf /var/lib/apt/lists/* -RUN mkdir -p /var/libyang -RUN git clone https://github.com/CESNET/libyang.git /var/libyang -WORKDIR /var/libyang -RUN git fetch -RUN git checkout v2.1.148 -RUN mkdir -p /var/libyang/build -WORKDIR /var/libyang/build -RUN cmake -D CMAKE_BUILD_TYPE:String="Release" .. -RUN make -RUN make install -RUN ldconfig - # Create component sub-folders, get specific Python packages RUN mkdir -p /var/teraflow/nbi WORKDIR /var/teraflow/nbi @@ -89,6 +86,10 @@ COPY src/service/__init__.py service/__init__.py COPY src/service/client/. service/client/ COPY src/slice/__init__.py slice/__init__.py COPY src/slice/client/. slice/client/ +COPY src/qkd_app/__init__.py qkd_app/__init__.py +COPY src/qkd_app/client/. qkd_app/client/ +COPY src/vnt_manager/__init__.py vnt_manager/__init__.py +COPY src/vnt_manager/client/. vnt_manager/client/ RUN mkdir -p /var/teraflow/tests/tools COPY src/tests/tools/mock_osm/. tests/tools/mock_osm/ diff --git a/src/nbi/requirements.in b/src/nbi/requirements.in index 4c5460a8e2b3c05d994bbaba4bd2939e629db1e2..f0eec63568d900c1324f74d5c9265b614e2ac7d0 100644 --- a/src/nbi/requirements.in +++ b/src/nbi/requirements.in @@ -25,3 +25,4 @@ git+https://github.com/robshakir/pyangbind.git pydantic==2.6.3 requests==2.27.1 werkzeug==2.3.7 +websockets==12.0 diff --git a/src/nbi/service/NbiServiceServicerImpl.py b/src/nbi/service/NbiServiceServicerImpl.py index b1d62afb11709d9ee237bc1f840b803674923c00..79d8b8ca0074fe63cde141d41a3e6fde475415ee 100644 --- a/src/nbi/service/NbiServiceServicerImpl.py +++ b/src/nbi/service/NbiServiceServicerImpl.py @@ -20,7 +20,7 @@ from common.proto.nbi_pb2_grpc import NbiServiceServicer LOGGER = logging.getLogger(__name__) -METRICS_POOL = MetricsPool('Compute', 'RPC') +METRICS_POOL = MetricsPool('NBI', 'RPC') class NbiServiceServicerImpl(NbiServiceServicer): def __init__(self): diff --git a/src/nbi/service/__main__.py b/src/nbi/service/__main__.py index 58fbb9625addc43c6b62d06d7a9caa3f648203d5..fb735f8a775e8cce1bc696ed4f148b2ab0ec9dcc 100644 --- a/src/nbi/service/__main__.py +++ b/src/nbi/service/__main__.py @@ -16,9 +16,10 @@ import logging, signal, sys, threading from prometheus_client import start_http_server from common.Constants import ServiceNameEnum from common.Settings import ( - ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC, get_env_var_name, get_log_level, get_metrics_port, - wait_for_environment_variables) - + ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC, + get_env_var_name, get_log_level, get_metrics_port, + wait_for_environment_variables +) from .NbiService import NbiService from .rest_server.RestServer import RestServer from .rest_server.nbi_plugins.etsi_bwm import register_etsi_bwm_api @@ -28,7 +29,9 @@ from .rest_server.nbi_plugins.ietf_l3vpn import register_ietf_l3vpn from .rest_server.nbi_plugins.ietf_network import register_ietf_network from .rest_server.nbi_plugins.ietf_network_slice import register_ietf_nss from .rest_server.nbi_plugins.ietf_acl import register_ietf_acl +from .rest_server.nbi_plugins.qkd_app import register_qkd_app from .rest_server.nbi_plugins.tfs_api import register_tfs_api +from .context_subscription import register_context_subscription terminate = threading.Event() LOGGER = None @@ -47,8 +50,10 @@ def main(): wait_for_environment_variables([ get_env_var_name(ServiceNameEnum.CONTEXT, ENVVAR_SUFIX_SERVICE_HOST ), get_env_var_name(ServiceNameEnum.CONTEXT, ENVVAR_SUFIX_SERVICE_PORT_GRPC), - get_env_var_name(ServiceNameEnum.SLICE, ENVVAR_SUFIX_SERVICE_HOST ), - get_env_var_name(ServiceNameEnum.SLICE, ENVVAR_SUFIX_SERVICE_PORT_GRPC), + get_env_var_name(ServiceNameEnum.DEVICE, ENVVAR_SUFIX_SERVICE_HOST ), + get_env_var_name(ServiceNameEnum.DEVICE, ENVVAR_SUFIX_SERVICE_PORT_GRPC), + get_env_var_name(ServiceNameEnum.SERVICE, ENVVAR_SUFIX_SERVICE_HOST ), + get_env_var_name(ServiceNameEnum.SERVICE, ENVVAR_SUFIX_SERVICE_PORT_GRPC), ]) signal.signal(signal.SIGINT, signal_handler) @@ -72,9 +77,12 @@ def main(): register_ietf_network(rest_server) register_ietf_nss(rest_server) # Registering NSS entrypoint register_ietf_acl(rest_server) + register_qkd_app(rest_server) register_tfs_api(rest_server) rest_server.start() + register_context_subscription() + LOGGER.debug('Configured Resources:') for resource in rest_server.api.resources: LOGGER.debug(' - {:s}'.format(str(resource))) diff --git a/src/nbi/service/context_subscription/__init__.py b/src/nbi/service/context_subscription/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..d2ae85070eb5b5352db9690179b098cdb9781de0 --- /dev/null +++ b/src/nbi/service/context_subscription/__init__.py @@ -0,0 +1,64 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import logging + +from websockets.sync.server import serve +from common.proto.vnt_manager_pb2 import VNTSubscriptionRequest +from common.Settings import get_setting +from context.client.ContextClient import ContextClient +from common.Constants import DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME +from common.tools.object_factory.Topology import json_topology_id +from common.tools.object_factory.Context import json_context_id +from common.proto.context_pb2 import ContextId, TopologyId +import json +import os +from vnt_manager.client.VNTManagerClient import VNTManagerClient + +JSON_ADMIN_CONTEXT_ID = json_context_id(DEFAULT_CONTEXT_NAME) +ADMIN_CONTEXT_ID = ContextId(**JSON_ADMIN_CONTEXT_ID) +ADMIN_TOPOLOGY_ID = TopologyId(**json_topology_id(DEFAULT_TOPOLOGY_NAME, context_id=JSON_ADMIN_CONTEXT_ID)) + +vnt_manager_client: VNTManagerClient = VNTManagerClient() +context_client: ContextClient = ContextClient() + +ALL_HOSTS = "0.0.0.0" +WS_E2E_PORT = int(get_setting('WS_E2E_PORT', default='8762')) + +LOGGER = logging.getLogger(__name__) + + +def register_context_subscription(): + with serve(subcript_to_vnt_manager, ALL_HOSTS, WS_E2E_PORT, logger=LOGGER) as server: + LOGGER.info("Running subscription server...: {}:{}".format(ALL_HOSTS, str(WS_E2E_PORT))) + server.serve_forever() + LOGGER.info("Exiting subscription server...") + + +def subcript_to_vnt_manager(websocket): + for message in websocket: + LOGGER.debug("Message received: {}".format(message)) + message_json = json.loads(message) + request = VNTSubscriptionRequest() + request.host = message_json['host'] + request.port = message_json['port'] + LOGGER.debug("Received gRPC from ws: {}".format(request)) + + try: + vntm_reply = vnt_manager_client.VNTSubscript(request) + LOGGER.debug("Received gRPC from vntm: {}".format(vntm_reply)) + except Exception as e: + LOGGER.error('Could not subscript to VTNManager: {}'.format(e)) + + websocket.send(vntm_reply.subscription) diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_l3vpn/Handlers.py b/src/nbi/service/rest_server/nbi_plugins/ietf_l3vpn/Handlers.py index f7329cb35666f423e85f99510e5f89a82e89b7f8..1f399070aa2dbd0f9b22d32e15574b7bc38315ff 100644 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_l3vpn/Handlers.py +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_l3vpn/Handlers.py @@ -195,11 +195,17 @@ def process_site(site : Dict, errors : List[Dict]) -> None: # site_static_routing: (lan-range, lan-prefix-len, lan-tag) => next-hop site_static_routing : Dict[Tuple[str, str], str] = {} - for rt_proto in site['routing-protocols']['routing-protocol']: + site_routing_protocols : Dict = site.get('routing-protocols', dict()) + site_routing_protocol : List = site_routing_protocols.get('routing-protocol', list()) + for rt_proto in site_routing_protocol: if rt_proto['type'] != 'ietf-l3vpn-svc:static': MSG = 'Site Routing Protocol Type: {:s}' raise NotImplementedError(MSG.format(str(rt_proto['type']))) - for ipv4_rt in rt_proto['static']['cascaded-lan-prefixes']['ipv4-lan-prefixes']: + + rt_proto_static : Dict = rt_proto.get('static', dict()) + rt_proto_static_clps : Dict = rt_proto_static.get('cascaded-lan-prefixes', dict()) + rt_proto_static_clps_v4 = rt_proto_static_clps.get('ipv4-lan-prefixes', list()) + for ipv4_rt in rt_proto_static_clps_v4: lan_range, lan_prefix = ipv4_rt['lan'].split('/') lan_prefix = int(lan_prefix) lan_tag = int(ipv4_rt['lan-tag'].replace('vlan', '')) diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_l3vpn/L3VPN_Service.py b/src/nbi/service/rest_server/nbi_plugins/ietf_l3vpn/L3VPN_Service.py index a313677c12203c1621b920f3fcb7f6ff0c281bfb..47fb05d5571b440e867e776a753f556c3130b119 100644 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_l3vpn/L3VPN_Service.py +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_l3vpn/L3VPN_Service.py @@ -44,7 +44,7 @@ class L3VPN_Service(Resource): service_ready_status = ServiceStatusEnum.SERVICESTATUS_ACTIVE service_status = target.service_status.service_status # pylint: disable=no-member - response = jsonify({}) + response = jsonify({'service-id': target.service_id.service_uuid.uuid}) response.status_code = HTTP_OK if service_status == service_ready_status else HTTP_GATEWAYTIMEOUT except Exception as e: # pylint: disable=broad-except LOGGER.exception('Something went wrong Retrieving VPN({:s})'.format(str(vpn_id))) diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network/NameMapping.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network/NameMapping.py index 0c10559115f4e4ba9e5b2468e36cf7f917c25f51..94e4723a5c7ca83fb382bb70cb241cb69b66ce0e 100644 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network/NameMapping.py +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network/NameMapping.py @@ -19,7 +19,7 @@ class NameMappings: def __init__(self) -> None: self._device_uuid_to_name : Dict[str, str] = dict() self._endpoint_uuid_to_name : Dict[Tuple[str, str], str] = dict() - + def store_device_name(self, device : Device) -> None: device_uuid = device.device_id.device_uuid.uuid device_name = device.name diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network/Networks.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network/Networks.py index 5d663b8b3071856bc9cd204ee911c61b368ebe97..0198d418f7e5f0058ce40fbcd7b6010a168e1c51 100644 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network/Networks.py +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network/Networks.py @@ -12,19 +12,23 @@ # See the License for the specific language governing permissions and # limitations under the License. -import json, logging +import enum, json, logging import pyangbind.lib.pybindJSON as pybindJSON from flask import request from flask.json import jsonify from flask_restful import Resource from common.Constants import DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME +from common.Settings import get_setting +from common.proto.context_pb2 import ContextId, Empty from common.tools.context_queries.Topology import get_topology_details +from common.tools.object_factory.Context import json_context_id from context.client.ContextClient import ContextClient from nbi.service.rest_server.nbi_plugins.tools.Authentication import HTTP_AUTH from nbi.service.rest_server.nbi_plugins.tools.HttpStatusCodes import HTTP_OK, HTTP_SERVERERROR from .bindings import ietf_network from .ComposeNetwork import compose_network from .ManualFixes import manual_fixes +from .YangHandler import YangHandler LOGGER = logging.getLogger(__name__) @@ -33,6 +37,14 @@ TE_TOPOLOGY_NAMES = [ 'providerId-10-clientId-0-topologyId-2' ] +class Renderer(enum.Enum): + LIBYANG = 'LIBYANG' + PYANGBIND = 'PYANGBIND' + +DEFAULT_RENDERER = Renderer.LIBYANG +USE_RENDERER = get_setting('IETF_NETWORK_RENDERER', default=DEFAULT_RENDERER.value) + + class Networks(Resource): @HTTP_AUTH.login_required def get(self): @@ -40,31 +52,59 @@ class Networks(Resource): topology_id = '' try: context_client = ContextClient() - #target = get_slice_by_uuid(context_client, vpn_id, rw_copy=True) - #if target is None: - # raise Exception('VPN({:s}) not found in database'.format(str(vpn_id))) - ietf_nets = ietf_network() + if USE_RENDERER == Renderer.PYANGBIND.value: + #target = get_slice_by_uuid(context_client, vpn_id, rw_copy=True) + #if target is None: + # raise Exception('VPN({:s}) not found in database'.format(str(vpn_id))) + + ietf_nets = ietf_network() + + topology_details = get_topology_details( + context_client, DEFAULT_TOPOLOGY_NAME, context_uuid=DEFAULT_CONTEXT_NAME, + #rw_copy=True + ) + if topology_details is None: + MSG = 'Topology({:s}/{:s}) not found' + raise Exception(MSG.format(DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME)) - topology_details = get_topology_details( - context_client, DEFAULT_TOPOLOGY_NAME, context_uuid=DEFAULT_CONTEXT_NAME, #rw_copy=True - ) - if topology_details is None: - MSG = 'Topology({:s}/{:s}) not found' - raise Exception(MSG.format(DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME)) + for te_topology_name in TE_TOPOLOGY_NAMES: + ietf_net = ietf_nets.networks.network.add(te_topology_name) + compose_network(ietf_net, te_topology_name, topology_details) - for te_topology_name in TE_TOPOLOGY_NAMES: - ietf_net = ietf_nets.networks.network.add(te_topology_name) - compose_network(ietf_net, te_topology_name, topology_details) + # TODO: improve these workarounds to enhance performance + json_response = json.loads(pybindJSON.dumps(ietf_nets, mode='ietf')) + + # Workaround; pyangbind does not allow to set otn_topology / eth-tran-topology + manual_fixes(json_response) + elif USE_RENDERER == Renderer.LIBYANG.value: + yang_handler = YangHandler() + json_response = [] - # TODO: improve these workarounds to enhance performance - json_response = json.loads(pybindJSON.dumps(ietf_nets, mode='ietf')) - - # Workaround; pyangbind does not allow to set otn_topology / eth-tran-topology - manual_fixes(json_response) + contexts = context_client.ListContexts(Empty()).contexts + context_names = [context.name for context in contexts] + LOGGER.info(f'Contexts detected: {context_names}') + + for context_name in context_names: + topologies = context_client.ListTopologies(ContextId(**json_context_id(context_name))).topologies + topology_names = [topology.name for topology in topologies] + LOGGER.info(f'Topologies detected for context {context_name}: {topology_names}') + + for topology_name in topology_names: + topology_details = get_topology_details(context_client, topology_name, context_name) + if topology_details is None: + raise Exception(f'Topology({context_name}/{topology_name}) not found') + + network_reply = yang_handler.compose_network(topology_name, topology_details) + json_response.append(network_reply) + + yang_handler.destroy() + else: + raise Exception('Unsupported Renderer: {:s}'.format(str(USE_RENDERER))) response = jsonify(json_response) response.status_code = HTTP_OK + except Exception as e: # pylint: disable=broad-except LOGGER.exception('Something went wrong Retrieving Topology({:s})'.format(str(topology_id))) response = jsonify({'error': str(e)}) diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network/YangHandler.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network/YangHandler.py new file mode 100644 index 0000000000000000000000000000000000000000..a5dda280c98c060c2f872df5ab17152880b522d5 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network/YangHandler.py @@ -0,0 +1,117 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import json +import libyang, logging, os +from typing import Any +from common.proto.context_pb2 import TopologyDetails, Device, Link +from .NameMapping import NameMappings +from context.client.ContextClient import ContextClient +from common.tools.object_factory.Device import json_device_id +from common.proto.context_pb2 import DeviceId + +LOGGER = logging.getLogger(__name__) + +YANG_DIR = os.path.join(os.path.dirname(__file__), 'yang') +YANG_MODULES = ['ietf-network', 'ietf-network-topology', 'ietf-l3-unicast-topology'] + +class YangHandler: + def __init__(self) -> None: + self._yang_context = libyang.Context(YANG_DIR) + for yang_module_name in YANG_MODULES: + LOGGER.info('Loading module: {:s}'.format(str(yang_module_name))) + self._yang_context.load_module(yang_module_name).feature_enable_all() + + def compose_network(self, te_topology_name: str, topology_details: TopologyDetails) -> dict: + networks = self._yang_context.create_data_path('/ietf-network:networks') + network = networks.create_path(f'network[network-id="{te_topology_name}"]') + network.create_path('network-id', te_topology_name) + + network_types = network.create_path('network-types') + network_types.create_path('ietf-l3-unicast-topology:l3-unicast-topology') + + name_mappings = NameMappings() + + for device in topology_details.devices: + self.compose_node(device, name_mappings, network) + + for link in topology_details.links: + self.compose_link(link, name_mappings, network) + + return json.loads(networks.print_mem('json')) + + def compose_node(self, dev: Device, name_mappings: NameMappings, network: Any) -> None: + device_name = dev.name + name_mappings.store_device_name(dev) + + node = network.create_path(f'node[node-id="{device_name}"]') + node.create_path('node-id', device_name) + node_attributes = node.create_path('ietf-l3-unicast-topology:l3-node-attributes') + node_attributes.create_path('name', device_name) + + context_client = ContextClient() + device = context_client.GetDevice(DeviceId(**json_device_id(device_name))) + + for endpoint in device.device_endpoints: + name_mappings.store_endpoint_name(dev, endpoint) + + self._process_device_config(device, node) + + def _process_device_config(self, device: Device, node: Any) -> None: + for config in device.device_config.config_rules: + if config.WhichOneof('config_rule') != 'custom' or '/interface[' not in config.custom.resource_key: + continue + + for endpoint in device.device_endpoints: + endpoint_name = endpoint.name + if f'/interface[{endpoint_name}]' in config.custom.resource_key or f'/interface[{endpoint_name}.' in config.custom.resource_key: + interface_name = config.custom.resource_key.split('interface[')[1].split(']')[0] + self._create_termination_point(node, interface_name, endpoint_name, config.custom.resource_value) + + def _create_termination_point(self, node: Any, interface_name: str, endpoint_name: str, resource_value: str) -> None: + ip_addresses = self._extract_ip_addresses(json.loads(resource_value)) + if ip_addresses: + tp = node.create_path(f'ietf-network-topology:termination-point[tp-id="{interface_name}"]') + tp.create_path('tp-id', interface_name) + tp_attributes = tp.create_path('ietf-l3-unicast-topology:l3-termination-point-attributes') + + for ip in ip_addresses: + tp_attributes.create_path('ip-address', ip) + tp_attributes.create_path('interface-name', endpoint_name) + + @staticmethod + def _extract_ip_addresses(resource_value: dict) -> list: + ip_addresses = [] + if 'address_ip' in resource_value: + ip_addresses.append(resource_value['address_ip']) + if 'address_ipv6' in resource_value: + ip_addresses.append(resource_value['address_ipv6']) + return ip_addresses + + def compose_link(self, link_specs: Link, name_mappings: NameMappings, network: Any) -> None: + link_name = link_specs.name + links = network.create_path(f'ietf-network-topology:link[link-id="{link_name}"]') + links.create_path('link-id', link_name) + + self._create_link_endpoint(links, 'source', link_specs.link_endpoint_ids[0], name_mappings) + self._create_link_endpoint(links, 'destination', link_specs.link_endpoint_ids[-1], name_mappings) + + def _create_link_endpoint(self, links: Any, endpoint_type: str, endpoint_id: Any, name_mappings: NameMappings) -> None: + endpoint = links.create_path(endpoint_type) + if endpoint_type == 'destination': endpoint_type = 'dest' + endpoint.create_path(f'{endpoint_type}-node', name_mappings.get_device_name(endpoint_id.device_id)) + endpoint.create_path(f'{endpoint_type}-tp', name_mappings.get_endpoint_name(endpoint_id)) + + def destroy(self) -> None: + self._yang_context.destroy() diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network/yang/ietf-l3-unicast-topology@2018-02-26.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network/yang/ietf-l3-unicast-topology@2018-02-26.yang new file mode 100644 index 0000000000000000000000000000000000000000..39fcebd767bf7ea687de523b0dd0ba731d3c80e7 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network/yang/ietf-l3-unicast-topology@2018-02-26.yang @@ -0,0 +1,359 @@ +module ietf-l3-unicast-topology { + yang-version 1.1; + namespace + "urn:ietf:params:xml:ns:yang:ietf-l3-unicast-topology"; + prefix "l3t"; + import ietf-network { + prefix "nw"; + } + import ietf-network-topology { + prefix "nt"; + } + import ietf-inet-types { + prefix "inet"; + } + import ietf-routing-types { + prefix "rt-types"; + } + organization + "IETF I2RS (Interface to the Routing System) Working Group"; + contact + "WG Web: + WG List: + Editor: Alexander Clemm + + Editor: Jan Medved + + Editor: Robert Varga + + Editor: Xufeng Liu + + Editor: Nitin Bahadur + + Editor: Hariharan Ananthakrishnan + "; + description + "This module defines a model for Layer 3 Unicast + topologies. + + Copyright (c) 2018 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of + RFC 8346; see the RFC itself for full legal notices."; + revision "2018-02-26" { + description + "Initial revision."; + reference + "RFC 8346: A YANG Data Model for Layer 3 Topologies"; + } + + identity flag-identity { + description "Base type for flags"; + } + + typedef l3-event-type { + type enumeration { + enum "add" { + description + "A Layer 3 node, link, prefix, or termination point has + been added"; + } + enum "remove" { + description + "A Layer 3 node, link, prefix, or termination point has + been removed"; + } + enum "update" { + description + "A Layer 3 node, link, prefix, or termination point has + been updated"; + } + } + description "Layer 3 event type for notifications"; + } + + typedef prefix-flag-type { + type identityref { + base "flag-identity"; + } + description "Prefix flag attributes"; + } + + typedef node-flag-type { + type identityref { + base "flag-identity"; + } + description "Node flag attributes"; + } + + typedef link-flag-type { + type identityref { + base "flag-identity"; + } + description "Link flag attributes"; + } + + typedef l3-flag-type { + type identityref { + base "flag-identity"; + } + description "L3 flag attributes"; + } + + grouping l3-prefix-attributes { + description + "L3 prefix attributes"; + leaf prefix { + type inet:ip-prefix; + description + "IP prefix value"; + } + leaf metric { + type uint32; + description + "Prefix metric"; + } + leaf-list flag { + type prefix-flag-type; + description + "Prefix flags"; + } + } + grouping l3-unicast-topology-type { + description "Identifies the topology type to be L3 Unicast."; + container l3-unicast-topology { + presence "indicates L3 Unicast topology"; + description + "The presence of the container node indicates L3 Unicast + topology"; + } + } + grouping l3-topology-attributes { + description "Topology scope attributes"; + container l3-topology-attributes { + description "Contains topology attributes"; + leaf name { + type string; + description + "Name of the topology"; + } + leaf-list flag { + type l3-flag-type; + description + "Topology flags"; + } + } + } + grouping l3-node-attributes { + description "L3 node scope attributes"; + container l3-node-attributes { + description + "Contains node attributes"; + leaf name { + type inet:domain-name; + description + "Node name"; + } + leaf-list flag { + type node-flag-type; + description + "Node flags"; + } + leaf-list router-id { + type rt-types:router-id; + description + "Router-id for the node"; + } + list prefix { + key "prefix"; + description + "A list of prefixes along with their attributes"; + uses l3-prefix-attributes; + } + } + } + grouping l3-link-attributes { + description + "L3 link scope attributes"; + container l3-link-attributes { + description + "Contains link attributes"; + leaf name { + type string; + description + "Link Name"; + } + leaf-list flag { + type link-flag-type; + description + "Link flags"; + } + leaf metric1 { + type uint64; + description + "Link Metric 1"; + } + leaf metric2 { + type uint64; + description + "Link Metric 2"; + } + } + } + grouping l3-termination-point-attributes { + description "L3 termination point scope attributes"; + container l3-termination-point-attributes { + description + "Contains termination point attributes"; + choice termination-point-type { + description + "Indicates the termination point type"; + case ip { + leaf-list ip-address { + type inet:ip-address; + description + "IPv4 or IPv6 address."; + } + } + case unnumbered { + leaf unnumbered-id { + type uint32; + description + "Unnumbered interface identifier. + The identifier will correspond to the ifIndex value + of the interface, i.e., the ifIndex value of the + ifEntry that represents the interface in + implementations where the Interfaces Group MIB + (RFC 2863) is supported."; + reference + "RFC 2863: The Interfaces Group MIB"; + } + } + case interface-name { + leaf interface-name { + type string; + description + "Name of the interface. The name can (but does not + have to) correspond to an interface reference of a + containing node's interface, i.e., the path name of a + corresponding interface data node on the containing + node reminiscent of data type interface-ref defined + in RFC 8343. It should be noted that data type + interface-ref of RFC 8343 cannot be used directly, + + as this data type is used to reference an interface + in a datastore of a single node in the network, not + to uniquely reference interfaces across a network."; + reference + "RFC 8343: A YANG Data Model for Interface Management"; + } + } + } + } + } + augment "/nw:networks/nw:network/nw:network-types" { + description + "Introduces new network type for L3 Unicast topology"; + uses l3-unicast-topology-type; + } + augment "/nw:networks/nw:network" { + when "nw:network-types/l3t:l3-unicast-topology" { + description + "Augmentation parameters apply only for networks with + L3 Unicast topology"; + } + description + "L3 Unicast for the network as a whole"; + uses l3-topology-attributes; + } + augment "/nw:networks/nw:network/nw:node" { + when "../nw:network-types/l3t:l3-unicast-topology" { + description + "Augmentation parameters apply only for networks with + L3 Unicast topology"; + } + description + "L3 Unicast node-level attributes "; + uses l3-node-attributes; + } + augment "/nw:networks/nw:network/nt:link" { + when "../nw:network-types/l3t:l3-unicast-topology" { + description + "Augmentation parameters apply only for networks with + L3 Unicast topology"; + } + description + "Augments topology link attributes"; + uses l3-link-attributes; + } + augment "/nw:networks/nw:network/nw:node/" + +"nt:termination-point" { + when "../../nw:network-types/l3t:l3-unicast-topology" { + description + "Augmentation parameters apply only for networks with + L3 Unicast topology"; + } + description "Augments topology termination point configuration"; + uses l3-termination-point-attributes; + } + notification l3-node-event { + description + "Notification event for L3 node"; + leaf l3-event-type { + type l3-event-type; + description + "Event type"; + } + uses nw:node-ref; + uses l3-unicast-topology-type; + uses l3-node-attributes; + } + notification l3-link-event { + description + "Notification event for L3 link"; + leaf l3-event-type { + type l3-event-type; + description + "Event type"; + } + uses nt:link-ref; + uses l3-unicast-topology-type; + uses l3-link-attributes; + } + notification l3-prefix-event { + description + "Notification event for L3 prefix"; + leaf l3-event-type { + type l3-event-type; + description + "Event type"; + } + uses nw:node-ref; + uses l3-unicast-topology-type; + container prefix { + description + "Contains L3 prefix attributes"; + uses l3-prefix-attributes; + } + } + notification termination-point-event { + description + "Notification event for L3 termination point"; + leaf l3-event-type { + type l3-event-type; + description + "Event type"; + } + uses nt:tp-ref; + uses l3-unicast-topology-type; + uses l3-termination-point-attributes; + } +} diff --git a/src/qkd_app/service/rest_server/qkd_app/Resources.py b/src/nbi/service/rest_server/nbi_plugins/qkd_app/Resources.py similarity index 57% rename from src/qkd_app/service/rest_server/qkd_app/Resources.py rename to src/nbi/service/rest_server/nbi_plugins/qkd_app/Resources.py index 6ba79d3940da91dfebc1a1c666893548caccbe6c..d14fe9575b21319a0fa597a7746510a11e102903 100644 --- a/src/qkd_app/service/rest_server/qkd_app/Resources.py +++ b/src/nbi/service/rest_server/nbi_plugins/qkd_app/Resources.py @@ -12,7 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -import uuid, json +import uuid +import json from flask import request from flask_restful import Resource from common.proto.context_pb2 import Empty @@ -21,7 +22,6 @@ from common.Constants import DEFAULT_CONTEXT_NAME from context.client.ContextClient import ContextClient from qkd_app.client.QKDAppClient import QKDAppClient - class _Resource(Resource): def __init__(self) -> None: super().__init__() @@ -32,18 +32,56 @@ class Index(_Resource): def get(self): return {'hello': 'world'} +class ListDevices(_Resource): + def get(self): + """ + List devices and associate the apps with them. + """ + devices = self.context_client.ListDevices(Empty()).devices + for device in devices: + # Fetch apps associated with this device + device.apps = self.get_apps_for_device(device.device_id.device_uuid.uuid) + return {'devices': [self.format_device(device) for device in devices]} + + def get_apps_for_device(self, device_uuid): + """ + Fetch the apps associated with a given device UUID. + """ + try: + # Call the AppService to get the list of apps + apps_list = self.qkd_app_client.ListApps(Empty()) + + # Filter apps for this specific device + device_apps = [] + for app in apps_list.apps: + if app.local_device_id.device_uuid.uuid == device_uuid or \ + app.remote_device_id.device_uuid.uuid == device_uuid: + device_apps.append(app) + return device_apps + + except Exception as e: + print(f"Error fetching apps for device {device_uuid}: {e}") + return [] + + def format_device(self, device): + """ + Formats a device object to include the associated apps in the response. + """ + return { + 'device_uuid': device.device_id.device_uuid.uuid, + 'name': device.name, + 'type': device.device_type, + 'status': device.device_operational_status, + 'apps': [{'app_id': app.app_id.app_uuid.uuid, 'app_status': app.app_status, 'app_type': app.app_type} for app in device.apps] + } + class CreateQKDApp(_Resource): - # Optare: Post request for the QKD Node to call the TeraflowSDN. Example of requests below def post(self): app = request.get_json()['app'] - - devices = self.context_client.ListDevices(Empty()) - devices = devices.devices - + devices = self.context_client.ListDevices(Empty()).devices local_device = None - - # This for-loop won't be necessary if we can garantee Device ID is the same as QKDN Id + # This for-loop won't be necessary if Device ID is guaranteed to be the same as QKDN Id for device in devices: for config_rule in device.device_config.config_rules: if config_rule.custom.resource_key == '__node__': @@ -53,15 +91,6 @@ class CreateQKDApp(_Resource): local_device = device break - # Optare: Todo: Verify that a service is present for this app - ''' - requests.post('http://10.211.36.220/app/create_qkd_app', json={'app': {'server_app_id':'1', 'client_app_id':[], 'app_status':'ON', 'local_qkdn_id':'00000001-0000-0000-0000-000000000000', 'backing_qkdl_id':['00000003-0002-0000-0000-000000000000']}}) - - - requests.post('http://10.211.36.220/app/create_qkd_app', json={'app': {'server_app_id':'1', 'client_app_id':[], 'app_status':'ON', 'local_qkdn_id':'00000003-0000-0000-0000-000000000000', 'backing_qkdl_id':['00000003-0002-0000-0000-000000000000']}}) - ''' - - if local_device is None: return {"status": "fail"} @@ -76,11 +105,7 @@ class CreateQKDApp(_Resource): 'remote_device_id': {'device_uuid': {'uuid': ''}}, } - - # Optare: This will call our internal RegisterApp which supports the creation of both internal and external app. - # Optare the verification for knowing if two parties are requesting the same app is done inside RegisterApp's function self.qkd_app_client.RegisterApp(App(**external_app_src_dst)) - # Optare: Todo: Communicate by SBI with both Nodes of the new App - return {"status": "success"} + diff --git a/src/qkd_app/service/rest_server/qkd_app/__init__.py b/src/nbi/service/rest_server/nbi_plugins/qkd_app/__init__.py similarity index 67% rename from src/qkd_app/service/rest_server/qkd_app/__init__.py rename to src/nbi/service/rest_server/nbi_plugins/qkd_app/__init__.py index 6fc23b371414dcb2bac4afde63524febf71e5337..30982f104e189eb4af5b3f49b1abe2b0e5fb2d85 100644 --- a/src/qkd_app/service/rest_server/qkd_app/__init__.py +++ b/src/nbi/service/rest_server/nbi_plugins/qkd_app/__init__.py @@ -4,7 +4,7 @@ # 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 +# 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, @@ -12,19 +12,18 @@ # See the License for the specific language governing permissions and # limitations under the License. -from qkd_app.service.rest_server.RestServer import RestServer -from .Resources import ( - CreateQKDApp, Index) +from nbi.service.rest_server.RestServer import RestServer +from .Resources import CreateQKDApp, Index URL_PREFIX = '/qkd_app' # Use 'path' type since some identifiers might contain char '/' and Flask is unable to recognize them in 'string' type. RESOURCES = [ # (endpoint_name, resource_class, resource_url) - ('api.index', Index, '/'), - ('api.register_qkd_app', CreateQKDApp, '/create_qkd_app'), + ('api.index', Index, '/'), + ('api.register_qkd_app', CreateQKDApp, '/create_qkd_app'), ] -def register_qkd_app(app_server : RestServer): +def register_qkd_app(rest_server : RestServer): for endpoint_name, resource_class, resource_url in RESOURCES: - app_server.add_resource(resource_class, URL_PREFIX + resource_url, endpoint=endpoint_name) + rest_server.add_resource(resource_class, URL_PREFIX + resource_url, endpoint=endpoint_name) diff --git a/src/nbi/service/rest_server/nbi_plugins/tfs_api/Resources.py b/src/nbi/service/rest_server/nbi_plugins/tfs_api/Resources.py index f360e318127706b4b4c8fdc4130dfdfc0ba711c0..28f94887a1aa9895a337baa40b3896e3d7e95dc1 100644 --- a/src/nbi/service/rest_server/nbi_plugins/tfs_api/Resources.py +++ b/src/nbi/service/rest_server/nbi_plugins/tfs_api/Resources.py @@ -13,27 +13,34 @@ # limitations under the License. import json +import logging from flask.json import jsonify from flask_restful import Resource, request from werkzeug.exceptions import BadRequest -from common.proto.context_pb2 import Empty +from common.proto.context_pb2 import Empty, LinkTypeEnum from common.tools.grpc.Tools import grpc_message_to_json from context.client.ContextClient import ContextClient from device.client.DeviceClient import DeviceClient from service.client.ServiceClient import ServiceClient from slice.client.SliceClient import SliceClient +from vnt_manager.client.VNTManagerClient import VNTManagerClient + from .Tools import ( format_grpc_to_json, grpc_connection_id, grpc_context, grpc_context_id, grpc_device, grpc_device_id, grpc_link, grpc_link_id, grpc_policy_rule_id, grpc_service_id, grpc_service, grpc_slice, grpc_slice_id, grpc_topology, grpc_topology_id ) +LOGGER = logging.getLogger(__name__) + + class _Resource(Resource): def __init__(self) -> None: super().__init__() self.context_client = ContextClient() self.device_client = DeviceClient() self.service_client = ServiceClient() + self.vntmanager_client = VNTManagerClient() self.slice_client = SliceClient() class ContextIds(_Resource): @@ -292,9 +299,14 @@ class Link(_Resource): return format_grpc_to_json(self.context_client.GetLink(grpc_link_id(link_uuid))) def put(self, link_uuid : str): - link = request.get_json() - if link_uuid != link['link_id']['link_uuid']['uuid']: + link_json = request.get_json() + link = grpc_link(link_json) + virtual_types = {LinkTypeEnum.LINKTYPE_VIRTUAL_COPPER, LinkTypeEnum.LINKTYPE_VIRTUAL_OPTICAL} + if link_uuid != link.link_id.link_uuid.uuid: raise BadRequest('Mismatching link_uuid') + elif link.link_type in virtual_types: + link = grpc_link(link_json) + return format_grpc_to_json(self.vntmanager_client.SetVirtualLink(link)) return format_grpc_to_json(self.context_client.SetLink(grpc_link(link))) def delete(self, link_uuid : str): diff --git a/src/nbi/tests/test_ietf_network.py b/src/nbi/tests/test_ietf_network.py index 9a25e1b3b5e0ee202a0af945e88794f8aa9b0ec4..ec03d3798ded3efd027a0b8237becc865441fc98 100644 --- a/src/nbi/tests/test_ietf_network.py +++ b/src/nbi/tests/test_ietf_network.py @@ -12,14 +12,20 @@ # See the License for the specific language governing permissions and # limitations under the License. -import deepdiff, json, logging, operator +import deepdiff, json, logging, operator, os from typing import Dict from common.Constants import DEFAULT_CONTEXT_NAME from common.proto.context_pb2 import ContextId -from common.tools.descriptor.Loader import DescriptorLoader, check_descriptor_load_results, validate_empty_scenario +from common.tools.descriptor.Loader import ( + DescriptorLoader, check_descriptor_load_results, validate_empty_scenario +) from common.tools.object_factory.Context import json_context_id from context.client.ContextClient import ContextClient from nbi.service.rest_server import RestServer + +# Explicitly state NBI to use PyangBind Renderer for this test +os.environ['IETF_NETWORK_RENDERER'] = 'PYANGBIND' + from .PrepareTestScenario import ( # pylint: disable=unused-import # be careful, order of symbols is important here! do_rest_get_request, mock_service, nbi_service_rest, osm_wim, context_client diff --git a/src/opticalcontroller/Dockerfile b/src/opticalcontroller/Dockerfile index 70bae4223dcbb0a9399671e1b7a9af95fc5fffc6..faea3b2e056768ef9947db108df61928c8a177cb 100644 --- a/src/opticalcontroller/Dockerfile +++ b/src/opticalcontroller/Dockerfile @@ -34,20 +34,19 @@ RUN python3 -m pip install --upgrade pip-tools # Get common Python packages # Note: this step enables sharing the previous Docker build steps among all the Python components -WORKDIR /var/teraflow/opticalcontroller/ - +WORKDIR /var/teraflow COPY common_requirements.in common_requirements.in RUN pip-compile --quiet --output-file=common_requirements.txt common_requirements.in RUN python3 -m pip install -r common_requirements.txt # Add common files into working directory -WORKDIR /var/teraflow/opticalcontroller/common +WORKDIR /var/teraflow/common COPY src/common/. ./ RUN rm -rf proto # Create proto sub-folder, copy .proto files, and generate Python code -RUN mkdir -p /var/teraflow/opticalcontroller/common/proto -WORKDIR /var/teraflow/opticalcontroller/common/proto +RUN mkdir -p /var/teraflow/common/proto +WORKDIR /var/teraflow/common/proto RUN touch __init__.py COPY proto/*.proto ./ RUN python3 -m grpc_tools.protoc -I=. --python_out=. --grpc_python_out=. *.proto @@ -55,19 +54,18 @@ RUN rm *.proto RUN find . -type f -exec sed -i -E 's/(import\ .*)_pb2/from . \1_pb2/g' {} \; # Create component sub-folders, get specific Python packages - -WORKDIR /var/teraflow/ +RUN mkdir -p /var/teraflow/opticalcontroller +WORKDIR /var/teraflow/opticalcontroller COPY src/opticalcontroller/requirements.in requirements.in RUN pip-compile --quiet --output-file=requirements.txt requirements.in RUN python3 -m pip install -r requirements.txt # Add component files into working directory -WORKDIR /var/teraflow/opticalcontroller/ - +WORKDIR /var/teraflow COPY src/context/__init__.py context/__init__.py COPY src/context/client/. context/client/ -COPY src/opticalcontroller/. ./ +COPY src/opticalcontroller/. opticalcontroller/ # Start the service - +WORKDIR /var/teraflow/opticalcontroller ENTRYPOINT ["python", "OpticalController.py"] diff --git a/src/opticalcontroller/OpticalController.py b/src/opticalcontroller/OpticalController.py index 33ff0a74397221b8bfb0bac061456b7a0a0faaaa..97e097c8a94382b71903b4a57ab66382beec5eb2 100644 --- a/src/opticalcontroller/OpticalController.py +++ b/src/opticalcontroller/OpticalController.py @@ -12,18 +12,17 @@ # See the License for the specific language governing permissions and # limitations under the License. +import time from flask import Flask from flask import render_template from flask_restplus import Resource, Api from tools import * from variables import * from RSA import RSA -import time , logging -from common.proto.context_pb2 import TopologyId , OpticalLink -import json -from google.protobuf.message import Message +from common.proto.context_pb2 import TopologyId from google.protobuf.json_format import MessageToDict -from common.tools.object_factory.OpticalLink import order_dict + + global rsa global links_dict rsa = None @@ -105,14 +104,16 @@ class AddFlexLightpath(Resource): return rsa.optical_bands[optical_band_id], 200 else: return "Error", 404 + + # @optical.route('/DelFlexLightpath////') -@optical.route('/DelFlexLightpath/////') -@optical.route('/DelFlexLightpath//////') +@optical.route('/DelFlexLightpath////') +@optical.route('/DelFlexLightpath/////') @optical.response(200, 'Success') @optical.response(404, 'Error, not found') class DelFLightpath(Resource): @staticmethod - def delete( src, dst, bitrate, o_band_id,delete_band,flow_id=None): + def delete( src, dst, bitrate, o_band_id,flow_id=None): flow = None match1=False ob_id=None @@ -147,17 +148,12 @@ class DelFLightpath(Resource): return "flow {} not matching".format(flow_id), 404 else: if match1: - # if delete_band !=0 and ob_id is not None: # print(f"delete_lightpath {delete_band} and ob_id {ob_id}") # if len( rsa.optical_bands[ob_id]["served_lightpaths"]) != 0: # return "DELETE_NOT_ALLOWED" ,400 - - rsa.del_flow(flow,flow_id,ob_id) - - - + if debug: print(f"vor ob_id {ob_id} rsa.optical_bands {rsa.optical_bands[ob_id]}") print(f"rsa.links_dict {rsa.links_dict}") @@ -166,19 +162,16 @@ class DelFLightpath(Resource): return "flow {} not matching".format(flow_id), 404 else: return "flow id {} does not exist".format(flow_id), 404 - - - -@optical.route('/DelOpticalBand////',methods=['DELETE']) +@optical.route('/DelOpticalBand///',methods=['DELETE']) @optical.response(200, 'Success') @optical.response(404, 'Error, not found') class DelOpticalBand(Resource): @staticmethod - def delete( src, dst, o_band_id,delete_band): + def delete( src, dst, o_band_id): flow = None - match1=True + ob_id=None if o_band_id is not None : @@ -210,32 +203,21 @@ class DelOpticalBand(Resource): else: return "ob_id {} not matching".format(ob_id), 404 else: - if match1: + if ob_id is not None: - if ob_id is not None: - - if len( rsa.optical_bands[ob_id]["served_lightpaths"]) != 0: - return "DELETE_NOT_ALLOWED" ,400 + if len( rsa.optical_bands[ob_id]["served_lightpaths"]) != 0: + return "DELETE_NOT_ALLOWED" ,400 - rsa.del_band(flow,ob_id) - - - - if debug: - print(f"vor ob_id {ob_id} rsa.optical_bands {rsa.optical_bands[ob_id]}") - print(f"rsa.links_dict {rsa.links_dict}") - return "ob_id {} deleted".format(ob_id), 200 - else: - return "ob_id {} not matching".format(ob_id), 404 + rsa.del_band(flow,ob_id) + if debug: + print(f"vor ob_id {ob_id} rsa.optical_bands {rsa.optical_bands[ob_id]}") + print(f"rsa.links_dict {rsa.links_dict}") + return "ob_id {} deleted".format(ob_id), 200 + else : return "flow for ob_id {} not found".format(ob_id),400 else: return "ob_id {} does not exist".format(ob_id), 404 - - - - - @optical.route('/DelLightpath////') @@ -273,6 +255,7 @@ class GetFlows(Resource): except: return "Error", 404 + @optical.route('/GetOpticalBands') @optical.response(200, 'Success') @optical.response(404, 'Error, not found') @@ -318,8 +301,8 @@ class GetFlows(Resource): return links, 200 except: return "Error", 404 - - + + @optical.route('/GetTopology//',methods=['GET']) @optical.response(200, 'Success') @optical.response(404, 'Error, not found') @@ -335,56 +318,45 @@ class GetTopology(Resource): topog_id.topology_uuid.uuid=topology_id topog_id.context_id.context_uuid.uuid=context_id - try: - links_dict={"optical_links":[]} - node_dict = {} - topo , nodes = readTopologyDataFromContext(topog_id) - - for link in topo: - link_dict_type = MessageToDict(link, preserving_proto_field_name=True) - - if "c_slots" in link_dict_type["optical_details"] : - link_dict_type["optical_details"]["c_slots"]=order_dict(link_dict_type["optical_details"]["c_slots"]) - - if "l_slots" in link_dict_type["optical_details"] : - link_dict_type["optical_details"]["l_slots"]=order_dict(link_dict_type["optical_details"]["l_slots"]) - - if "s_slots" in link_dict_type["optical_details"] : - link_dict_type["optical_details"]["s_slots"]=order_dict(link_dict_type["optical_details"]["s_slots"]) - - links_dict["optical_links"].append(link_dict_type) - - - - for device in nodes : - dev_dic = {} - dev_dic = { - "id":device.device_id.device_uuid.uuid, - #"ip":f"10.30.2.{207+i}", - #"port":"50001", - "type":"OC-ROADM" if device.device_type =="optical-roadm" else "OC-TP", - "driver": "OpticalOC" - } - node_dict[device.name]=dev_dic - #i+=1 - #print(f"refresh_optical controller optical_links_dict= {links_dict}") - #print(f"refresh_optical controller node_dict {node_dict}") - - rsa = RSA(node_dict, links_dict) - if debug: - print(rsa.init_link_slots2(testing)) - - - return "ok" ,200 + try: + links_dict = {"optical_links": []} + node_dict = {} + topo, nodes = readTopologyDataFromContext(topog_id) + + for link in topo: + link_dict_type = MessageToDict(link, preserving_proto_field_name=True) + + if "c_slots" in link_dict_type["optical_details"]: + link_dict_type["optical_details"]["c_slots"] = link_dict_type["optical_details"]["c_slots"] + + if "l_slots" in link_dict_type["optical_details"]: + link_dict_type["optical_details"]["l_slots"] = link_dict_type["optical_details"]["l_slots"] + + if "s_slots" in link_dict_type["optical_details"]: + link_dict_type["optical_details"]["s_slots"] = link_dict_type["optical_details"]["s_slots"] + + links_dict["optical_links"].append(link_dict_type) + + for device in nodes : + dev_dic = { + "id":device.device_id.device_uuid.uuid, + #"ip":f"10.30.2.{207+i}", + #"port":"50001", + "type":"OC-ROADM" if device.device_type =="optical-roadm" else "OC-TP", + "driver": "OpticalOC" + } + node_dict[device.name] = dev_dic + #i+=1 + #print(f"refresh_optical controller optical_links_dict= {links_dict}") + #print(f"refresh_optical controller node_dict {node_dict}") + + rsa = RSA(node_dict, links_dict) + if debug: + print(rsa.init_link_slots2()) + return "ok", 200 except Exception as e: print(f"err {e}") return "Error", 400 - - - if __name__ == '__main__': - - - app.run(host='0.0.0.0', port=10060) diff --git a/src/opticalcontroller/README.md b/src/opticalcontroller/README.md index 5fd94c59e51cbd78dd76a7db0f24aaaec4ebd9db..f121055cec91470646b9885bfe90db137027f472 100644 --- a/src/opticalcontroller/README.md +++ b/src/opticalcontroller/README.md @@ -1,17 +1,20 @@ -# optical-controller -This a framework to implement the optical controller for the RMSA algorithm. +# Optical Controller + +This is a framework to test the optical controller for the RMSA algorithm in an isolated manner. + +![Reference Architecture](images/topo.png) + +```bash #create a venv python -m venv venv -in linux +# in linux source venv/Scripts/activate -in windows +# in windows venv\Scripts\activate -pip install -r requirements_opt.txt +pip install -r requirements_optical_ctrl_test.txt python OpticalController.py -![Reference Architecture](images/topo.png) - - +``` diff --git a/src/opticalcontroller/RSA.py b/src/opticalcontroller/RSA.py index 0d8a62bbfc4349daa760d6dc24d7728aff5b254e..61a74edbecc2ac635398ee8482800514295e9473 100644 --- a/src/opticalcontroller/RSA.py +++ b/src/opticalcontroller/RSA.py @@ -31,9 +31,8 @@ class RSA(): self.l_slot_number = 0 self.s_slot_number = 0 self.optical_bands = {} - - - def init_link_slots(self, testing): + + def init_link_slots(self): if full_links: for l in self.links_dict["optical_links"]: for fib in l["optical_link"]["details"]["fibers"]: @@ -59,7 +58,7 @@ class RSA(): break return "{},{},{}".format(self.c_slot_number, self.l_slot_number, self.s_slot_number) - def init_link_slots2(self, testing): + def init_link_slots2(self): if full_links: for l in self.links_dict["optical_links"]: fib = l["optical_details"] @@ -303,21 +302,14 @@ class RSA(): fib['used'] = False #fib[band].keys().sort() set_link_update(fib,link,test="restoration") - def restore_optical_band(self, optical_band_id, slots, band): - for i in slots: 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() - - - - - def restore_optical_band_2(self, optical_band_id, slots, band ,links): print(f"example of band { band}") print(f"example of slots {slots}") @@ -329,8 +321,7 @@ class RSA(): #link_name= self.optical_bands[optical_band_id]['links'][0] #link = self.get_link_by_name(link_name) #update_optical_band(optical_bands=self.optical_bands,optical_band_id=optical_band_id,band=band,link=link) - - + def del_flow(self, flow,flow_id, o_b_id = None): flows = flow["flows"] band = flow["band_type"] @@ -344,7 +335,6 @@ class RSA(): bidir = flow["bidir"] flow_id = flow["flow_id"] - for l in links: if debug: print(l) @@ -356,11 +346,8 @@ class RSA(): self.restore_link(fib, slots, band) if debug: print(fib[band]) - - - + 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} ") @@ -370,6 +357,7 @@ class RSA(): self.optical_bands[o_b_id]["served_lightpaths"].remove(flow_id) #self.restore_optical_band_2(o_b_id, slots, band,links) + if bidir: for l in links: r_l = reverse_link(l) @@ -405,9 +393,7 @@ class RSA(): def del_band(self, flow, o_b_id = None): - print(f"delete band {flow} ") - flows = flow["flows"] band = None @@ -482,8 +468,7 @@ class RSA(): # rev_o_band_id = self.optical_bands[o_b_id]["reverse_optical_band_id"] # self.restore_optical_band(rev_o_band_id, slots, band) return True - - + def del_handler(self, flow,flow_id, o_b_id = None,delete_band=0): print(f" del_handler flow {flow} flow_id {flow_id} o_b_id {o_b_id} delete_band {delete_band}") if delete_band != 0: @@ -491,9 +476,7 @@ class RSA(): self.del_band(flow,flow_id,o_b_id=o_b_id) else : self.del_flow(flow,flow_id=flow_id,o_b_id=o_b_id) - - - + def get_fibers_forward(self, links, slots, band): fiber_list = {} add = links[0] diff --git a/src/opticalcontroller/dijsktra.py b/src/opticalcontroller/dijsktra.py index 6130799b1e8ef830d5f36643c6001017dd9a5368..058d59e75cbc09c1b18ab4b406f08186e106609d 100644 --- a/src/opticalcontroller/dijsktra.py +++ b/src/opticalcontroller/dijsktra.py @@ -237,4 +237,4 @@ if __name__ == '__main__': print ('The shortest path : %s' %(path[::-1]))""" p = shortest_path(g, g.get_vertex('a'), g.get_vertex('e')) - print(p) \ No newline at end of file + print(p) diff --git a/src/opticalcontroller/json_files/nodes.json b/src/opticalcontroller/json_files/nodes.json deleted file mode 100644 index 51f19448e745daa75e3f5b426bb039a841c68352..0000000000000000000000000000000000000000 --- a/src/opticalcontroller/json_files/nodes.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "R1":{ - "id":0, - "ip":"10.30.2.207", - "port":"50001", - "type":"OC-ROADM", - "driver": "OpticalOC" - }, - - "R2":{ - "id":1, - "ip":"10.30.2.208", - "port":"50001", - "type":"OC-ROADM", - "driver": "OpticalOC" - }, - - "R3":{ - "id":2, - "ip":"10.30.2.209", - "port":"50001", - "type":"OC-ROADM", - "driver": "OpticalOC" - }, - "T1.1":{ - "id":3, - "ip":"10.30.2.210", - "port":"50001", - "type":"OC-TP", - "driver": "OpticalOC" - }, - "T1.2":{ - "id":3, - "ip":"10.30.2.210", - "port":"50001", - "type":"OC-TP", - "driver": "OpticalOC" - }, - "T1.3":{ - "id":3, - "ip":"10.30.2.210", - "port":"50001", - "type":"OC-TP", - "driver": "OpticalOC" - }, - "T2.1":{ - "id":4, - "ip":"10.30.2.211", - "port":"50001", - "type":"OC-TP", - "driver": "OpticalOC" - }, - "T2.2":{ - "id":4, - "ip":"10.30.2.211", - "port":"50001", - "type":"OC-TP", - "driver": "OpticalOC" - }, - "T2.3":{ - "id":4, - "ip":"10.30.2.211", - "port":"50001", - "type":"OC-TP", - "driver": "OpticalOC" - } -} diff --git a/src/opticalcontroller/json_files/optical_TFSworking.json b/src/opticalcontroller/json_files/optical_TFSworking.json deleted file mode 100644 index ff1841eeea9df1e73bcfb25d07f19d64554f11e1..0000000000000000000000000000000000000000 --- a/src/opticalcontroller/json_files/optical_TFSworking.json +++ /dev/null @@ -1,486 +0,0 @@ -{ - "R1-R2": { - "length": 80, - "source": "d1", - "target": "d1", - "fibers": { - "d1-1": { - "length": 80, - "src_port": "3", - "dst_port": "14", - "local_peer_port": "13", - "remote_peer_port": "4", - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - } - }, - "R2-R1": { - "length": 80, - "source": "d1", - "target": "d1", - "fibers": { - "d1-1": { - "length": 80, - "src_port": "4", - "dst_port": "13", - "local_peer_port": "14", - "remote_peer_port": "3", - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - } - }, - "T1-R1": { - "length": 0, - "source": "muxT", - "target": "srgR", - "fibers": { - "M1": { - "length": 0, - "src_port": "1", - "dst_port": "12", - "local_peer_port": "1", - "remote_peer_port": "2", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - } - }, - "R1-T1": { - "length": 0, - "source": "srgT", - "target": "muxR", - "fibers": { - "S1": { - "length": 0, - "src_port": "2", - "dst_port": "1", - "local_peer_port": "12", - "remote_peer_port": "1", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - } - }, - "T2-R2": { - "length": 0, - "source": "muxT", - "target": "srgR", - "fibers": { - "M1": { - "length": 0, - "src_port": "6", - "dst_port": "15", - "local_peer_port": "6", - "remote_peer_port": "5", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - } - }, - "R2-T2": { - "length": 0, - "source": "srgT", - "target": "muxR", - "fibers": { - "S1": { - "length": 0, - "src_port": "5", - "dst_port": "6", - "local_peer_port": "15", - "remote_peer_port": "6", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - } - } -} diff --git a/src/opticalcontroller/json_files/optical_topoTFS.json b/src/opticalcontroller/json_files/optical_topoTFS.json deleted file mode 100644 index 7dea474cd676b7c699cffc1c180e14598b987473..0000000000000000000000000000000000000000 --- a/src/opticalcontroller/json_files/optical_topoTFS.json +++ /dev/null @@ -1,1836 +0,0 @@ -{ - "R1-R2": { - "length": 80, - "source": "d1", - "target": "d1", - "fibers": { - "d1-1": { - "length": 80, - "src_port": "101", - "dst_port": "201", - "local_peer_port": "201", - "remote_peer_port": "101", - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - }, - "d1-2": { - "length": 80, - "src_port": "102", - "dst_port": "202", - "local_peer_port": "202", - "remote_peer_port": "102", - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - } - }, - "R2-R1": { - "length": 80, - "source": "d1", - "target": "d1", - "fibers": { - "d1-1": { - "length": 80, - "src_port": "101", - "dst_port": "201", - "local_peer_port": "201", - "remote_peer_port": "101", - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - }, - "d1-2": { - "length": 80, - "src_port": "102", - "dst_port": "202", - "local_peer_port": "202", - "remote_peer_port": "102", - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - } - }, - "R1-R3": { - "length": 80, - "source": "d2", - "target": "d1", - "fibers": { - "d2-1": { - "length": 80, - "src_port": "103", - "dst_port": "201", - "local_peer_port": "203", - "remote_peer_port": "101", - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - }, - "d2-2": { - "length": 80, - "src_port": "104", - "dst_port": "202", - "local_peer_port": "204", - "remote_peer_port": "102", - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - } - }, - "R3-R1": { - "length": 80, - "source": "d1", - "target": "d2", - "fibers": { - "d1-1": { - "length": 80, - "src_port": "101", - "dst_port": "203", - "local_peer_port": "201", - "remote_peer_port": "103", - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - }, - "d1-2": { - "length": 80, - "src_port": "102", - "dst_port": "204", - "local_peer_port": "202", - "remote_peer_port": "104", - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - } - }, - "R2-R3": { - "length": 80, - "source": "d2", - "target": "d2", - "fibers": { - "d2-1": { - "length": 80, - "src_port": "103", - "dst_port": "203", - "local_peer_port": "203", - "remote_peer_port": "103", - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - }, - "d2-2": { - "length": 80, - "src_port": "104", - "dst_port": "204", - "local_peer_port": "204", - "remote_peer_port": "104", - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - } - }, - "R3-R2": { - "length": 80, - "source": "d2", - "target": "d2", - "fibers": { - "d2-1": { - "length": 80, - "src_port": "103", - "dst_port": "203", - "local_peer_port": "203", - "remote_peer_port": "103", - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - }, - "d2-2": { - "length": 80, - "src_port": "104", - "dst_port": "204", - "local_peer_port": "204", - "remote_peer_port": "104", - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - } - }, - "T1-R1": { - "length": 0, - "source": "muxT", - "target": "srgR", - "fibers": { - "M1": { - "length": 0, - "src_port": "1", - "dst_port": "2001", - "local_peer_port": "1", - "remote_peer_port": "1001", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - }, - "M2": { - "length": 0, - "src_port": "2", - "dst_port": "2002", - "local_peer_port": "2", - "remote_peer_port": "1002", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - }, - "M3": { - "length": 0, - "src_port": "3", - "dst_port": "2003", - "local_peer_port": "3", - "remote_peer_port": "1003", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - } - }, - "R1-T1": { - "length": 0, - "source": "srgT", - "target": "muxR", - "fibers": { - "S1": { - "length": 0, - "src_port": "1001", - "dst_port": "1", - "local_peer_port": "2001", - "remote_peer_port": "1", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - }, - "S2": { - "length": 0, - "src_port": "1002", - "dst_port": "2", - "local_peer_port": "2002", - "remote_peer_port": "2", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - }, - "S3": { - "length": 0, - "src_port": "1003", - "dst_port": "3", - "local_peer_port": "2003", - "remote_peer_port": "3", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - } - }, - "T2-R2": { - "length": 0, - "source": "muxT", - "target": "srgR", - "fibers": { - "M1": { - "length": 0, - "src_port": "1", - "dst_port": "2001", - "local_peer_port": "1", - "remote_peer_port": "1001", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - }, - "M2": { - "length": 0, - "src_port": "2", - "dst_port": "2002", - "local_peer_port": "2", - "remote_peer_port": "1002", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - }, - "M3": { - "length": 0, - "src_port": "3", - "dst_port": "2003", - "local_peer_port": "3", - "remote_peer_port": "1003", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - } - }, - "R2-T2": { - "length": 0, - "source": "srgT", - "target": "muxR", - "fibers": { - "S1": { - "length": 0, - "src_port": "1001", - "dst_port": "1", - "local_peer_port": "2001", - "remote_peer_port": "1", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - }, - "S2": { - "length": 0, - "src_port": "1002", - "dst_port": "2", - "local_peer_port": "2002", - "remote_peer_port": "2", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - }, - "S3": { - "length": 0, - "src_port": "1003", - "dst_port": "3", - "local_peer_port": "2003", - "remote_peer_port": "3", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - } - } -} diff --git a/src/opticalcontroller/json_files/tfs.json b/src/opticalcontroller/json_files/tfs.json deleted file mode 100644 index 46ee3da951fb7a68ef92722c1770fc89032d419b..0000000000000000000000000000000000000000 --- a/src/opticalcontroller/json_files/tfs.json +++ /dev/null @@ -1,1458 +0,0 @@ -{ - "links": [ - { - "name": "T1.1-R1", - "link_id": { - "link_uuid": { - "uuid": "T1.1->R1" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "T1.1" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "R1" - } - }, - "endpoint_uuid": { - "uuid": "12" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "1", - "dst_port": "12", - "local_peer_port": "1", - "remote_peer_port": "2", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - }, - { - "name": "T1.2-R1", - "link_id": { - "link_uuid": { - "uuid": "T1.2->R1" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "T1.2" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "R1" - } - }, - "endpoint_uuid": { - "uuid": "13" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "1", - "dst_port": "13", - "local_peer_port": "1", - "remote_peer_port": "3", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - }, - { - "name": "T1.3-R1", - "link_id": { - "link_uuid": { - "uuid": "T1.3->R1" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "T1.3" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "R1" - } - }, - "endpoint_uuid": { - "uuid": "14" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "1", - "dst_port": "14", - "local_peer_port": "1", - "remote_peer_port": "4", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - }, - { - "name": "R1-T1.1", - "link_id": { - "link_uuid": { - "uuid": "R1->T1.1" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "R1" - } - }, - "endpoint_uuid": { - "uuid": "2" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "T1.1" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "2", - "dst_port": "1", - "local_peer_port": "12", - "remote_peer_port": "1", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - }, - { - "name": "R1-T1.2", - "link_id": { - "link_uuid": { - "uuid": "R1->T1.2" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "R1" - } - }, - "endpoint_uuid": { - "uuid": "3" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "T1.2" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "3", - "dst_port": "1", - "local_peer_port": "13", - "remote_peer_port": "1", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - }, - { - "name": "R1-T1.3", - "link_id": { - "link_uuid": { - "uuid": "R1->T1.3" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "R1" - } - }, - "endpoint_uuid": { - "uuid": "4" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "T1.3" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "4", - "dst_port": "1", - "local_peer_port": "14", - "remote_peer_port": "1", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - }, - { - "name": "R1-R2", - "link_id": { - "link_uuid": { - "uuid": "R1->R2" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "R1" - } - }, - "endpoint_uuid": { - "uuid": "101" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "R2" - } - }, - "endpoint_uuid": { - "uuid": "201" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "101", - "dst_port": "201", - "local_peer_port": "201", - "remote_peer_port": "101", - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - }, - { - "name": "R2-R1", - "link_id": { - "link_uuid": { - "uuid": "R2->R1" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "R2" - } - }, - "endpoint_uuid": { - "uuid": "101" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "R1" - } - }, - "endpoint_uuid": { - "uuid": "201" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "101", - "dst_port": "201", - "local_peer_port": "201", - "remote_peer_port": "101", - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - }, - { - "name": "T2.1-R2", - "link_id": { - "link_uuid": { - "uuid": "T2.1->R2" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "T2.1" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "R2" - } - }, - "endpoint_uuid": { - "uuid": "12" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "1", - "dst_port": "12", - "local_peer_port": "1", - "remote_peer_port": "2", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - }, - { - "name": "T2.2-R2", - "link_id": { - "link_uuid": { - "uuid": "T2.2->R2" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "T2.2" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "R2" - } - }, - "endpoint_uuid": { - "uuid": "13" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "1", - "dst_port": "13", - "local_peer_port": "1", - "remote_peer_port": "3", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - }, - { - "name": "T2.3-R2", - "link_id": { - "link_uuid": { - "uuid": "T2.3->R2" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "T2.3" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "R2" - } - }, - "endpoint_uuid": { - "uuid": "14" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "1", - "dst_port": "14", - "local_peer_port": "1", - "remote_peer_port": "4", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - }, - { - "name": "R2-T2.1", - "link_id": { - "link_uuid": { - "uuid": "R2->T2.1" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "R2" - } - }, - "endpoint_uuid": { - "uuid": "2" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "T2.1" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "2", - "dst_port": "1", - "local_peer_port": "12", - "remote_peer_port": "1", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - }, - { - "name": "R2-T2.2", - "link_id": { - "link_uuid": { - "uuid": "R1->T2.2" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "R2" - } - }, - "endpoint_uuid": { - "uuid": "3" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "T2.2" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "3", - "dst_port": "1", - "local_peer_port": "13", - "remote_peer_port": "1", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - }, - { - "name": "R2-T2.3", - "link_id": { - "link_uuid": { - "uuid": "R2->T2.3" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "R2" - } - }, - "endpoint_uuid": { - "uuid": "4" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "T2.3" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "4", - "dst_port": "1", - "local_peer_port": "14", - "remote_peer_port": "1", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - } - ] -} \ No newline at end of file diff --git a/src/opticalcontroller/json_files/tfs_dict.json b/src/opticalcontroller/json_files/tfs_dict.json deleted file mode 100644 index de7ec97fb911815aadb7fb6fb9a1848a0624ccb9..0000000000000000000000000000000000000000 --- a/src/opticalcontroller/json_files/tfs_dict.json +++ /dev/null @@ -1,1458 +0,0 @@ -{ - "optical_links": [ - { - "name": "T1.1-R1", - "link_id": { - "link_uuid": { - "uuid": "T1.1->R1" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "T1.1" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "R1" - } - }, - "endpoint_uuid": { - "uuid": "12" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "1", - "dst_port": "12", - "local_peer_port": "1", - "remote_peer_port": "2", - "used": false, - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - } - }, - { - "name": "T1.2-R1", - "link_id": { - "link_uuid": { - "uuid": "T1.2->R1" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "T1.2" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "R1" - } - }, - "endpoint_uuid": { - "uuid": "13" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "1", - "dst_port": "13", - "local_peer_port": "1", - "remote_peer_port": "3", - "used": false, - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - } - }, - { - "name": "T1.3-R1", - "link_id": { - "link_uuid": { - "uuid": "T1.3->R1" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "T1.3" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "R1" - } - }, - "endpoint_uuid": { - "uuid": "14" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "1", - "dst_port": "14", - "local_peer_port": "1", - "remote_peer_port": "4", - "used": false, - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - } - }, - { - "name": "R1-T1.1", - "link_id": { - "link_uuid": { - "uuid": "R1->T1.1" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "R1" - } - }, - "endpoint_uuid": { - "uuid": "2" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "T1.1" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "2", - "dst_port": "1", - "local_peer_port": "12", - "remote_peer_port": "1", - "used": false, - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - } - }, - { - "name": "R1-T1.2", - "link_id": { - "link_uuid": { - "uuid": "R1->T1.2" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "R1" - } - }, - "endpoint_uuid": { - "uuid": "3" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "T1.2" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "3", - "dst_port": "1", - "local_peer_port": "13", - "remote_peer_port": "1", - "used": false, - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - } - }, - { - "name": "R1-T1.3", - "link_id": { - "link_uuid": { - "uuid": "R1->T1.3" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "R1" - } - }, - "endpoint_uuid": { - "uuid": "4" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "T1.3" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "4", - "dst_port": "1", - "local_peer_port": "14", - "remote_peer_port": "1", - "used": false, - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - } - }, - { - "name": "R1-R2", - "link_id": { - "link_uuid": { - "uuid": "R1->R2" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "R1" - } - }, - "endpoint_uuid": { - "uuid": "101" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "R2" - } - }, - "endpoint_uuid": { - "uuid": "201" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "101", - "dst_port": "201", - "local_peer_port": "201", - "remote_peer_port": "101", - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - } - }, - { - "name": "R2-R1", - "link_id": { - "link_uuid": { - "uuid": "R2->R1" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "R2" - } - }, - "endpoint_uuid": { - "uuid": "101" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "R1" - } - }, - "endpoint_uuid": { - "uuid": "201" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "101", - "dst_port": "201", - "local_peer_port": "201", - "remote_peer_port": "101", - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - } - }, - { - "name": "T2.1-R2", - "link_id": { - "link_uuid": { - "uuid": "T2.1->R2" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "T2.1" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "R2" - } - }, - "endpoint_uuid": { - "uuid": "12" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "1", - "dst_port": "12", - "local_peer_port": "1", - "remote_peer_port": "2", - "used": false, - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - } - }, - { - "name": "T2.2-R2", - "link_id": { - "link_uuid": { - "uuid": "T2.2->R2" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "T2.2" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "R2" - } - }, - "endpoint_uuid": { - "uuid": "13" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "1", - "dst_port": "13", - "local_peer_port": "1", - "remote_peer_port": "3", - "used": false, - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - } - }, - { - "name": "T2.3-R2", - "link_id": { - "link_uuid": { - "uuid": "T2.3->R2" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "T2.3" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "R2" - } - }, - "endpoint_uuid": { - "uuid": "14" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "1", - "dst_port": "14", - "local_peer_port": "1", - "remote_peer_port": "4", - "used": false, - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - } - }, - { - "name": "R2-T2.1", - "link_id": { - "link_uuid": { - "uuid": "R2->T2.1" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "R2" - } - }, - "endpoint_uuid": { - "uuid": "2" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "T2.1" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "2", - "dst_port": "1", - "local_peer_port": "12", - "remote_peer_port": "1", - "used": false, - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - } - }, - { - "name": "R2-T2.2", - "link_id": { - "link_uuid": { - "uuid": "R1->T2.2" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "R2" - } - }, - "endpoint_uuid": { - "uuid": "3" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "T2.2" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "3", - "dst_port": "1", - "local_peer_port": "13", - "remote_peer_port": "1", - "used": false, - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - } - }, - { - "name": "R2-T2.3", - "link_id": { - "link_uuid": { - "uuid": "R2->T2.3" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "R2" - } - }, - "endpoint_uuid": { - "uuid": "4" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "T2.3" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "4", - "dst_port": "1", - "local_peer_port": "14", - "remote_peer_port": "1", - "used": false, - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - } - } - ] -} \ No newline at end of file diff --git a/src/opticalcontroller/json_files/tfs_dict_modified.json b/src/opticalcontroller/json_files/tfs_dict_modified.json deleted file mode 100644 index 80176b067850732aba3abe0282362cf4e5395695..0000000000000000000000000000000000000000 --- a/src/opticalcontroller/json_files/tfs_dict_modified.json +++ /dev/null @@ -1,1458 +0,0 @@ -{ - "optical_links": [ - { - "name": "T1.1-R1", - "link_id": { - "link_uuid": { - "uuid": "T1.1->R1" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "T1.1" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "R1" - } - }, - "endpoint_uuid": { - "uuid": "12" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "1", - "dst_port": "12", - "local_peer_port": "1", - "remote_peer_port": "2", - "used": false, - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - } - }, - { - "name": "T1.2-R1", - "link_id": { - "link_uuid": { - "uuid": "T1.2->R1" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "T1.2" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "R1" - } - }, - "endpoint_uuid": { - "uuid": "13" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "1", - "dst_port": "13", - "local_peer_port": "1", - "remote_peer_port": "3", - "used": false, - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - } - }, - { - "name": "T1.3-R1", - "link_id": { - "link_uuid": { - "uuid": "T1.3->R1" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "T1.3" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "R1" - } - }, - "endpoint_uuid": { - "uuid": "14" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "1", - "dst_port": "14", - "local_peer_port": "1", - "remote_peer_port": "4", - "used": false, - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - } - }, - { - "name": "R1-T1.1", - "link_id": { - "link_uuid": { - "uuid": "R1->T1.1" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "R1" - } - }, - "endpoint_uuid": { - "uuid": "2" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "T1.1" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "2", - "dst_port": "1", - "local_peer_port": "12", - "remote_peer_port": "1", - "used": false, - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - } - }, - { - "name": "R1-T1.2", - "link_id": { - "link_uuid": { - "uuid": "R1->T1.2" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "R1" - } - }, - "endpoint_uuid": { - "uuid": "3" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "T1.2" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "3", - "dst_port": "1", - "local_peer_port": "13", - "remote_peer_port": "1", - "used": false, - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - } - }, - { - "name": "R1-T1.3", - "link_id": { - "link_uuid": { - "uuid": "R1->T1.3" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "R1" - } - }, - "endpoint_uuid": { - "uuid": "4" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "T1.3" - } - }, - "endpoint_uuid": { - "uuid": "1" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "4", - "dst_port": "1", - "local_peer_port": "14", - "remote_peer_port": "1", - "used": false, - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - } - }, - { - "name": "R1-R2", - "link_id": { - "link_uuid": { - "uuid": "R1->R2" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "R1" - } - }, - "endpoint_uuid": { - "uuid": "101" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "R2" - } - }, - "endpoint_uuid": { - "uuid": "111" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "101", - "dst_port": "111", - "local_peer_port": "111", - "remote_peer_port": "101", - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - } - }, - { - "name": "R2-R1", - "link_id": { - "link_uuid": { - "uuid": "R2->R1" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "R2" - } - }, - "endpoint_uuid": { - "uuid": "101" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "R1" - } - }, - "endpoint_uuid": { - "uuid": "111" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "101", - "dst_port": "111", - "local_peer_port": "111", - "remote_peer_port": "101", - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - } - }, - { - "name": "T2.1-R2", - "link_id": { - "link_uuid": { - "uuid": "T2.1->R2" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "T2.1" - } - }, - "endpoint_uuid": { - "uuid": "6" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "R2" - } - }, - "endpoint_uuid": { - "uuid": "12" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "6", - "dst_port": "12", - "local_peer_port": "6", - "remote_peer_port": "2", - "used": false, - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - } - }, - { - "name": "T2.2-R2", - "link_id": { - "link_uuid": { - "uuid": "T2.2->R2" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "T2.2" - } - }, - "endpoint_uuid": { - "uuid": "6" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "R2" - } - }, - "endpoint_uuid": { - "uuid": "13" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "6", - "dst_port": "13", - "local_peer_port": "6", - "remote_peer_port": "3", - "used": false, - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - } - }, - { - "name": "T2.3-R2", - "link_id": { - "link_uuid": { - "uuid": "T2.3->R2" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "T2.3" - } - }, - "endpoint_uuid": { - "uuid": "6" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "R2" - } - }, - "endpoint_uuid": { - "uuid": "14" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "6", - "dst_port": "14", - "local_peer_port": "6", - "remote_peer_port": "4", - "used": false, - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - } - }, - { - "name": "R2-T2.1", - "link_id": { - "link_uuid": { - "uuid": "R2->T2.1" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "R2" - } - }, - "endpoint_uuid": { - "uuid": "2" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "T2.1" - } - }, - "endpoint_uuid": { - "uuid": "6" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "2", - "dst_port": "6", - "local_peer_port": "12", - "remote_peer_port": "6", - "used": false, - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - } - }, - { - "name": "R2-T2.2", - "link_id": { - "link_uuid": { - "uuid": "R1->T2.2" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "R2" - } - }, - "endpoint_uuid": { - "uuid": "3" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "T2.2" - } - }, - "endpoint_uuid": { - "uuid": "6" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "3", - "dst_port": "6", - "local_peer_port": "13", - "remote_peer_port": "6", - "used": false, - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - } - }, - { - "name": "R2-T2.3", - "link_id": { - "link_uuid": { - "uuid": "R2->T2.3" - } - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "R2" - } - }, - "endpoint_uuid": { - "uuid": "4" - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "T2.3" - } - }, - "endpoint_uuid": { - "uuid": "6" - } - } - ], - "optical_details": { - "length": 0, - "src_port": "4", - "dst_port": "6", - "local_peer_port": "14", - "remote_peer_port": "6", - "used": false, - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 1, - "19": 1, - "20": 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 - }, - "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 - } - } - } - ] -} \ No newline at end of file diff --git a/src/opticalcontroller/json_files/topo_2_links.json b/src/opticalcontroller/json_files/topo_2_links.json deleted file mode 100644 index 02165938ce675071a4ff4c3424e3b53244d40810..0000000000000000000000000000000000000000 --- a/src/opticalcontroller/json_files/topo_2_links.json +++ /dev/null @@ -1,1530 +0,0 @@ -{ - "R1-R3": { - "length": 80, - "source": "d2", - "target": "d1", - "fibers": { - "d2-1": { - "length": 80, - "src_port": "103", - "dst_port": "201", - "local_peer_port": "203", - "remote_peer_port": "101", - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - }, - "d2-2": { - "length": 80, - "src_port": "104", - "dst_port": "202", - "local_peer_port": "204", - "remote_peer_port": "102", - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - } - }, - "R3-R1": { - "length": 80, - "source": "d1", - "target": "d2", - "fibers": { - "d1-1": { - "length": 80, - "src_port": "101", - "dst_port": "203", - "local_peer_port": "201", - "remote_peer_port": "103", - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - }, - "d1-2": { - "length": 80, - "src_port": "102", - "dst_port": "204", - "local_peer_port": "202", - "remote_peer_port": "104", - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - } - }, - "R2-R3": { - "length": 80, - "source": "d2", - "target": "d2", - "fibers": { - "d2-1": { - "length": 80, - "src_port": "103", - "dst_port": "203", - "local_peer_port": "203", - "remote_peer_port": "103", - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - }, - "d2-2": { - "length": 80, - "src_port": "104", - "dst_port": "204", - "local_peer_port": "204", - "remote_peer_port": "104", - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - } - }, - "R3-R2": { - "length": 80, - "source": "d2", - "target": "d2", - "fibers": { - "d2-1": { - "length": 80, - "src_port": "103", - "dst_port": "203", - "local_peer_port": "203", - "remote_peer_port": "103", - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - }, - "d2-2": { - "length": 80, - "src_port": "104", - "dst_port": "204", - "local_peer_port": "204", - "remote_peer_port": "104", - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - } - }, - "T1-R1": { - "length": 0, - "source": "muxT", - "target": "srgR", - "fibers": { - "M1": { - "length": 0, - "src_port": "1", - "dst_port": "2001", - "local_peer_port": "1", - "remote_peer_port": "1001", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - }, - "M2": { - "length": 0, - "src_port": "2", - "dst_port": "2002", - "local_peer_port": "2", - "remote_peer_port": "1002", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - }, - "M3": { - "length": 0, - "src_port": "3", - "dst_port": "2003", - "local_peer_port": "3", - "remote_peer_port": "1003", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - } - }, - "R1-T1": { - "length": 0, - "source": "srgT", - "target": "muxR", - "fibers": { - "S1": { - "length": 0, - "src_port": "1001", - "dst_port": "1", - "local_peer_port": "2001", - "remote_peer_port": "1", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - }, - "S2": { - "length": 0, - "src_port": "1002", - "dst_port": "2", - "local_peer_port": "2002", - "remote_peer_port": "2", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - }, - "S3": { - "length": 0, - "src_port": "1003", - "dst_port": "3", - "local_peer_port": "2003", - "remote_peer_port": "3", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - } - }, - "T2-R2": { - "length": 0, - "source": "muxT", - "target": "srgR", - "fibers": { - "M1": { - "length": 0, - "src_port": "1", - "dst_port": "2001", - "local_peer_port": "1", - "remote_peer_port": "1001", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - }, - "M2": { - "length": 0, - "src_port": "2", - "dst_port": "2002", - "local_peer_port": "2", - "remote_peer_port": "1002", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - }, - "M3": { - "length": 0, - "src_port": "3", - "dst_port": "2003", - "local_peer_port": "3", - "remote_peer_port": "1003", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - } - }, - "R2-T2": { - "length": 0, - "source": "srgT", - "target": "muxR", - "fibers": { - "S1": { - "length": 0, - "src_port": "1001", - "dst_port": "1", - "local_peer_port": "2001", - "remote_peer_port": "1", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - }, - "S2": { - "length": 0, - "src_port": "1002", - "dst_port": "2", - "local_peer_port": "2002", - "remote_peer_port": "2", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - }, - "S3": { - "length": 0, - "src_port": "1003", - "dst_port": "3", - "local_peer_port": "2003", - "remote_peer_port": "3", - "used": false, - "c_slots": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "l_slots": [ - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120 - ], - "s_slots": [ - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520 - ] - } - } - } -} diff --git a/src/opticalcontroller/json_files/topology-optical.json b/src/opticalcontroller/json_files/topology-optical.json deleted file mode 100644 index e2453b654d53fc3200570ce9c2b17effc964bd25..0000000000000000000000000000000000000000 --- a/src/opticalcontroller/json_files/topology-optical.json +++ /dev/null @@ -1,252 +0,0 @@ -{ - "r1-r2": { - "length": 80, - "source" : "d1", - "target" : "d1", - "fibers" : { - "d1-1": { - "src_port": "1T", - "dst_port": "1R", - "c_slots": {"1": 1, "2": 1, "3": 1, "4": 1}, - "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1}, - "s_slots": {"1001": 1, "1002": 1, "1003": 1, "1004": 1} - }, - "d1-2":{ - "src_port": "2T", - "dst_port": "2R", - "c_slots": {"1": 1, "2": 1, "3": 1, "4": 1}, - "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1}, - "s_slots": {"1001": 1, "1002": 1, "1003": 1, "1004": 1} - } - } - }, - "r2-r1": { - "length": 80, - "source" : "d1", - "target" : "d1", - "fibers" : { - "d1-1" : { - "src_port": "1T", - "dst_port": "1R", - "c_slots": {"1": 1, "2": 1, "3": 1, "4": 1}, - "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1}, - "s_slots": {"1001": 1, "1002": 1, "1003": 1, "1004": 1} - }, - "d1-2" : { - "src_port": "2T", - "dst_port": "2R", - "c_slots": {"1": 1, "2": 1, "3": 1, "4": 1}, - "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1}, - "s_slots": {"1001": 1, "1002": 1, "1003": 1, "1004": 1} - } - } - }, - "r1-r3": { - "length": 80, - "source" : "d2", - "target" : "d1", - "fibers" : { - "d2-1":{ - "src_port": "3T", - "dst_port": "1R", - "c_slots": {"1": 1, "2": 1, "3": 1, "4": 1}, - "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1}, - "s_slots": {"1001": 1, "1002": 1, "1003": 1, "1004": 1} - }, - "d2-2":{ - "src_port": "4T", - "dst_port": "2R", - "c_slots": {"1": 1, "2": 1, "3": 1, "4": 1}, - "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1}, - "s_slots": {"1001": 1, "1002": 1, "1003": 1, "1004": 1} - } - } - }, - "r3-r1": { - "length": 80, - "source" : "d1", - "target" : "d2", - "fibers" : { - "d1-1": { - "src_port": "1T", - "dst_port": "3R", - "c_slots": {"1": 1, "2": 1, "3": 1, "4": 1}, - "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1}, - "s_slots": {"1001": 1, "1002": 1, "1003": 1, "1004": 1} - }, - "d1-2": { - "src_port": "2T", - "dst_port": "4R", - "c_slots": {"1": 1, "2": 1, "3": 1, "4": 1}, - "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1}, - "s_slots": {"1001": 1, "1002": 1, "1003": 1, "1004": 1} - } - } - }, - "r2-r3": { - "length": 80, - "source" : "d2", - "target" : "d2", - "fibers" : { - "d2-1": { - "src_port": "3T", - "dst_port": "3R", - "c_slots": {"1": 1, "2": 1, "3": 1, "4": 1}, - "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1}, - "s_slots": {"1001": 1, "1002": 1, "1003": 1, "1004": 1} - }, - "d2-2": { - "src_port": "4T", - "dst_port": "4R", - "c_slots": {"1": 1, "2": 1, "3": 1, "4": 1}, - "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1}, - "s_slots": {"1001": 1, "1002": 1, "1003": 1, "1004": 1} - } - } - }, - "r3-r2": { - "length": 80, - "source" : "d2", - "target" : "d2", - "fibers" : { - "d2-1": { - "src_port": "3T", - "dst_port": "3R", - "c_slots": {"1": 1, "2": 1, "3": 1, "4": 1}, - "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1}, - "s_slots": {"1001": 1, "1002": 1, "1003": 1, "1004": 1} - }, - "d2-2":{ - "src_port": "4T", - "dst_port": "4R", - "c_slots": {"1": 1, "2": 1, "3": 1, "4": 1}, - "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1}, - "s_slots": {"1001": 1, "1002": 1, "1003": 1, "1004": 1} - } - } - }, - "t1-r1": { - "length": 0, - "source" : "muxT", - "target" : "srgR", - "fibers" : { - "M1": { - "src_port": "1", - "dst_port": "101R", - "used": false, - "c_slots": {"1": 1, "2": 1, "3": 1, "4": 1}, - "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1}, - "s_slots": {"1001": 1, "1002": 1, "1003": 1, "1004": 1} - }, - "M2": { - "src_port": "2", - "dst_port": "102R", - "used": false, - "c_slots": {"1": 1, "2": 1, "3": 1, "4": 1}, - "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1}, - "s_slots": {"1001": 1, "1002": 1, "1003": 1, "1004": 1} - }, - "M3": { - "src_port": "3", - "dst_port": "103R", - "used": false, - "c_slots": {"1": 1, "2": 1, "3": 1, "4": 1}, - "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1}, - "s_slots": {"1001": 1, "1002": 1, "1003": 1, "1004": 1} - } - } - }, - "r1-t1": { - "length": 0, - "source" : "srgT", - "target" : "muxR", - "fibers" : { - "S1": { - "src_port": "101T", - "dst_port": "1", - "used": false, - "c_slots": {"1": 1, "2": 1, "3": 1, "4": 1}, - "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1}, - "s_slots": {"1001": 1, "1002": 1, "1003": 1, "1004": 1} - }, - "S2": { - "src_port": "102T", - "dst_port": "2", - "used": false, - "c_slots": {"1": 1, "2": 1, "3": 1, "4": 1}, - "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1}, - "s_slots": {"1001": 1, "1002": 1, "1003": 1, "1004": 1} - }, - "S3": { - "src_port": "103T", - "dst_port": "3", - "used": false, - "c_slots": {"1": 1, "2": 1, "3": 1, "4": 1}, - "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1}, - "s_slots": {"1001": 1, "1002": 1, "1003": 1, "1004": 1} - } - } - }, - "t2-r2": { - "length": 0, - "source" : "muxT", - "target" : "srgR", - "fibers" : { - "M1": { - "src_port": "1", - "dst_port": "101R", - "used": false, - "c_slots": {"1": 1, "2": 1, "3": 1, "4": 1}, - "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1}, - "s_slots": {"1001": 1, "1002": 1, "1003": 1, "1004": 1} - }, - "M2": { - "src_port": "2", - "dst_port": "102R", - "used": false, - "c_slots": {"1": 1, "2": 1, "3": 1, "4": 1}, - "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1}, - "s_slots": {"1001": 1, "1002": 1, "1003": 1, "1004": 1} - }, - "M3": { - "src_port": "3", - "dst_port": "103R", - "used": false, - "c_slots": {"1": 1, "2": 1, "3": 1, "4": 1}, - "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1}, - "s_slots": {"1001": 1, "1002": 1, "1003": 1, "1004": 1} - } - } - }, - "r2-t2": { - "length": 0, - "source" : "srgT", - "target" : "muxR", - "fibers" : { - "S1": { - "src_port": "101T", - "dst_port": "1", - "used": false, - "c_slots": {"1": 1, "2": 1, "3": 1, "4": 1}, - "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1}, - "s_slots": {"1001": 1, "1002": 1, "1003": 1, "1004": 1} - }, - "S2": { - "src_port": "102T", - "dst_port": "2", - "used": false, - "c_slots": {"1": 1, "2": 1, "3": 1, "4": 1}, - "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1}, - "s_slots": {"1001": 1, "1002": 1, "1003": 1, "1004": 1} - }, - "S3": { - "src_port": "103T", - "dst_port": "3", - "used": false, - "c_slots": {"1": 1, "2": 1, "3": 1, "4": 1}, - "l_slots": {"101": 1, "102": 1, "103": 1, "104": 1}, - "s_slots": {"1001": 1, "1002": 1, "1003": 1, "1004": 1} - } - } - } -} diff --git a/src/opticalcontroller/json_files/topology-optical2.json b/src/opticalcontroller/json_files/topology-optical2.json deleted file mode 100644 index fe8e9866bcc64d52b2f49089ce03af47d72df9d0..0000000000000000000000000000000000000000 --- a/src/opticalcontroller/json_files/topology-optical2.json +++ /dev/null @@ -1,324 +0,0 @@ -{ - "r1-r2": { - "length": 80, - "source" : "d1", - "target" : "d1", - "fibers" : { - "d1-1": { - "length": 80, - "src_port": "1T", - "dst_port": "1R", - "local_peer_port": "1R", - "remote_peer_port": "1T", - "c_slots": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], - "l_slots": [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ,120], - "s_slots": [501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519 ,520] - }, - "d1-2":{ - "length": 80, - "src_port": "2T", - "dst_port": "2R", - "local_peer_port": "2R", - "remote_peer_port": "2T", - "c_slots": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], - "l_slots": [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ,120], - "s_slots": [501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519 ,520] - } - } - }, - "r2-r1": { - "length": 80, - "source" : "d1", - "target" : "d1", - "fibers" : { - "d1-1" : { - "length": 80, - "src_port": "1T", - "dst_port": "1R", - "local_peer_port": "1R", - "remote_peer_port": "1T", - "c_slots": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], - "l_slots": [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ,120], - "s_slots": [501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519 ,520] - }, - "d1-2" : { - "length": 80, - "src_port": "2T", - "dst_port": "2R", - "local_peer_port": "2R", - "remote_peer_port": "2T", - "c_slots": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], - "l_slots": [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ,120], - "s_slots": [501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519 ,520] - } - } - }, - "r1-r3": { - "length": 80, - "source" : "d2", - "target" : "d1", - "fibers" : { - "d2-1":{ - "length": 80, - "src_port": "3T", - "dst_port": "1R", - "local_peer_port": "3R", - "remote_peer_port": "1T", - "c_slots": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], - "l_slots": [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ,120], - "s_slots": [501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519 ,520] - }, - "d2-2":{ - "length": 80, - "src_port": "4T", - "dst_port": "2R", - "local_peer_port": "4R", - "remote_peer_port": "2T", - "c_slots": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], - "l_slots": [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ,120], - "s_slots": [501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519 ,520] - } - } - }, - "r3-r1": { - "length": 80, - "source" : "d1", - "target" : "d2", - "fibers" : { - "d1-1": { - "length": 80, - "src_port": "1T", - "dst_port": "3R", - "local_peer_port": "1R", - "remote_peer_port": "3T", - "c_slots": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], - "l_slots": [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ,120], - "s_slots": [501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519 ,520] - }, - "d1-2": { - "length": 80, - "src_port": "2T", - "dst_port": "4R", - "local_peer_port": "2R", - "remote_peer_port": "4T", - "c_slots": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], - "l_slots": [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ,120], - "s_slots": [501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519 ,520] - } - } - }, - "r2-r3": { - "length": 80, - "source" : "d2", - "target" : "d2", - "fibers" : { - "d2-1": { - "length": 80, - "src_port": "3T", - "dst_port": "3R", - "local_peer_port": "3R", - "remote_peer_port": "3T", - "c_slots": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], - "l_slots": [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ,120], - "s_slots": [501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519 ,520] - }, - "d2-2": { - "length": 80, - "src_port": "4T", - "dst_port": "4R", - "local_peer_port": "4R", - "remote_peer_port": "4T", - "c_slots": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], - "l_slots": [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ,120], - "s_slots": [501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519 ,520] - } - } - }, - "r3-r2": { - "length": 80, - "source" : "d2", - "target" : "d2", - "fibers" : { - "d2-1": { - "length": 80, - "src_port": "3T", - "dst_port": "3R", - "local_peer_port": "3R", - "remote_peer_port": "3T", - "c_slots": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], - "l_slots": [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ,120], - "s_slots": [501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519 ,520] - }, - "d2-2":{ - "length": 80, - "src_port": "4T", - "dst_port": "4R", - "local_peer_port": "4R", - "remote_peer_port": "4T", - "c_slots": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], - "l_slots": [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ,120], - "s_slots": [501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519 ,520] - } - } - }, - "t1-r1": { - "length": 0, - "source" : "muxT", - "target" : "srgR", - "fibers" : { - "M1": { - "length": 0, - "src_port": "1", - "dst_port": "101R", - "local_peer_port": "1", - "remote_peer_port": "101T", - "used": false, - "c_slots": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], - "l_slots": [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ,120], - "s_slots": [501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519 ,520] - }, - "M2": { - "length": 0, - "src_port": "2", - "dst_port": "102R", - "local_peer_port": "2", - "remote_peer_port": "102T", - "used": false, - "c_slots": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], - "l_slots": [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ,120], - "s_slots": [501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519 ,520] - }, - "M3": { - "length": 0, - "src_port": "3", - "dst_port": "103R", - "local_peer_port": "3", - "remote_peer_port": "103T", - "used": false, - "c_slots": [], - "l_slots": [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ,120], - "s_slots": [501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519 ,520] - } - } - }, - "r1-t1": { - "length": 0, - "source" : "srgT", - "target" : "muxR", - "fibers" : { - "S1": { - "length": 0, - "src_port": "101T", - "dst_port": "1", - "local_peer_port": "101R", - "remote_peer_port": "1", - "used": false, - "c_slots": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], - "l_slots": [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ,120], - "s_slots": [501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519 ,520] - }, - "S2": { - "length": 0, - "src_port": "102T", - "dst_port": "2", - "local_peer_port": "102T", - "remote_peer_port": "2", - "used": false, - "c_slots": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], - "l_slots": [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ,120], - "s_slots": [501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519 ,520] - }, - "S3": { - "length": 0, - "src_port": "103T", - "dst_port": "3", - "local_peer_port": "103R", - "remote_peer_port": "3", - "used": false, - "c_slots": [], - "l_slots": [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ,120], - "s_slots": [501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519 ,520] - } - } - }, - "t2-r2": { - "length": 0, - "source" : "muxT", - "target" : "srgR", - "fibers" : { - "M1": { - "length": 0, - "src_port": "1", - "dst_port": "101R", - "local_peer_port": "1", - "remote_peer_port": "101T", - "used": false, - "c_slots": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], - "l_slots": [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ,120], - "s_slots": [501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519 ,520] - }, - "M2": { - "length": 0, - "src_port": "2", - "dst_port": "102R", - "local_peer_port": "2", - "remote_peer_port": "102T", - "used": false, - "c_slots": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], - "l_slots": [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ,120], - "s_slots": [501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519 ,520] - }, - "M3": { - "length": 0, - "src_port": "3", - "dst_port": "103R", - "local_peer_port": "3", - "remote_peer_port": "103T", - "used": false, - "c_slots": [], - "l_slots": [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ,120], - "s_slots": [501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519 ,520] - } - } - }, - "r2-t2": { - "length": 0, - "source" : "srgT", - "target" : "muxR", - "fibers" : { - "S1": { - "length": 0, - "src_port": "101T", - "dst_port": "1", - "local_peer_port": "101R", - "remote_peer_port": "1", - "used": false, - "c_slots": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], - "l_slots": [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ,120], - "s_slots": [501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519 ,520] - }, - "S2": { - "length": 0, - "src_port": "102T", - "dst_port": "2", - "local_peer_port": "102R", - "remote_peer_port": "2", - "used": false, - "c_slots": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], - "l_slots": [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ,120], - "s_slots": [501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519 ,520] - }, - "S3": { - "length": 0, - "src_port": "103T", - "dst_port": "3", - "local_peer_port": "103R", - "remote_peer_port": "3", - "used": false, - "c_slots": [], - "l_slots": [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ,120], - "s_slots": [501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519 ,520] - } - } - } -} diff --git a/src/opticalcontroller/requirements.in b/src/opticalcontroller/requirements.in index bae2cf3336cc1bf4da132736a438507238d7bcc9..15b3ca3a465efe5c9b7f5a217b1f5658a738405c 100644 --- a/src/opticalcontroller/requirements.in +++ b/src/opticalcontroller/requirements.in @@ -1,4 +1,3 @@ - # Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -13,8 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. - - aniso8601==9.0.1 attrs==23.1.0 blinker==1.6.2 diff --git a/src/opticalcontroller/requirements_opt.txt b/src/opticalcontroller/requirements_opt.txt deleted file mode 100644 index e4b8abe1b410498f4030e0106842052b5a9734b1..0000000000000000000000000000000000000000 --- a/src/opticalcontroller/requirements_opt.txt +++ /dev/null @@ -1,7 +0,0 @@ -Flask==1.1.2 -flask-restplus==0.13.0 -itsdangerous==1.1.0 -Jinja2==2.11.3 -MarkupSafe==1.1.1 -numpy==1.23.0 -Werkzeug==0.16.1 diff --git a/src/opticalcontroller/requirements_optical_ctrl_test.txt b/src/opticalcontroller/requirements_optical_ctrl_test.txt new file mode 100644 index 0000000000000000000000000000000000000000..0b1947bee2c7f1e89491dff4f7589d3465d28c38 --- /dev/null +++ b/src/opticalcontroller/requirements_optical_ctrl_test.txt @@ -0,0 +1,21 @@ +# Copyright 2022-2024 ETSI OSG/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. + +Flask==1.1.2 +flask-restplus==0.13.0 +itsdangerous==1.1.0 +Jinja2==2.11.3 +MarkupSafe==1.1.1 +numpy==1.23.0 +Werkzeug==0.16.1 diff --git a/src/opticalcontroller/test.py b/src/opticalcontroller/test.py deleted file mode 100644 index 255ee2de4faa8d15d41421c76b837705ea49f46d..0000000000000000000000000000000000000000 --- a/src/opticalcontroller/test.py +++ /dev/null @@ -1,12 +0,0 @@ -import json - - -def readTopologyData(): - topo_file = open("json_files/tfs_dict.json", 'r') - topo = json.load(topo_file) - # print(topo) - topo_file.close() - return topo - - -print(readTopologyData()) \ No newline at end of file diff --git a/src/opticalcontroller/tools.py b/src/opticalcontroller/tools.py index 40d180691a1f8a65536bfec649e99edc6b625aa5..08441f5c0010de1be503ee307410431ddfee54ab 100644 --- a/src/opticalcontroller/tools.py +++ b/src/opticalcontroller/tools.py @@ -12,12 +12,12 @@ # See the License for the specific language governing permissions and # limitations under the License. +import json import numpy as np from variables import * -import json , logging -from context.client.ContextClient import ContextClient from common.proto.context_pb2 import TopologyId , LinkId , OpticalLink , OpticalLinkDetails from common.tools.object_factory.OpticalLink import correct_slot +from context.client.ContextClient import ContextClient def common_slots(a, b): @@ -190,16 +190,14 @@ def frequency_converter(b, slots): def readTopologyData(nodes, topology): - - - nodes_file = open(nodes, 'r') - topo_file = open(topology, 'r') - nodes = json.load(nodes_file) - topo = json.load(topo_file) - #print(topo) - nodes_file.close() - topo_file.close() - return nodes, topo + nodes_file = open(nodes, 'r') + topo_file = open(topology, 'r') + nodes = json.load(nodes_file) + topo = json.load(topo_file) + #print(topo) + nodes_file.close() + topo_file.close() + return nodes, topo def readTopologyDataFromContext(topology_id:TopologyId): @@ -325,6 +323,3 @@ def set_link_update (fib:dict,link:dict,test="updating"): ctx_client.SetOpticalLink(optical_link) except Exception as err: print (f"setOpticalLink {err}") - - - diff --git a/src/opticalcontroller/variables.py b/src/opticalcontroller/variables.py index 90b746d1f0a61c860d91e64c23a3be65b0c2ca41..83d073e92009c8796a396d19af0bc737865c77e9 100644 --- a/src/opticalcontroller/variables.py +++ b/src/opticalcontroller/variables.py @@ -23,12 +23,4 @@ Nc = 320 #Nc = 10 Ns = 720 -nodes_json = 'json_files/nodes.json' -topology_json = 'json_files/tfs_dict_modified.json' #LAST -#topology_json = 'json_files/optical_TFSworking.json' #LAST -#topology_json = 'json_files/optical_topoTFS.json' -#topology_json = 'json_files/topo_2_links.json' - -testing = 1 full_links = 0 - diff --git a/src/pathcomp/frontend/Config.py b/src/pathcomp/frontend/Config.py index 08de81b47dd05ce19ac8335b5b31df8ef4ee461e..ab431acb92ac3732ff98bf7228d825c92d279986 100644 --- a/src/pathcomp/frontend/Config.py +++ b/src/pathcomp/frontend/Config.py @@ -13,7 +13,7 @@ # limitations under the License. import os -from common.Settings import get_setting +from common.Settings import get_setting, is_deployed_forecaster DEFAULT_PATHCOMP_BACKEND_SCHEME = 'http' DEFAULT_PATHCOMP_BACKEND_HOST = '127.0.0.1' @@ -44,6 +44,7 @@ SETTING_NAME_ENABLE_FORECASTER = 'ENABLE_FORECASTER' TRUE_VALUES = {'Y', 'YES', 'TRUE', 'T', 'E', 'ENABLE', 'ENABLED'} def is_forecaster_enabled() -> bool: + if not is_deployed_forecaster(): return False is_enabled = get_setting(SETTING_NAME_ENABLE_FORECASTER, default=None) if is_enabled is None: return False str_is_enabled = str(is_enabled).upper() diff --git a/src/pathcomp/frontend/service/algorithms/_Algorithm.py b/src/pathcomp/frontend/service/algorithms/_Algorithm.py index 3ed2b13fb33ae06faeacc4286959a8016ca995d1..3394d8df99933d8acc83a8cc8cebb1488ff6752c 100644 --- a/src/pathcomp/frontend/service/algorithms/_Algorithm.py +++ b/src/pathcomp/frontend/service/algorithms/_Algorithm.py @@ -14,6 +14,7 @@ import json, logging, requests, uuid from typing import Dict, List, Optional, Tuple, Union +from common.DeviceTypes import DeviceTypeEnum from common.proto.context_pb2 import ( ConfigRule, Connection, Device, DeviceList, EndPointId, Link, LinkList, Service, ServiceStatusEnum, ServiceTypeEnum ) @@ -251,21 +252,37 @@ class _Algorithm: ] self.logger.debug('path_hops = {:s}'.format(str(path_hops))) - try: - _device_dict = {k:v[0] for k,v in self.device_dict.items()} - self.logger.debug('self.device_dict = {:s}'.format(str(_device_dict))) - connections = convert_explicit_path_hops_to_connections( - path_hops, self.device_dict, main_service_uuid, main_service_type) - self.logger.debug('EXTRAPOLATED connections = {:s}'.format(str(connections))) - except: # pylint: disable=bare-except - MSG = ' '.join([ - 'Unable to Extrapolate sub-services and sub-connections.', - 'Assuming single-service and single-connection.', - ]) - self.logger.exception(MSG) + device_types = {v[0]['device_type'] for k,v in self.device_dict.items()} + DEVICES_BASIC_CONNECTION = { + DeviceTypeEnum.DATACENTER.value, DeviceTypeEnum.EMULATED_DATACENTER.value, + DeviceTypeEnum.CLIENT.value, DeviceTypeEnum.EMULATED_CLIENT.value, + DeviceTypeEnum.PACKET_ROUTER.value, DeviceTypeEnum.EMULATED_PACKET_ROUTER.value, + } + self.logger.debug('device_types = {:s}'.format(str(device_types))) + self.logger.debug('DEVICES_BASIC_CONNECTION = {:s}'.format(str(DEVICES_BASIC_CONNECTION))) + is_basic_connection = device_types.issubset(DEVICES_BASIC_CONNECTION) + self.logger.debug('is_basic_connection = {:s}'.format(str(is_basic_connection))) + if is_basic_connection: + self.logger.info('Assuming basic connections...') connections = convert_explicit_path_hops_to_plain_connection( path_hops, main_service_uuid, main_service_type) self.logger.debug('BASIC connections = {:s}'.format(str(connections))) + else: + try: + _device_dict = {k:v[0] for k,v in self.device_dict.items()} + self.logger.debug('self.device_dict = {:s}'.format(str(_device_dict))) + connections = convert_explicit_path_hops_to_connections( + path_hops, self.device_dict, main_service_uuid, main_service_type) + self.logger.debug('EXTRAPOLATED connections = {:s}'.format(str(connections))) + except: # pylint: disable=bare-except + MSG = ' '.join([ + 'Unable to Extrapolate sub-services and sub-connections.', + 'Assuming single-service and single-connection.', + ]) + self.logger.exception(MSG) + connections = convert_explicit_path_hops_to_plain_connection( + path_hops, main_service_uuid, main_service_type) + self.logger.debug('BASIC connections = {:s}'.format(str(connections))) for connection in connections: service_uuid,service_type,path_hops,_ = connection diff --git a/src/policy/pom.xml b/src/policy/pom.xml index 79294fba4020c091ee5234649c788d2ea7e88b56..b322110bf3944fe7df3d7f1c932177a1d28cc631 100644 --- a/src/policy/pom.xml +++ b/src/policy/pom.xml @@ -54,7 +54,7 @@ 3.2.0 3.0.0-M5 3.8.0.2131 - 2.10.3 + 2.43.0 2.8.1 3.1.3.Final 2.16.12.Final @@ -136,6 +136,11 @@ quarkus-resteasy-reactive + + io.quarkus + quarkus-smallrye-reactive-messaging-kafka + + io.quarkus quarkus-arc @@ -425,7 +430,7 @@ - 1.10.0 + 1.15.0 diff --git a/src/policy/src/main/docker/Dockerfile.multistage.jvm b/src/policy/src/main/docker/Dockerfile.multistage.jvm index 9f07d861c2d5b2563c078b9895b470b32984351f..4b240d657559bde36ee98f51ef92ce8984333701 100644 --- a/src/policy/src/main/docker/Dockerfile.multistage.jvm +++ b/src/policy/src/main/docker/Dockerfile.multistage.jvm @@ -37,6 +37,7 @@ FROM registry.access.redhat.com/ubi8/ubi-minimal:8.4 AS release ARG JAVA_PACKAGE=java-11-openjdk-headless ARG RUN_JAVA_VERSION=1.3.8 ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' + # Install java and the run-java script # Also set up permissions for user `1001` RUN microdnf install curl ca-certificates ${JAVA_PACKAGE} \ diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/Serializer.java b/src/policy/src/main/java/org/etsi/tfs/policy/Serializer.java index 654e7b6ce1d68f6facaec8c772e16dde68e710f0..dfc93e9830993154bd90812632128b8dae788e39 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/Serializer.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/Serializer.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/SimpleLivenessCheck.java b/src/policy/src/main/java/org/etsi/tfs/policy/SimpleLivenessCheck.java index 31f5584ef475f4ec06d295c423480ecb3df3ef3d..b34f328f4830bc8e7fc9647ee3a0799612c949c4 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/SimpleLivenessCheck.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/SimpleLivenessCheck.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/SimpleReadinessCheck.java b/src/policy/src/main/java/org/etsi/tfs/policy/SimpleReadinessCheck.java index 83968b386836bbbe7e67b756077edd69ecada16b..000cf9d478d47f00711c7ffd3eff1fa8b84d3bc0 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/SimpleReadinessCheck.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/SimpleReadinessCheck.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclAction.java b/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclAction.java index 7d46f1d41dfa2a265501767a233fa8d7bdbb57f4..57baa1941d904f57b476a69643fe2f10ae15403e 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclAction.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclAction.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.acl; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclEntry.java b/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclEntry.java index a9d6e1fc8f7caac1e7e1f95d6a8228530cbf62d5..8e257153e92e473176dc352c7ac4412503a98d5d 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclEntry.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclEntry.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.acl; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclForwardActionEnum.java b/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclForwardActionEnum.java index d6c5654a54c258d69690b779657fd130dce31857..5cc2012612f342cb317b5e938b3e28b3fbf8ac0a 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclForwardActionEnum.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclForwardActionEnum.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.acl; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclLogActionEnum.java b/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclLogActionEnum.java index 135ff4336b499970f0b5a322787df775c170ab4e..3ee5b1e562157bddb8465caab03289c6b52fcf20 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclLogActionEnum.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclLogActionEnum.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.acl; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclMatch.java b/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclMatch.java index 6115f2d2f01d295f5cf3dc113e21661ec37aa57f..953241e5c1896a557a9c690ba05aa7f413f25aa1 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclMatch.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclMatch.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.acl; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclRuleSet.java b/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclRuleSet.java index e01c325fd8974854e0ea3d07c179618778e1f7fb..ee781cdd3c1ac02a5ca04a18858105dca1cfd03b 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclRuleSet.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclRuleSet.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.acl; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclRuleTypeEnum.java b/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclRuleTypeEnum.java index 2b6779f3ebc3e0563c99e3cea47d4c8de2b05f17..5e7c89e1ac65bf90217b4ce608d97970c33aac4f 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclRuleTypeEnum.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclRuleTypeEnum.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.acl; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/common/ApplicationProperties.java b/src/policy/src/main/java/org/etsi/tfs/policy/common/ApplicationProperties.java index 4b890485e854feaf093cb51141c2ed352c33cbd4..65a0a341906bb8dc1c15d1615947e0f9846d4ac9 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/common/ApplicationProperties.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/common/ApplicationProperties.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.common; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/common/Util.java b/src/policy/src/main/java/org/etsi/tfs/policy/common/Util.java index a3e5a318cc54323cabdd02626d157b95bb8ef480..27cb44916121358a017a61618429dc41b7d23d90 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/common/Util.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/common/Util.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.common; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/ContextGateway.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/ContextGateway.java index 126bad6115e79ae0befbfb3e4793931b8f26eecf..bbf5e79a60e92b6b6b11f689bab4549d60f53c81 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/ContextGateway.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/ContextGateway.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/ContextGatewayImpl.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/ContextGatewayImpl.java index 2484a586ec62e96c0621ab320cc8cbca59200d59..760d5e423b4f7cbf0ea7801e6ca04b5b24da2e31 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/ContextGatewayImpl.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/ContextGatewayImpl.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/ContextService.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/ContextService.java index 2d68d0c5e365d20672716e85f88f15f10419115c..643c2066edc5a005193a8ad46de840e823b2945f 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/ContextService.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/ContextService.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/ContextServiceImpl.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/ContextServiceImpl.java index c48feed649071c0627a06adc3d5e56d7e3f7273a..dacd5c6ae000a6e23746a573ba6ce2c64f7912b0 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/ContextServiceImpl.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/ContextServiceImpl.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigActionEnum.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigActionEnum.java index 83c90851641e3333d57a475f4370d993e07a065d..6c9ed3b5ca3afcc73b61ba61b58bc56c38c0df51 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigActionEnum.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigActionEnum.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRule.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRule.java index 4d9c366b5c6ed602d06d15525563d496280ebe9b..d121c13a5f646ff4c63070742ab9c620ddbd0925 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRule.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRule.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleAcl.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleAcl.java index bb0d4ebc9b809579a765aab61a7f3dfba30f3093..ef89bf9f2dcc2aa31908d8831845f749ea1d4c45 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleAcl.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleAcl.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleCustom.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleCustom.java index 2b7dc0eb58de0a534f355c3eafa87f4443933486..60e6f9a65e24d5777cb4847e79d0c584eece5911 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleCustom.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleCustom.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleType.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleType.java index 75542af1226ba40d5520ea88399b65faf60ba9ec..39319d8cafb3427019eeb413dd27eb6f157ac8bf 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleType.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleType.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleTypeAcl.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleTypeAcl.java index 8ac855e36c20b5b74e18162da7c28e7422f79566..6291b613121a040af56ba1085063cf859a875249 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleTypeAcl.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleTypeAcl.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleTypeCustom.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleTypeCustom.java index 40e0992f24f0f760459d1ba5b6fa7f1b2b6a1106..9f2b7c6069bb242bbe04b72527f8168a4c11fcca 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleTypeCustom.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleTypeCustom.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Constraint.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Constraint.java index 954360ad5b4e056e566693c8925049b58b5975e0..c692742185fe4db0050ba780e74b781d34e29774 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Constraint.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Constraint.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintCustom.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintCustom.java index 9708090e19e5db8c06af8db8c63a475b6d92ff88..9c1197fab39287bc43ced87046fb1a2aff73ab0b 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintCustom.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintCustom.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintEndPointLocation.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintEndPointLocation.java index 3554cbafc2567e8835253d8a6798e46c80b6f446..5fa1e652ada813ba04785d9536f647f2b1a82b33 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintEndPointLocation.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintEndPointLocation.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSchedule.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSchedule.java index c17aade1596c7dc4b65ca55f23845fe194a77fc2..9bcae65e91395f5e91a0a802d8c9b1d0eba6590a 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSchedule.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSchedule.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSlaAvailability.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSlaAvailability.java index b0d988aae9b1e41dc1f5cb42297ab32df3c86ea0..da4a2ebbd98685a9c701d7c962f9cae68da298d9 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSlaAvailability.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSlaAvailability.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSlaCapacity.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSlaCapacity.java index 4a1638d5177344f8426126fd4489ae2f7f5c10a7..f3d1dca1814ddd534d0715e4e687bd8606203fd9 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSlaCapacity.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSlaCapacity.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSlaIsolationLevel.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSlaIsolationLevel.java index f10b95e5ef0e4c3bac1d396954689d84eac339f5..523d339d79e9fc896aef22bfcc0eb81b5ceef5d4 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSlaIsolationLevel.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSlaIsolationLevel.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSlaLatency.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSlaLatency.java index 04ff65f4fc8c33ab4fb1520ff07cd7d65cbe18c9..b2c92b0dba2c9856ac1efd4d43a252a786cdf4b9 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSlaLatency.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSlaLatency.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintType.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintType.java index f302bac299e6c32e1a92eb73a49895585ffca132..7573fac94348e407d9e8341d655370f5f6ba0a3b 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintType.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintType.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeCustom.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeCustom.java index 675b3de188c76ce30523c27f99ca373dee3c6966..9199329f1e4b4d6b108880622ce243a665989477 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeCustom.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeCustom.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeEndPointLocation.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeEndPointLocation.java index 0832153e3c1d5aef9d253bab344e12cb16b5aaef..2bf23dfc42499d6dc97a01294761cafd25015b46 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeEndPointLocation.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeEndPointLocation.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSchedule.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSchedule.java index bead74a143ffaffed6467b2f7d57106134ec3249..6aff606463b23ae2c15f861914daa0cb6d9c6ce8 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSchedule.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSchedule.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSlaAvailability.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSlaAvailability.java index 89add927b596134c9c96b9f752e66590ddb4ff44..8e4a8aafb95ae84fc804ce1445e711dc1c19bc44 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSlaAvailability.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSlaAvailability.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSlaCapacity.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSlaCapacity.java index 08fe4684db7e9581dd250174a5c018095f404ce6..0c18eba23602b64e2e54db42e1e78b6e2d89d411 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSlaCapacity.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSlaCapacity.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSlaIsolationLevel.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSlaIsolationLevel.java index d60bf5e432fc5d7c116baf16a88d8ea3c0d5c37d..fe1d48a210121177975c1b2984394a9646c79a6d 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSlaIsolationLevel.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSlaIsolationLevel.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSlaLatency.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSlaLatency.java index 0ff1fb71f2d788dc5965f35d61b8f72fc47c9181..a7f6987470f2ca69fec9a41ed92f2682570136da 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSlaLatency.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSlaLatency.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Device.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Device.java index 20bdf807acffc80254afb7c952ea7f3c59f8d6f1..25021f9fdb90085ba570f614a6f0cd94282731d9 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Device.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Device.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/DeviceConfig.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/DeviceConfig.java index 08af313a362cf683a41cb8468e55fd684288c164..f7699d282b4ea25e9d53ac5fa9ea1b377be98780 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/DeviceConfig.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/DeviceConfig.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/DeviceDriverEnum.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/DeviceDriverEnum.java index 3273725afd41e3552bf71e3e0b1ee6c347512c6e..18e329daa27e41941506788e1e9d25aee62cd193 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/DeviceDriverEnum.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/DeviceDriverEnum.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/DeviceOperationalStatus.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/DeviceOperationalStatus.java index 60373f0bd3c7e8bdb525f0892e84a0f57d21c226..7e90851468ddb81e81a9f030d94483179cd8bf16 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/DeviceOperationalStatus.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/DeviceOperationalStatus.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Empty.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Empty.java index d1fd4b17a85f3081c11ad091d9d269171322c1e6..bd4471ff1df742f73e20f22aa1f4b4b556546f95 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Empty.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Empty.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/EndPoint.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/EndPoint.java index cf3ada8aadd9b3295ffb472165bc61478a44005d..83c6ab452ab29d03c8212f30ca5e98bdff3b2dd2 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/EndPoint.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/EndPoint.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/EndPointId.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/EndPointId.java index 674e1446bb22e15670722de18efeb784bc3a961b..a57c629263f6d63661a0cfff7b523d969a01c1ff 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/EndPointId.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/EndPointId.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Event.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Event.java index e1f649e00f37d110159256953fe3fb837d47b7b2..193634b2aea0f695890bc260ce32edbdac46658f 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Event.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Event.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/EventTypeEnum.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/EventTypeEnum.java index c613eefc59aaee553db9baa6b4eea5081ec64668..d2392f781e28a47bc32e5566274d8266d9c063d8 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/EventTypeEnum.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/EventTypeEnum.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/GpsPosition.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/GpsPosition.java index 58bc1647e700dbf27c505240dab28fffea368d1c..18c296bf4f00e17ddd18f9bd2490b8e5b9bf44f7 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/GpsPosition.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/GpsPosition.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/IsolationLevelEnum.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/IsolationLevelEnum.java index bf44270eb5d790fdc2398f66e6d58dbf91684985..e447b1adb8027743f0462288d54f73c8b758a741 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/IsolationLevelEnum.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/IsolationLevelEnum.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Location.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Location.java index c5a0dd22d244ddca76b591dd9b9828f12a68fb12..cef38e26b466a1f7d368e605ed22d83669a4ea84 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Location.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Location.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/LocationType.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/LocationType.java index 1c12ece116d921fcc09004864fe92d44a27f2eac..d42666fe528efe2e45dc3d5d946d975d637bb4f7 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/LocationType.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/LocationType.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/LocationTypeGpsPosition.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/LocationTypeGpsPosition.java index 0dbcc315a1af976a7e41163f6ef07f7c03c0358f..1486b54e61603b5da4345a5a2b44c96ddfcbd0f7 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/LocationTypeGpsPosition.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/LocationTypeGpsPosition.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/LocationTypeRegion.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/LocationTypeRegion.java index b7796fb53d6c75ad8caeda114ca8458a000f3b63..982ff994d5487b0a870c3732d618ade1547e2e57 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/LocationTypeRegion.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/LocationTypeRegion.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Service.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Service.java index 0c964b7da7160bbe4beb9d0ba326fc7e4036f931..6bf8f075950880bf52b95f75faae74abc05df9a1 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Service.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Service.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceConfig.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceConfig.java index 3b9dac9a967b6fbf3ff0bee42c91ba21fd01b904..ef07c126e2a4d642a61374d4aae2a856f352e452 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceConfig.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceConfig.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceId.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceId.java index f9d99c58530758ae087685f4bda6e3298075cc99..83583e1406847302aa718b2229901bc3b3cb9469 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceId.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceId.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceStatus.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceStatus.java index 72766be4232ca1b1a03b74eaaa6ce885187cec87..d18e0b6f9426ebc04f3487c312b3abe1aac1b442 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceStatus.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceStatus.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceStatusEnum.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceStatusEnum.java index 69688ab44a85932e8f1058b1bb0ff4fcd29a6ed0..737466203b12a8a7feef28e71cb2457bf641a9a1 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceStatusEnum.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceStatusEnum.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceTypeEnum.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceTypeEnum.java index 6df2f302c968dc8ebcb9525364b377f79f6db240..ef20e894c8b8dae35fa617e77d8f25860dda51a9 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceTypeEnum.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceTypeEnum.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/SliceId.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/SliceId.java index db2d04be58b61b69806ce32a9fd1f0c6e36e4d2a..f10caeac3c3244b9cc6725c70efa8acae05091e8 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/SliceId.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/SliceId.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/TopologyId.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/TopologyId.java index 34d0ba06a9ad4f210c7039d2d23dcd6e1b39956b..95075acddc48d637bfda4a139be7e2056f6f44db 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/TopologyId.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/TopologyId.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.context.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/device/DeviceGateway.java b/src/policy/src/main/java/org/etsi/tfs/policy/device/DeviceGateway.java index a3dc71113a60db4b8b0af14ccc09ee50a6a45d47..9b2774297dd0eca35e0b0c6bbc30405cc9188ad8 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/device/DeviceGateway.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/device/DeviceGateway.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.device; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/device/DeviceGatewayImpl.java b/src/policy/src/main/java/org/etsi/tfs/policy/device/DeviceGatewayImpl.java index 9bd63ee07e5d985d3e50b734521defa883194403..a5bbcdd97b96311db53df62373c8f783a9325af8 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/device/DeviceGatewayImpl.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/device/DeviceGatewayImpl.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.device; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/device/DeviceService.java b/src/policy/src/main/java/org/etsi/tfs/policy/device/DeviceService.java index dfba5ee76ac334051bb38963d51d87c345e05a30..561650f7320c3de239c7730c85e3012e1a60ca02 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/device/DeviceService.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/device/DeviceService.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.device; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/device/DeviceServiceImpl.java b/src/policy/src/main/java/org/etsi/tfs/policy/device/DeviceServiceImpl.java index 041631ce03ba99b0ba828d0547328708e6750949..c9fac12d749eadba46921f7560bade9424bbf222 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/device/DeviceServiceImpl.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/device/DeviceServiceImpl.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.device; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/exception/ExternalServiceFailureException.java b/src/policy/src/main/java/org/etsi/tfs/policy/exception/ExternalServiceFailureException.java index 8a070ce8947e5d0fb21ad54f72a6261c696d1fc9..20eaef68079374218779a7178fa7eae53b5afab1 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/exception/ExternalServiceFailureException.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/exception/ExternalServiceFailureException.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.exception; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/exception/GeneralExceptionHandler.java b/src/policy/src/main/java/org/etsi/tfs/policy/exception/GeneralExceptionHandler.java index 4e591aed9a99ff208b6704946c580e5478fb82d8..7ccb35f311737c3a9e5fb4574c5868bc64330337 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/exception/GeneralExceptionHandler.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/exception/GeneralExceptionHandler.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.exception; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/kpi_sample_types/model/KpiSampleType.java b/src/policy/src/main/java/org/etsi/tfs/policy/kpi_sample_types/model/KpiSampleType.java index 2c0e559a89402804bcc03975aed25258872dfd7a..4d457a0c3893f14b0a8a2cf7ecd193006053e0c9 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/kpi_sample_types/model/KpiSampleType.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/kpi_sample_types/model/KpiSampleType.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.kpi_sample_types.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/MonitoringGateway.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/MonitoringGateway.java index 29f535eee5f83b0e79496e134e75af9a48278763..2c169009e7954338706524c82f8798f60e453513 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/MonitoringGateway.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/MonitoringGateway.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.monitoring; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/MonitoringGatewayImpl.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/MonitoringGatewayImpl.java index 08026dae7cefc0a4fe21d37c1fc36f80420a908a..13ebaef2be98212cfb3eb1ed5780b7591f85eb68 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/MonitoringGatewayImpl.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/MonitoringGatewayImpl.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.monitoring; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/MonitoringService.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/MonitoringService.java index 091f6b795e5a96812f7e5e1d7d10a54e6f2a9fcf..bf8d00cdb4018de51abe19a11567a42c606b84b7 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/MonitoringService.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/MonitoringService.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.monitoring; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/MonitoringServiceImpl.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/MonitoringServiceImpl.java index 825758534d4fc37d711dbacfc3df2c6b636ef6f5..ba8736eb12b2fed89648a8b6cc32ff50f988b355 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/MonitoringServiceImpl.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/MonitoringServiceImpl.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.monitoring; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/AlarmDescriptor.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/AlarmDescriptor.java index 707537f3254ec8dd3e9e9f42b64baf52e584e416..297afe21ede48ad7ff0f11f8b29384c8f6a0c14f 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/AlarmDescriptor.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/AlarmDescriptor.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.monitoring.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/AlarmResponse.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/AlarmResponse.java index 408d1c833a903d9730b0ce17371b74a9582e86f2..429fd98f94aea45f27ea0b7680064b2e3a8ff1d4 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/AlarmResponse.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/AlarmResponse.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.monitoring.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/AlarmSubscription.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/AlarmSubscription.java index b50093870d7aefca58750e4edfe32c625de22495..a3c07ca8e752e295015ef2fe15ccc4b805e2438d 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/AlarmSubscription.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/AlarmSubscription.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.monitoring.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/BooleanKpiValue.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/BooleanKpiValue.java index 75adc4c769e8395c7e69404abb8456fbddf51447..e2f8463faa3afef31860a734e8275ae03f7358b3 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/BooleanKpiValue.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/BooleanKpiValue.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.monitoring.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/FloatKpiValue.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/FloatKpiValue.java index 57fdcef3c1379d2aeb1782744eb3d2d39c0f240d..9fc2e27a52750cd125a8b044f01e0498479e1cb1 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/FloatKpiValue.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/FloatKpiValue.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.monitoring.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/IntegerKpiValue.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/IntegerKpiValue.java index 19172a3819295b318ac0900cb47bec0761df4d1b..4b87d8a2c7a9e2af4cc26a1d1f0b5748809bfce4 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/IntegerKpiValue.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/IntegerKpiValue.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.monitoring.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/Kpi.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/Kpi.java index 10cfa3e1bbf846daf4c91d96c74fd5a2a49d5fbc..1485b9256726fa51d4d1622170c24d925219ea62 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/Kpi.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/Kpi.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.monitoring.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/KpiDescriptor.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/KpiDescriptor.java index c62c3926ccfd7d9fcb3bcc9a31a108c8830a0782..675c7d6a64dbe16c189134668474dcd9922ffda6 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/KpiDescriptor.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/KpiDescriptor.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.monitoring.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/KpiValue.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/KpiValue.java index 3a9d7d21409a032beedc11fd41c5d4a41de9a74c..4bd59af0592dd92b5b29d50114f53600c4bd79f5 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/KpiValue.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/KpiValue.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.monitoring.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/KpiValueRange.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/KpiValueRange.java index a7de600ce84dab44795337709b93997f4c0365e4..706244aae0ba25784a25e9aa4622a6c239d02121 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/KpiValueRange.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/KpiValueRange.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.monitoring.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/LongKpiValue.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/LongKpiValue.java index 4777a62d6fb9a52bfbe3c4df4f2bbb951970834a..c90adce90b729a54746965244d7c14dff3981660 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/LongKpiValue.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/LongKpiValue.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.monitoring.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/MonitorKpiRequest.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/MonitorKpiRequest.java index 6311118ca2cf6044a02eb108ee26b7d61e6feb6d..1aa2d3e2197d53bcdf0062addcb8e251bb6f9619 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/MonitorKpiRequest.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/MonitorKpiRequest.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.monitoring.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/StringKpiValue.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/StringKpiValue.java index 7d26911d481e72a16b6f15be6e4428ddda66ebb6..91b52576cf11cefc7abd059545d363bbff9358c5 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/StringKpiValue.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/StringKpiValue.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.monitoring.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/SubsDescriptor.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/SubsDescriptor.java index 247043f02fc035f4a34951877de44b7abcb035a6..9e8400d4684f475cd7a7fc4fcf546e0b0a457f6d 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/SubsDescriptor.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/SubsDescriptor.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.monitoring.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/SubsResponse.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/SubsResponse.java index 832d9278bbac0e6e0eefba131f637b1f42ccefac..be072120711536c437c764a0f74e4010151909e8 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/SubsResponse.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/SubsResponse.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.monitoring.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/AddPolicyDeviceImpl.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/AddPolicyDeviceImpl.java index 05109df421a085eeeb65b4e2de1bf4534f5e6332..08529a63aa09c582ca5b9b47d901ea8644814bdd 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/policy/AddPolicyDeviceImpl.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/AddPolicyDeviceImpl.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.policy; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/AddPolicyServiceImpl.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/AddPolicyServiceImpl.java index 77aa96d2652768382c1312393cb5be7cc22ac5ae..db9bb35d257c53b6254c2cd951f132970e2ab80d 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/policy/AddPolicyServiceImpl.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/AddPolicyServiceImpl.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.policy; @@ -22,13 +22,10 @@ import static org.etsi.tfs.policy.common.ApplicationProperties.VALIDATED_POLICYR import io.smallrye.mutiny.Uni; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; -import java.util.List; import org.etsi.tfs.policy.context.ContextService; import org.etsi.tfs.policy.context.model.ServiceId; import org.etsi.tfs.policy.exception.ExternalServiceFailureException; -import org.etsi.tfs.policy.monitoring.model.AlarmDescriptor; import org.etsi.tfs.policy.policy.model.PolicyRule; -import org.etsi.tfs.policy.policy.model.PolicyRuleBasic; import org.etsi.tfs.policy.policy.model.PolicyRuleService; import org.etsi.tfs.policy.policy.model.PolicyRuleState; import org.etsi.tfs.policy.policy.model.PolicyRuleStateEnum; @@ -38,14 +35,10 @@ import org.etsi.tfs.policy.policy.model.PolicyRuleTypeService; public class AddPolicyServiceImpl { @Inject private CommonPolicyServiceImpl commonPolicyService; - @Inject private CommonAlarmService commonAlarmService; @Inject private ContextService contextService; public Uni constructPolicyStateBasedOnCriteria( - Boolean isService, - ServiceId serviceId, - PolicyRuleService policyRuleService, - PolicyRuleBasic policyRuleBasic) { + Boolean isService, ServiceId serviceId, PolicyRuleService policyRuleService) { if (!isService) { var policyRuleState = @@ -57,36 +50,20 @@ public class AddPolicyServiceImpl { final var policyRuleTypeService = new PolicyRuleTypeService(policyRuleService); final var policyRule = new PolicyRule(policyRuleTypeService); - final var alarmDescriptorList = commonPolicyService.createAlarmDescriptorList(policyRule); - if (alarmDescriptorList.isEmpty()) { - var policyRuleState = - new PolicyRuleState( - PolicyRuleStateEnum.POLICY_FAILED, - String.format( - "Invalid PolicyRuleConditions in PolicyRule with ID: %s", - policyRuleBasic.getPolicyRuleId())); - return Uni.createFrom().item(policyRuleState); - } + final String kpiId = + policyRuleService.getPolicyRuleBasic().getPolicyRuleConditions().get(0).getKpiId(); + commonPolicyService.getKpiPolicyRuleServiceMap().put(kpiId, policyRuleService); - return setPolicyRuleOnContextAndReturnState(policyRule, policyRuleService, alarmDescriptorList); + return setPolicyRuleOnContextAndReturnState(policyRule); } - private Uni setPolicyRuleOnContextAndReturnState( - PolicyRule policyRule, - PolicyRuleService policyRuleService, - List alarmDescriptorList) { + private Uni setPolicyRuleOnContextAndReturnState(PolicyRule policyRule) { return contextService .setPolicyRule(policyRule) .onFailure() .transform(failure -> new ExternalServiceFailureException(failure.getMessage())) .onItem() - .transform( - policyId -> { - commonAlarmService.startMonitoringBasedOnAlarmDescriptors( - policyId, policyRuleService, alarmDescriptorList); - - return VALIDATED_POLICYRULE_STATE; - }); + .transform(policyId -> VALIDATED_POLICYRULE_STATE); } } diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/CommonAlarmService.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/CommonAlarmService.java index 9db561204b4e41e7429d12e663ae6dc321140ab1..9f6a7101fd6066978ed5f1ca05af98a9ecdcc712 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/policy/CommonAlarmService.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/CommonAlarmService.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.policy; @@ -99,12 +99,12 @@ public class CommonAlarmService { } /** - * Transform the alarmIds into promised alarms returned from the getAlarmResponseStream - * - * @param alarmIds the list of alarm ids - * @param policyRuleService the policy rule service - * @return - */ + * Transform the alarmIds into promised alarms returned from the getAlarmResponseStream + * + * @param alarmIds the list of alarm ids + * @param policyRuleService the policy rule service + * @return + */ private List> transformAlarmIds( List> alarmIds, PolicyRuleService policyRuleService) { List> alarmResponseStreamList = new ArrayList<>(); @@ -146,11 +146,11 @@ public class CommonAlarmService { } /** - * Create an alarmIds list that contains the promised ids returned from setKpiAlarm - * - * @param alarmDescriptorList the list of alarm descriptors - * @return the list of alarm descriptors - */ + * Create an alarmIds list that contains the promised ids returned from setKpiAlarm + * + * @param alarmDescriptorList the list of alarm descriptors + * @return the list of alarm descriptors + */ public List> createAlarmList(List alarmDescriptorList) { List> alarmIds = new ArrayList>(); for (AlarmDescriptor alarmDescriptor : alarmDescriptorList) { diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/CommonPolicyServiceImpl.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/CommonPolicyServiceImpl.java index f4d1f84a253a0f63f45ee3c2974668878037c293..b3c8d3568ecc0727fa4710aff6ad80f583e70600 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/policy/CommonPolicyServiceImpl.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/CommonPolicyServiceImpl.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.policy; @@ -77,7 +77,8 @@ public class CommonPolicyServiceImpl { // TODO: Find a better way to disregard alarms while reconfiguring path // Temporary solution for not calling the same rpc more than it's needed public static int noAlarms = 0; - + private ConcurrentHashMap kpiPolicyRuleServiceMap = + new ConcurrentHashMap<>(); private ConcurrentHashMap alarmPolicyRuleServiceMap = new ConcurrentHashMap<>(); private ConcurrentHashMap alarmPolicyRuleDeviceMap = @@ -89,6 +90,10 @@ public class CommonPolicyServiceImpl { return subscriptionList; } + public ConcurrentHashMap getKpiPolicyRuleServiceMap() { + return kpiPolicyRuleServiceMap; + } + public ConcurrentHashMap getAlarmPolicyRuleServiceMap() { return alarmPolicyRuleServiceMap; } @@ -111,6 +116,31 @@ public class CommonPolicyServiceImpl { return Long.valueOf(now).doubleValue(); } + public void applyActionServiceBasedOnKpiId(String kpiId) { + if (!kpiPolicyRuleServiceMap.containsKey(kpiId)) { + LOGGER.info("No Policy for KpiId"); + return; + } + + PolicyRuleService policyRuleService = kpiPolicyRuleServiceMap.get(kpiId); + PolicyRuleAction policyRuleAction = + policyRuleService.getPolicyRuleBasic().getPolicyRuleActions().get(0); + + setPolicyRuleServiceToContext(policyRuleService, ACTIVE_POLICYRULE_STATE); + + switch (policyRuleAction.getPolicyRuleActionEnum()) { + case POLICY_RULE_ACTION_ADD_SERVICE_CONSTRAINT: + addServiceConstraint(policyRuleService, policyRuleAction); + case POLICY_RULE_ACTION_ADD_SERVICE_CONFIGRULE: + addServiceConfigRule(policyRuleService, policyRuleAction); + case POLICY_RULE_ACTION_RECALCULATE_PATH: + callRecalculatePathRPC(policyRuleService, policyRuleAction); + default: + LOGGER.errorf(INVALID_MESSAGE, policyRuleAction.getPolicyRuleActionEnum()); + return; + } + } + public void applyActionService(String alarmId) { PolicyRuleService policyRuleService = alarmPolicyRuleServiceMap.get(alarmId); PolicyRuleAction policyRuleAction = diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/PolicyGateway.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/PolicyGateway.java index db01eb9df714023fd11e71beb32904a9fa0272ec..58e8f0c92c1d91f7cbf369d7d1275fd18168411c 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/policy/PolicyGateway.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/PolicyGateway.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.policy; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/PolicyGatewayImpl.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/PolicyGatewayImpl.java index d8ba0ca8d158858dd512b40bd0e97937edca9cd2..dd454b48bdb1365407df099d2201d2b727dd3ce7 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/policy/PolicyGatewayImpl.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/PolicyGatewayImpl.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.policy; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/PolicyService.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/PolicyService.java index 22cb203abea8899297b3aadf53c162fda252ed37..f9063cccaa975f8ca451738940738945ca2898bc 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/policy/PolicyService.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/PolicyService.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.policy; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/PolicyServiceImpl.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/PolicyServiceImpl.java index f2cc6f99a68351fba1a93af0880bc61eace74cbb..c2476e11b5b370c499c4bd8af725e4d71361fd9a 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/policy/PolicyServiceImpl.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/PolicyServiceImpl.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.policy; @@ -90,7 +90,7 @@ public class PolicyServiceImpl implements PolicyService { .transform( isService -> addPolicyServiceImpl.constructPolicyStateBasedOnCriteria( - isService, serviceId, policyRuleService, policyRuleBasic)) + isService, serviceId, policyRuleService)) .flatMap(Function.identity()); } diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/kafka/AlarmListener.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/kafka/AlarmListener.java new file mode 100644 index 0000000000000000000000000000000000000000..81cd6df4d9699f1ce5c7fda8956d336bec7a7c13 --- /dev/null +++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/kafka/AlarmListener.java @@ -0,0 +1,50 @@ +/* + * Copyright 2022-2024 ETSI OSG/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. + */ + +package org.etsi.tfs.policy.policy.kafka; + +import io.smallrye.reactive.messaging.annotations.Blocking; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; +import org.eclipse.microprofile.reactive.messaging.Incoming; +import org.etsi.tfs.policy.policy.CommonPolicyServiceImpl; +import org.etsi.tfs.policy.policy.model.AlarmTopicDTO; +import org.jboss.logging.Logger; + +@ApplicationScoped +public class AlarmListener { + private final CommonPolicyServiceImpl commonPolicyServiceImpl; + + private final Logger logger = Logger.getLogger(AlarmListener.class); + public static final String ALARM_TOPIC = "topic_alarms"; + + @Inject + public AlarmListener(CommonPolicyServiceImpl commonPolicyServiceImpl) { + this.commonPolicyServiceImpl = commonPolicyServiceImpl; + } + + @Incoming(ALARM_TOPIC) + @Blocking + public void receiveAlarm(AlarmTopicDTO alarmTopicDto) { + logger.infof("Received message for analytic service backend :\n %s", alarmTopicDto.toString()); + if (alarmTopicDto.isThresholdRaise() || alarmTopicDto.isThresholdFall()) { + logger.infof("**************************Received Alarm!**************************"); + logger.infof( + "Received Alarm for analytic service backend with kpiId: %s", alarmTopicDto.getKpiId()); + commonPolicyServiceImpl.applyActionServiceBasedOnKpiId(alarmTopicDto.getKpiId()); + } + } +} diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/kafka/TopicAlarmDeserializer.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/kafka/TopicAlarmDeserializer.java new file mode 100644 index 0000000000000000000000000000000000000000..5cf476c54aef2c65f98a7d54116d01c36a0aea54 --- /dev/null +++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/kafka/TopicAlarmDeserializer.java @@ -0,0 +1,26 @@ +/* + * Copyright 2022-2024 ETSI OSG/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. + */ + +package org.etsi.tfs.policy.policy.kafka; + +import io.quarkus.kafka.client.serialization.ObjectMapperDeserializer; +import org.etsi.tfs.policy.policy.model.AlarmTopicDTO; + +public class TopicAlarmDeserializer extends ObjectMapperDeserializer { + public TopicAlarmDeserializer() { + super(AlarmTopicDTO.class); + } +} diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/AlarmTopicDTO.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/AlarmTopicDTO.java new file mode 100644 index 0000000000000000000000000000000000000000..b26d53484d02495391367a5dbc45619ddac9c2e1 --- /dev/null +++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/AlarmTopicDTO.java @@ -0,0 +1,38 @@ +/* + * Copyright 2022-2024 ETSI OSG/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. + */ + +package org.etsi.tfs.policy.policy.model; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +@Data +public class AlarmTopicDTO { + + @JsonProperty("window_start") + private String windowStart; + + @JsonProperty("THRESHOLD_FALL") + private boolean thresholdFall; + + @JsonProperty("THRESHOLD_RAISE") + private boolean thresholdRaise; + + private String value; + + @JsonProperty("kpi_id") + private String kpiId; +} diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/BooleanOperator.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/BooleanOperator.java index a4f5ef12cd1197e4ba7e18937b12bb6c952e7f91..5c11f863445ecb98e8384ef1cc2d0f7685d87651 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/BooleanOperator.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/BooleanOperator.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.policy.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/NumericalOperator.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/NumericalOperator.java index bcb27cdaf162b0959ffbb68ce2c1737ece04412a..10d2476d33e62b36b7e57fb5487e4f3d22827e8b 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/NumericalOperator.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/NumericalOperator.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.policy.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRule.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRule.java index 423b3a05d1879b91728b469bccc21d4d3cf64fcb..a4d01ce960ea33efc3ab3c9e8f0cac1a0e302a70 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRule.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRule.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.policy.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleAction.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleAction.java index a84ceaf58141815f6bbc24d822985fd2df2001e8..7cb951b907d91ec00aab7b6a3a894ad91d9c0787 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleAction.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleAction.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.policy.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleActionConfig.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleActionConfig.java index 7399a3bfb2bde611a4d0ea99b4d1f9fd742aca84..004ff7bd19ac615d78762c9168c844249fdf4426 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleActionConfig.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleActionConfig.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.policy.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleActionEnum.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleActionEnum.java index 10bd7ec61bf8c839a248a420362bf248bd420e80..3d5e5e9b6a6be96e3bf76f15cc1e7a0ecd1c63d0 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleActionEnum.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleActionEnum.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.policy.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleBase.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleBase.java index d4cf83fc65a6569f12808850788f4caa0238fa47..e1f1fbecac90fd9567969a1379692e8f97de8778 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleBase.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleBase.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.policy.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleBasic.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleBasic.java index 085767bd19539f015de07c7850a29759b12f49d8..6a3b8602caaa8980130971029d19c13a8fe6309d 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleBasic.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleBasic.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.policy.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleCondition.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleCondition.java index f872e9980986dcb5ba8279f1c04a3d41f1a27791..697924f45cb5d8f4b5e67217ebc7d0230018a33f 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleCondition.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleCondition.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.policy.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleDevice.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleDevice.java index 2e7d93951b2b891eeec63c65cf7b6fdf08c2c813..205b3e1330d6e3b8926ceb0b4a73c5801e3af58e 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleDevice.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleDevice.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.policy.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleService.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleService.java index f10d4b58e9d74638c96d497d034b42927d84130e..07f3076e7801b703fe4024a2012c9543071af180 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleService.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleService.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.policy.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleState.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleState.java index 2e96d8d9c760c88d036208d43ba982842b52bb3b..d6ef07990e18606d7c5e4dd71a0492b55f6d64ce 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleState.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleState.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.policy.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleStateEnum.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleStateEnum.java index 95711def2f1f47d40079d21d241c433c9546a19b..b093d15d555df3a46788ba128be4ff9bb1a30977 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleStateEnum.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleStateEnum.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.policy.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleType.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleType.java index 5cb04c05c685b70e70b88f7595246aa49b00237a..24cf2d8961a51deae664087e2d55a482bc5cf7bf 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleType.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleType.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.policy.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleTypeDevice.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleTypeDevice.java index 476bba516df51c12ded9e628f83cf3710bb34c1e..326df220a0b1396bad4eca7d9a7c68751aecc621 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleTypeDevice.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleTypeDevice.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.policy.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleTypeService.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleTypeService.java index 1de46182267e1d8ed0c61be36f2ed638a52042bb..a684218df8e9ff9b1a599ecd351cc766372d67bd 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleTypeService.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/model/PolicyRuleTypeService.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.policy.model; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/service/PolicyRuleConditionFieldsGetter.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/service/PolicyRuleConditionFieldsGetter.java index cf58b9d6c46af9a7710f4daf436ccc62754e8139..c42fc081a71373ef0167421749aa47facd99f2f5 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/policy/service/PolicyRuleConditionFieldsGetter.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/service/PolicyRuleConditionFieldsGetter.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.policy.service; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/service/PolicyRuleConditionValidator.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/service/PolicyRuleConditionValidator.java index 090579fee16901ad1d427755be9fc330efad8ea7..c1947ae32edfbfd4ca7aa3b560150c63656b32aa 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/policy/service/PolicyRuleConditionValidator.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/service/PolicyRuleConditionValidator.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.policy.service; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/service/ServiceGateway.java b/src/policy/src/main/java/org/etsi/tfs/policy/service/ServiceGateway.java index 4e065132fe4805462386d55ffa2a6ee284778644..a4b39ef434b9b9a6f5c1466a386c921d55128e69 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/service/ServiceGateway.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/service/ServiceGateway.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.service; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/service/ServiceGatewayImpl.java b/src/policy/src/main/java/org/etsi/tfs/policy/service/ServiceGatewayImpl.java index fbf96534b892a84208ace947b9664a6e0a2833e2..0deb437ff3a9d852ee98a6c021c83e9fa9d7c3c5 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/service/ServiceGatewayImpl.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/service/ServiceGatewayImpl.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.service; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/service/ServiceService.java b/src/policy/src/main/java/org/etsi/tfs/policy/service/ServiceService.java index b6b05370f633568f0b294ef6672040431ec871d3..a6a7bf955387f47c7239e87cf45b54946a4bb780 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/service/ServiceService.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/service/ServiceService.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.service; diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/service/ServiceServiceImpl.java b/src/policy/src/main/java/org/etsi/tfs/policy/service/ServiceServiceImpl.java index 125dd144999661ef1b1fe86787f1e91772a09b8e..93fe9162fb288bd3f075b522db07e4a7f780da3c 100644 --- a/src/policy/src/main/java/org/etsi/tfs/policy/service/ServiceServiceImpl.java +++ b/src/policy/src/main/java/org/etsi/tfs/policy/service/ServiceServiceImpl.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy.service; diff --git a/src/policy/src/main/resources/application.yml b/src/policy/src/main/resources/application.yml index c006f5472d5d4fbd062f143988132fa62fa2c8ed..d0fca91427e5d0242db5abcd349ea1cdf9bb5364 100644 --- a/src/policy/src/main/resources/application.yml +++ b/src/policy/src/main/resources/application.yml @@ -63,6 +63,7 @@ quarkus: context-service-host: "contextservice" monitoring-service-host: "monitoringservice" service-service-host: "serviceservice" + kafka-broker-host: "kafka-service.kafka.svc.cluster.local" resources: requests: cpu: 50m @@ -71,3 +72,23 @@ quarkus: cpu: 500m memory: 2048Mi +#Disable Kafka on Test +"%test": + mp: + messaging: + connector: + smallrye-kafka: + enabled: false + +mp: + messaging: + incoming: + topic-alarms: + failure-strategy: ignore + connector: smallrye-kafka + topic: topic-alarms + value: + deserializer: org.etsi.tfs.policy.policy.kafka.TopicAlarmDeserializer +kafka: + bootstrap: + servers: ${quarkus.kubernetes.env.vars.kafka-broker-host}:9092 diff --git a/src/policy/src/test/java/org/etsi/tfs/policy/ConfigRuleTypeTest.java b/src/policy/src/test/java/org/etsi/tfs/policy/ConfigRuleTypeTest.java index 69e63ff4c399a6f8f4a11f38f23800d350b926c3..668a4a5fee2d377e79bb0a97c6f93e922b82ab93 100644 --- a/src/policy/src/test/java/org/etsi/tfs/policy/ConfigRuleTypeTest.java +++ b/src/policy/src/test/java/org/etsi/tfs/policy/ConfigRuleTypeTest.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy; diff --git a/src/policy/src/test/java/org/etsi/tfs/policy/ConstraintTypeTest.java b/src/policy/src/test/java/org/etsi/tfs/policy/ConstraintTypeTest.java index b6271469ace381eb647f083fe8dea3439040f202..0fd999ed491b9c42f3ec88f65029cce3fe4188d1 100644 --- a/src/policy/src/test/java/org/etsi/tfs/policy/ConstraintTypeTest.java +++ b/src/policy/src/test/java/org/etsi/tfs/policy/ConstraintTypeTest.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy; diff --git a/src/policy/src/test/java/org/etsi/tfs/policy/EndPointCreationTest.java b/src/policy/src/test/java/org/etsi/tfs/policy/EndPointCreationTest.java index 6542a593167a0ff1c5ff245d20fcabec564b57e2..6f02ee4bb3485280ae468115f1a8d90120299d4d 100644 --- a/src/policy/src/test/java/org/etsi/tfs/policy/EndPointCreationTest.java +++ b/src/policy/src/test/java/org/etsi/tfs/policy/EndPointCreationTest.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy; diff --git a/src/policy/src/test/java/org/etsi/tfs/policy/LocationTypeTest.java b/src/policy/src/test/java/org/etsi/tfs/policy/LocationTypeTest.java index ed4f5d712197106c5afeca04aa64543823778707..9072d7df0b7e058eac0852c8aafdb3603c9901e8 100644 --- a/src/policy/src/test/java/org/etsi/tfs/policy/LocationTypeTest.java +++ b/src/policy/src/test/java/org/etsi/tfs/policy/LocationTypeTest.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy; diff --git a/src/policy/src/test/java/org/etsi/tfs/policy/PolicyAddDeviceTest.java b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyAddDeviceTest.java index 91ed70a1687eacac35e08c28e0da0596e62df1de..03b6dee313c126f13c54a0a761417ab02161c0eb 100644 --- a/src/policy/src/test/java/org/etsi/tfs/policy/PolicyAddDeviceTest.java +++ b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyAddDeviceTest.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy; diff --git a/src/policy/src/test/java/org/etsi/tfs/policy/PolicyAddServiceTest.java b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyAddServiceTest.java index 398a8b5feea479ce7f70c8fe9dfed189802b1c82..1297ecd2a4b5a482496dc6afd6d988d1951031e6 100644 --- a/src/policy/src/test/java/org/etsi/tfs/policy/PolicyAddServiceTest.java +++ b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyAddServiceTest.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy; diff --git a/src/policy/src/test/java/org/etsi/tfs/policy/PolicyDeleteServiceTest.java b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyDeleteServiceTest.java index 464ff7fc800ee196459698de39e85a2666b29159..c2acd12f1fb9c24cb24d65b12688210c35022c9b 100644 --- a/src/policy/src/test/java/org/etsi/tfs/policy/PolicyDeleteServiceTest.java +++ b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyDeleteServiceTest.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy; diff --git a/src/policy/src/test/java/org/etsi/tfs/policy/PolicyGrpcServiceTest.java b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyGrpcServiceTest.java index a179ea710fa72fd63dec6336bd3ee1d4dc0cdb84..1d4bf0ad4ccfac43aeee295f368f6370ea27396d 100644 --- a/src/policy/src/test/java/org/etsi/tfs/policy/PolicyGrpcServiceTest.java +++ b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyGrpcServiceTest.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy; diff --git a/src/policy/src/test/java/org/etsi/tfs/policy/PolicyRuleBasicValidationTest.java b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyRuleBasicValidationTest.java index 06364ab2fc1bb2b842db8268354f98ddd6b366af..a2f7c5be8a855c56f7dd2b7afb0b3fd5d6e83c3b 100644 --- a/src/policy/src/test/java/org/etsi/tfs/policy/PolicyRuleBasicValidationTest.java +++ b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyRuleBasicValidationTest.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy; diff --git a/src/policy/src/test/java/org/etsi/tfs/policy/PolicyRuleConditionValidationTest.java b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyRuleConditionValidationTest.java index f442543676934a5866e9b0972adc53e384336b4a..9ff1935e003264667236bbe84735f3df7e7b5d77 100644 --- a/src/policy/src/test/java/org/etsi/tfs/policy/PolicyRuleConditionValidationTest.java +++ b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyRuleConditionValidationTest.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy; diff --git a/src/policy/src/test/java/org/etsi/tfs/policy/PolicyRuleDeviceValidationTest.java b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyRuleDeviceValidationTest.java index 57e350067fa44da1d59f4a972143b9ed07740ef9..8e40adc607564e600680ef9531e9569bd1cc7822 100644 --- a/src/policy/src/test/java/org/etsi/tfs/policy/PolicyRuleDeviceValidationTest.java +++ b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyRuleDeviceValidationTest.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy; diff --git a/src/policy/src/test/java/org/etsi/tfs/policy/PolicyRuleServiceValidationTest.java b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyRuleServiceValidationTest.java index e02af1e2aba9c276df6d2ec76d1cb4b8e44a5bd8..895f0ec3be9df5487bb89b1bbeb0ad7e637e0e9a 100644 --- a/src/policy/src/test/java/org/etsi/tfs/policy/PolicyRuleServiceValidationTest.java +++ b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyRuleServiceValidationTest.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy; diff --git a/src/policy/src/test/java/org/etsi/tfs/policy/PolicyUpdateDeviceTest.java b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyUpdateDeviceTest.java index f549eb0c63bd115e5b94ad2949ced89177ecc58a..f073e1a4e6368aa4f99e1bdb0a47532dfcddfada 100644 --- a/src/policy/src/test/java/org/etsi/tfs/policy/PolicyUpdateDeviceTest.java +++ b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyUpdateDeviceTest.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy; diff --git a/src/policy/src/test/java/org/etsi/tfs/policy/PolicyUpdateServiceTest.java b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyUpdateServiceTest.java index 4cf62695ac16c63eb5185356d93ed076391b5a4c..d403a7df256858096719c3abd7a7d2a10be1d9af 100644 --- a/src/policy/src/test/java/org/etsi/tfs/policy/PolicyUpdateServiceTest.java +++ b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyUpdateServiceTest.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy; diff --git a/src/policy/src/test/java/org/etsi/tfs/policy/SerializerTest.java b/src/policy/src/test/java/org/etsi/tfs/policy/SerializerTest.java index 9ebbfe762b0857ee314cb690775d01c052328024..911fcbdb9f3b2ab32c3586a8aa71662ec8923ef1 100644 --- a/src/policy/src/test/java/org/etsi/tfs/policy/SerializerTest.java +++ b/src/policy/src/test/java/org/etsi/tfs/policy/SerializerTest.java @@ -1,18 +1,18 @@ /* -* Copyright 2022-2024 ETSI OSG/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. -*/ + * Copyright 2022-2024 ETSI OSG/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. + */ package org.etsi.tfs.policy; diff --git a/src/policy/target/generated-sources/grpc/acl/Acl.java b/src/policy/target/generated-sources/grpc/acl/Acl.java index f1895fa7206642f8f8d6b63f5d2635fb68816f89..037bd385819e8b9db0d80186bf4e210d39ea8bed 100644 --- a/src/policy/target/generated-sources/grpc/acl/Acl.java +++ b/src/policy/target/generated-sources/grpc/acl/Acl.java @@ -459,6 +459,18 @@ public final class Acl { * @return The endMplsLabel. */ int getEndMplsLabel(); + + /** + * string tcp_flags = 9; + * @return The tcpFlags. + */ + java.lang.String getTcpFlags(); + + /** + * string tcp_flags = 9; + * @return The bytes for tcpFlags. + */ + com.google.protobuf.ByteString getTcpFlagsBytes(); } /** @@ -477,6 +489,7 @@ public final class Acl { private AclMatch() { srcAddress_ = ""; dstAddress_ = ""; + tcpFlags_ = ""; } @java.lang.Override @@ -485,86 +498,6 @@ public final class Acl { return new AclMatch(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private AclMatch(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 8: - { - dscp_ = input.readUInt32(); - break; - } - case 16: - { - protocol_ = input.readUInt32(); - break; - } - case 26: - { - java.lang.String s = input.readStringRequireUtf8(); - srcAddress_ = s; - break; - } - case 34: - { - java.lang.String s = input.readStringRequireUtf8(); - dstAddress_ = s; - break; - } - case 40: - { - srcPort_ = input.readUInt32(); - break; - } - case 48: - { - dstPort_ = input.readUInt32(); - break; - } - case 56: - { - startMplsLabel_ = input.readUInt32(); - break; - } - case 64: - { - endMplsLabel_ = input.readUInt32(); - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return acl.Acl.internal_static_acl_AclMatch_descriptor; } @@ -576,7 +509,7 @@ public final class Acl { public static final int DSCP_FIELD_NUMBER = 1; - private int dscp_; + private int dscp_ = 0; /** * uint32 dscp = 1; @@ -589,7 +522,7 @@ public final class Acl { public static final int PROTOCOL_FIELD_NUMBER = 2; - private int protocol_; + private int protocol_ = 0; /** * uint32 protocol = 2; @@ -602,7 +535,8 @@ public final class Acl { public static final int SRC_ADDRESS_FIELD_NUMBER = 3; - private volatile java.lang.Object srcAddress_; + @SuppressWarnings("serial") + private volatile java.lang.Object srcAddress_ = ""; /** * string src_address = 3; @@ -639,7 +573,8 @@ public final class Acl { public static final int DST_ADDRESS_FIELD_NUMBER = 4; - private volatile java.lang.Object dstAddress_; + @SuppressWarnings("serial") + private volatile java.lang.Object dstAddress_ = ""; /** * string dst_address = 4; @@ -676,7 +611,7 @@ public final class Acl { public static final int SRC_PORT_FIELD_NUMBER = 5; - private int srcPort_; + private int srcPort_ = 0; /** * uint32 src_port = 5; @@ -689,7 +624,7 @@ public final class Acl { public static final int DST_PORT_FIELD_NUMBER = 6; - private int dstPort_; + private int dstPort_ = 0; /** * uint32 dst_port = 6; @@ -702,7 +637,7 @@ public final class Acl { public static final int START_MPLS_LABEL_FIELD_NUMBER = 7; - private int startMplsLabel_; + private int startMplsLabel_ = 0; /** * uint32 start_mpls_label = 7; @@ -715,7 +650,7 @@ public final class Acl { public static final int END_MPLS_LABEL_FIELD_NUMBER = 8; - private int endMplsLabel_; + private int endMplsLabel_ = 0; /** * uint32 end_mpls_label = 8; @@ -726,6 +661,44 @@ public final class Acl { return endMplsLabel_; } + public static final int TCP_FLAGS_FIELD_NUMBER = 9; + + @SuppressWarnings("serial") + private volatile java.lang.Object tcpFlags_ = ""; + + /** + * string tcp_flags = 9; + * @return The tcpFlags. + */ + @java.lang.Override + public java.lang.String getTcpFlags() { + java.lang.Object ref = tcpFlags_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + tcpFlags_ = s; + return s; + } + } + + /** + * string tcp_flags = 9; + * @return The bytes for tcpFlags. + */ + @java.lang.Override + public com.google.protobuf.ByteString getTcpFlagsBytes() { + java.lang.Object ref = tcpFlags_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + tcpFlags_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -747,10 +720,10 @@ public final class Acl { if (protocol_ != 0) { output.writeUInt32(2, protocol_); } - if (!getSrcAddressBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcAddress_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 3, srcAddress_); } - if (!getDstAddressBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstAddress_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 4, dstAddress_); } if (srcPort_ != 0) { @@ -765,7 +738,10 @@ public final class Acl { if (endMplsLabel_ != 0) { output.writeUInt32(8, endMplsLabel_); } - unknownFields.writeTo(output); + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(tcpFlags_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 9, tcpFlags_); + } + getUnknownFields().writeTo(output); } @java.lang.Override @@ -780,10 +756,10 @@ public final class Acl { if (protocol_ != 0) { size += com.google.protobuf.CodedOutputStream.computeUInt32Size(2, protocol_); } - if (!getSrcAddressBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcAddress_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, srcAddress_); } - if (!getDstAddressBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstAddress_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, dstAddress_); } if (srcPort_ != 0) { @@ -798,7 +774,10 @@ public final class Acl { if (endMplsLabel_ != 0) { size += com.google.protobuf.CodedOutputStream.computeUInt32Size(8, endMplsLabel_); } - size += unknownFields.getSerializedSize(); + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(tcpFlags_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, tcpFlags_); + } + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -828,7 +807,9 @@ public final class Acl { return false; if (getEndMplsLabel() != other.getEndMplsLabel()) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getTcpFlags().equals(other.getTcpFlags())) + return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -856,7 +837,9 @@ public final class Acl { hash = (53 * hash) + getStartMplsLabel(); hash = (37 * hash) + END_MPLS_LABEL_FIELD_NUMBER; hash = (53 * hash) + getEndMplsLabel(); - hash = (29 * hash) + unknownFields.hashCode(); + hash = (37 * hash) + TCP_FLAGS_FIELD_NUMBER; + hash = (53 * hash) + getTcpFlags().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -950,22 +933,16 @@ public final class Acl { // Construct using acl.Acl.AclMatch.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); + bitField0_ = 0; dscp_ = 0; protocol_ = 0; srcAddress_ = ""; @@ -974,6 +951,7 @@ public final class Acl { dstPort_ = 0; startMplsLabel_ = 0; endMplsLabel_ = 0; + tcpFlags_ = ""; return this; } @@ -999,46 +977,42 @@ public final class Acl { @java.lang.Override public acl.Acl.AclMatch buildPartial() { acl.Acl.AclMatch result = new acl.Acl.AclMatch(this); - result.dscp_ = dscp_; - result.protocol_ = protocol_; - result.srcAddress_ = srcAddress_; - result.dstAddress_ = dstAddress_; - result.srcPort_ = srcPort_; - result.dstPort_ = dstPort_; - result.startMplsLabel_ = startMplsLabel_; - result.endMplsLabel_ = endMplsLabel_; + if (bitField0_ != 0) { + buildPartial0(result); + } onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(acl.Acl.AclMatch result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.dscp_ = dscp_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.protocol_ = protocol_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.srcAddress_ = srcAddress_; + } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.dstAddress_ = dstAddress_; + } + if (((from_bitField0_ & 0x00000010) != 0)) { + result.srcPort_ = srcPort_; + } + if (((from_bitField0_ & 0x00000020) != 0)) { + result.dstPort_ = dstPort_; + } + if (((from_bitField0_ & 0x00000040) != 0)) { + result.startMplsLabel_ = startMplsLabel_; + } + if (((from_bitField0_ & 0x00000080) != 0)) { + result.endMplsLabel_ = endMplsLabel_; + } + if (((from_bitField0_ & 0x00000100) != 0)) { + result.tcpFlags_ = tcpFlags_; + } } @java.lang.Override @@ -1062,10 +1036,12 @@ public final class Acl { } if (!other.getSrcAddress().isEmpty()) { srcAddress_ = other.srcAddress_; + bitField0_ |= 0x00000004; onChanged(); } if (!other.getDstAddress().isEmpty()) { dstAddress_ = other.dstAddress_; + bitField0_ |= 0x00000008; onChanged(); } if (other.getSrcPort() != 0) { @@ -1080,7 +1056,12 @@ public final class Acl { if (other.getEndMplsLabel() != 0) { setEndMplsLabel(other.getEndMplsLabel()); } - this.mergeUnknownFields(other.unknownFields); + if (!other.getTcpFlags().isEmpty()) { + tcpFlags_ = other.tcpFlags_; + bitField0_ |= 0x00000100; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -1092,20 +1073,103 @@ public final class Acl { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - acl.Acl.AclMatch parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 8: + { + dscp_ = input.readUInt32(); + bitField0_ |= 0x00000001; + break; + } + // case 8 + case 16: + { + protocol_ = input.readUInt32(); + bitField0_ |= 0x00000002; + break; + } + // case 16 + case 26: + { + srcAddress_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000004; + break; + } + // case 26 + case 34: + { + dstAddress_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000008; + break; + } + // case 34 + case 40: + { + srcPort_ = input.readUInt32(); + bitField0_ |= 0x00000010; + break; + } + // case 40 + case 48: + { + dstPort_ = input.readUInt32(); + bitField0_ |= 0x00000020; + break; + } + // case 48 + case 56: + { + startMplsLabel_ = input.readUInt32(); + bitField0_ |= 0x00000040; + break; + } + // case 56 + case 64: + { + endMplsLabel_ = input.readUInt32(); + bitField0_ |= 0x00000080; + break; + } + // case 64 + case 74: + { + tcpFlags_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000100; + break; + } + // case 74 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (acl.Acl.AclMatch) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } + private int bitField0_; + private int dscp_; /** @@ -1124,6 +1188,7 @@ public final class Acl { */ public Builder setDscp(int value) { dscp_ = value; + bitField0_ |= 0x00000001; onChanged(); return this; } @@ -1133,6 +1198,7 @@ public final class Acl { * @return This builder for chaining. */ public Builder clearDscp() { + bitField0_ = (bitField0_ & ~0x00000001); dscp_ = 0; onChanged(); return this; @@ -1156,6 +1222,7 @@ public final class Acl { */ public Builder setProtocol(int value) { protocol_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -1165,6 +1232,7 @@ public final class Acl { * @return This builder for chaining. */ public Builder clearProtocol() { + bitField0_ = (bitField0_ & ~0x00000002); protocol_ = 0; onChanged(); return this; @@ -1213,6 +1281,7 @@ public final class Acl { throw new NullPointerException(); } srcAddress_ = value; + bitField0_ |= 0x00000004; onChanged(); return this; } @@ -1223,6 +1292,7 @@ public final class Acl { */ public Builder clearSrcAddress() { srcAddress_ = getDefaultInstance().getSrcAddress(); + bitField0_ = (bitField0_ & ~0x00000004); onChanged(); return this; } @@ -1238,6 +1308,7 @@ public final class Acl { } checkByteStringIsUtf8(value); srcAddress_ = value; + bitField0_ |= 0x00000004; onChanged(); return this; } @@ -1285,6 +1356,7 @@ public final class Acl { throw new NullPointerException(); } dstAddress_ = value; + bitField0_ |= 0x00000008; onChanged(); return this; } @@ -1295,6 +1367,7 @@ public final class Acl { */ public Builder clearDstAddress() { dstAddress_ = getDefaultInstance().getDstAddress(); + bitField0_ = (bitField0_ & ~0x00000008); onChanged(); return this; } @@ -1310,6 +1383,7 @@ public final class Acl { } checkByteStringIsUtf8(value); dstAddress_ = value; + bitField0_ |= 0x00000008; onChanged(); return this; } @@ -1332,6 +1406,7 @@ public final class Acl { */ public Builder setSrcPort(int value) { srcPort_ = value; + bitField0_ |= 0x00000010; onChanged(); return this; } @@ -1341,6 +1416,7 @@ public final class Acl { * @return This builder for chaining. */ public Builder clearSrcPort() { + bitField0_ = (bitField0_ & ~0x00000010); srcPort_ = 0; onChanged(); return this; @@ -1364,6 +1440,7 @@ public final class Acl { */ public Builder setDstPort(int value) { dstPort_ = value; + bitField0_ |= 0x00000020; onChanged(); return this; } @@ -1373,6 +1450,7 @@ public final class Acl { * @return This builder for chaining. */ public Builder clearDstPort() { + bitField0_ = (bitField0_ & ~0x00000020); dstPort_ = 0; onChanged(); return this; @@ -1396,6 +1474,7 @@ public final class Acl { */ public Builder setStartMplsLabel(int value) { startMplsLabel_ = value; + bitField0_ |= 0x00000040; onChanged(); return this; } @@ -1405,6 +1484,7 @@ public final class Acl { * @return This builder for chaining. */ public Builder clearStartMplsLabel() { + bitField0_ = (bitField0_ & ~0x00000040); startMplsLabel_ = 0; onChanged(); return this; @@ -1428,6 +1508,7 @@ public final class Acl { */ public Builder setEndMplsLabel(int value) { endMplsLabel_ = value; + bitField0_ |= 0x00000080; onChanged(); return this; } @@ -1437,11 +1518,87 @@ public final class Acl { * @return This builder for chaining. */ public Builder clearEndMplsLabel() { + bitField0_ = (bitField0_ & ~0x00000080); endMplsLabel_ = 0; onChanged(); return this; } + private java.lang.Object tcpFlags_ = ""; + + /** + * string tcp_flags = 9; + * @return The tcpFlags. + */ + public java.lang.String getTcpFlags() { + java.lang.Object ref = tcpFlags_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + tcpFlags_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + + /** + * string tcp_flags = 9; + * @return The bytes for tcpFlags. + */ + public com.google.protobuf.ByteString getTcpFlagsBytes() { + java.lang.Object ref = tcpFlags_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + tcpFlags_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + * string tcp_flags = 9; + * @param value The tcpFlags to set. + * @return This builder for chaining. + */ + public Builder setTcpFlags(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + tcpFlags_ = value; + bitField0_ |= 0x00000100; + onChanged(); + return this; + } + + /** + * string tcp_flags = 9; + * @return This builder for chaining. + */ + public Builder clearTcpFlags() { + tcpFlags_ = getDefaultInstance().getTcpFlags(); + bitField0_ = (bitField0_ & ~0x00000100); + onChanged(); + return this; + } + + /** + * string tcp_flags = 9; + * @param value The bytes for tcpFlags to set. + * @return This builder for chaining. + */ + public Builder setTcpFlagsBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + tcpFlags_ = value; + bitField0_ |= 0x00000100; + onChanged(); + return this; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); @@ -1469,7 +1626,17 @@ public final class Acl { @java.lang.Override public AclMatch parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new AclMatch(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -1540,56 +1707,6 @@ public final class Acl { return new AclAction(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private AclAction(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 8: - { - int rawValue = input.readEnum(); - forwardAction_ = rawValue; - break; - } - case 16: - { - int rawValue = input.readEnum(); - logAction_ = rawValue; - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return acl.Acl.internal_static_acl_AclAction_descriptor; } @@ -1601,7 +1718,7 @@ public final class Acl { public static final int FORWARD_ACTION_FIELD_NUMBER = 1; - private int forwardAction_; + private int forwardAction_ = 0; /** * .acl.AclForwardActionEnum forward_action = 1; @@ -1618,14 +1735,13 @@ public final class Acl { */ @java.lang.Override public acl.Acl.AclForwardActionEnum getForwardAction() { - @SuppressWarnings("deprecation") - acl.Acl.AclForwardActionEnum result = acl.Acl.AclForwardActionEnum.valueOf(forwardAction_); + acl.Acl.AclForwardActionEnum result = acl.Acl.AclForwardActionEnum.forNumber(forwardAction_); return result == null ? acl.Acl.AclForwardActionEnum.UNRECOGNIZED : result; } public static final int LOG_ACTION_FIELD_NUMBER = 2; - private int logAction_; + private int logAction_ = 0; /** * .acl.AclLogActionEnum log_action = 2; @@ -1642,8 +1758,7 @@ public final class Acl { */ @java.lang.Override public acl.Acl.AclLogActionEnum getLogAction() { - @SuppressWarnings("deprecation") - acl.Acl.AclLogActionEnum result = acl.Acl.AclLogActionEnum.valueOf(logAction_); + acl.Acl.AclLogActionEnum result = acl.Acl.AclLogActionEnum.forNumber(logAction_); return result == null ? acl.Acl.AclLogActionEnum.UNRECOGNIZED : result; } @@ -1668,7 +1783,7 @@ public final class Acl { if (logAction_ != acl.Acl.AclLogActionEnum.ACLLOGACTION_UNDEFINED.getNumber()) { output.writeEnum(2, logAction_); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -1683,7 +1798,7 @@ public final class Acl { if (logAction_ != acl.Acl.AclLogActionEnum.ACLLOGACTION_UNDEFINED.getNumber()) { size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, logAction_); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -1701,7 +1816,7 @@ public final class Acl { return false; if (logAction_ != other.logAction_) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -1717,7 +1832,7 @@ public final class Acl { hash = (53 * hash) + forwardAction_; hash = (37 * hash) + LOG_ACTION_FIELD_NUMBER; hash = (53 * hash) + logAction_; - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -1811,22 +1926,16 @@ public final class Acl { // Construct using acl.Acl.AclAction.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); + bitField0_ = 0; forwardAction_ = 0; logAction_ = 0; return this; @@ -1854,40 +1963,21 @@ public final class Acl { @java.lang.Override public acl.Acl.AclAction buildPartial() { acl.Acl.AclAction result = new acl.Acl.AclAction(this); - result.forwardAction_ = forwardAction_; - result.logAction_ = logAction_; + if (bitField0_ != 0) { + buildPartial0(result); + } onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(acl.Acl.AclAction result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.forwardAction_ = forwardAction_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.logAction_ = logAction_; + } } @java.lang.Override @@ -1909,7 +1999,7 @@ public final class Acl { if (other.logAction_ != 0) { setLogActionValue(other.getLogActionValue()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -1921,20 +2011,54 @@ public final class Acl { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - acl.Acl.AclAction parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 8: + { + forwardAction_ = input.readEnum(); + bitField0_ |= 0x00000001; + break; + } + // case 8 + case 16: + { + logAction_ = input.readEnum(); + bitField0_ |= 0x00000002; + break; + } + // case 16 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (acl.Acl.AclAction) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } + private int bitField0_; + private int forwardAction_ = 0; /** @@ -1953,6 +2077,7 @@ public final class Acl { */ public Builder setForwardActionValue(int value) { forwardAction_ = value; + bitField0_ |= 0x00000001; onChanged(); return this; } @@ -1963,8 +2088,7 @@ public final class Acl { */ @java.lang.Override public acl.Acl.AclForwardActionEnum getForwardAction() { - @SuppressWarnings("deprecation") - acl.Acl.AclForwardActionEnum result = acl.Acl.AclForwardActionEnum.valueOf(forwardAction_); + acl.Acl.AclForwardActionEnum result = acl.Acl.AclForwardActionEnum.forNumber(forwardAction_); return result == null ? acl.Acl.AclForwardActionEnum.UNRECOGNIZED : result; } @@ -1977,6 +2101,7 @@ public final class Acl { if (value == null) { throw new NullPointerException(); } + bitField0_ |= 0x00000001; forwardAction_ = value.getNumber(); onChanged(); return this; @@ -1987,6 +2112,7 @@ public final class Acl { * @return This builder for chaining. */ public Builder clearForwardAction() { + bitField0_ = (bitField0_ & ~0x00000001); forwardAction_ = 0; onChanged(); return this; @@ -2010,6 +2136,7 @@ public final class Acl { */ public Builder setLogActionValue(int value) { logAction_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -2020,8 +2147,7 @@ public final class Acl { */ @java.lang.Override public acl.Acl.AclLogActionEnum getLogAction() { - @SuppressWarnings("deprecation") - acl.Acl.AclLogActionEnum result = acl.Acl.AclLogActionEnum.valueOf(logAction_); + acl.Acl.AclLogActionEnum result = acl.Acl.AclLogActionEnum.forNumber(logAction_); return result == null ? acl.Acl.AclLogActionEnum.UNRECOGNIZED : result; } @@ -2034,6 +2160,7 @@ public final class Acl { if (value == null) { throw new NullPointerException(); } + bitField0_ |= 0x00000002; logAction_ = value.getNumber(); onChanged(); return this; @@ -2044,6 +2171,7 @@ public final class Acl { * @return This builder for chaining. */ public Builder clearLogAction() { + bitField0_ = (bitField0_ & ~0x00000002); logAction_ = 0; onChanged(); return this; @@ -2076,7 +2204,17 @@ public final class Acl { @java.lang.Override public AclAction parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new AclAction(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -2174,81 +2312,6 @@ public final class Acl { return new AclEntry(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private AclEntry(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 8: - { - sequenceId_ = input.readUInt32(); - break; - } - case 18: - { - java.lang.String s = input.readStringRequireUtf8(); - description_ = s; - break; - } - case 26: - { - acl.Acl.AclMatch.Builder subBuilder = null; - if (match_ != null) { - subBuilder = match_.toBuilder(); - } - match_ = input.readMessage(acl.Acl.AclMatch.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(match_); - match_ = subBuilder.buildPartial(); - } - break; - } - case 34: - { - acl.Acl.AclAction.Builder subBuilder = null; - if (action_ != null) { - subBuilder = action_.toBuilder(); - } - action_ = input.readMessage(acl.Acl.AclAction.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(action_); - action_ = subBuilder.buildPartial(); - } - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return acl.Acl.internal_static_acl_AclEntry_descriptor; } @@ -2260,7 +2323,7 @@ public final class Acl { public static final int SEQUENCE_ID_FIELD_NUMBER = 1; - private int sequenceId_; + private int sequenceId_ = 0; /** * uint32 sequence_id = 1; @@ -2273,7 +2336,8 @@ public final class Acl { public static final int DESCRIPTION_FIELD_NUMBER = 2; - private volatile java.lang.Object description_; + @SuppressWarnings("serial") + private volatile java.lang.Object description_ = ""; /** * string description = 2; @@ -2335,7 +2399,7 @@ public final class Acl { */ @java.lang.Override public acl.Acl.AclMatchOrBuilder getMatchOrBuilder() { - return getMatch(); + return match_ == null ? acl.Acl.AclMatch.getDefaultInstance() : match_; } public static final int ACTION_FIELD_NUMBER = 4; @@ -2365,7 +2429,7 @@ public final class Acl { */ @java.lang.Override public acl.Acl.AclActionOrBuilder getActionOrBuilder() { - return getAction(); + return action_ == null ? acl.Acl.AclAction.getDefaultInstance() : action_; } private byte memoizedIsInitialized = -1; @@ -2386,7 +2450,7 @@ public final class Acl { if (sequenceId_ != 0) { output.writeUInt32(1, sequenceId_); } - if (!getDescriptionBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 2, description_); } if (match_ != null) { @@ -2395,7 +2459,7 @@ public final class Acl { if (action_ != null) { output.writeMessage(4, getAction()); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -2407,7 +2471,7 @@ public final class Acl { if (sequenceId_ != 0) { size += com.google.protobuf.CodedOutputStream.computeUInt32Size(1, sequenceId_); } - if (!getDescriptionBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, description_); } if (match_ != null) { @@ -2416,7 +2480,7 @@ public final class Acl { if (action_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getAction()); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -2446,7 +2510,7 @@ public final class Acl { if (!getAction().equals(other.getAction())) return false; } - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -2470,7 +2534,7 @@ public final class Acl { hash = (37 * hash) + ACTION_FIELD_NUMBER; hash = (53 * hash) + getAction().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -2564,34 +2628,26 @@ public final class Acl { // Construct using acl.Acl.AclEntry.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); + bitField0_ = 0; sequenceId_ = 0; description_ = ""; - if (matchBuilder_ == null) { - match_ = null; - } else { - match_ = null; + match_ = null; + if (matchBuilder_ != null) { + matchBuilder_.dispose(); matchBuilder_ = null; } - if (actionBuilder_ == null) { - action_ = null; - } else { - action_ = null; + action_ = null; + if (actionBuilder_ != null) { + actionBuilder_.dispose(); actionBuilder_ = null; } return this; @@ -2619,50 +2675,27 @@ public final class Acl { @java.lang.Override public acl.Acl.AclEntry buildPartial() { acl.Acl.AclEntry result = new acl.Acl.AclEntry(this); - result.sequenceId_ = sequenceId_; - result.description_ = description_; - if (matchBuilder_ == null) { - result.match_ = match_; - } else { - result.match_ = matchBuilder_.build(); - } - if (actionBuilder_ == null) { - result.action_ = action_; - } else { - result.action_ = actionBuilder_.build(); + if (bitField0_ != 0) { + buildPartial0(result); } onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(acl.Acl.AclEntry result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.sequenceId_ = sequenceId_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.description_ = description_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.match_ = matchBuilder_ == null ? match_ : matchBuilder_.build(); + } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.action_ = actionBuilder_ == null ? action_ : actionBuilder_.build(); + } } @java.lang.Override @@ -2683,6 +2716,7 @@ public final class Acl { } if (!other.getDescription().isEmpty()) { description_ = other.description_; + bitField0_ |= 0x00000002; onChanged(); } if (other.hasMatch()) { @@ -2691,7 +2725,7 @@ public final class Acl { if (other.hasAction()) { mergeAction(other.getAction()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -2703,20 +2737,68 @@ public final class Acl { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - acl.Acl.AclEntry parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 8: + { + sequenceId_ = input.readUInt32(); + bitField0_ |= 0x00000001; + break; + } + // case 8 + case 18: + { + description_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } + // case 18 + case 26: + { + input.readMessage(getMatchFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000004; + break; + } + // case 26 + case 34: + { + input.readMessage(getActionFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000008; + break; + } + // case 34 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (acl.Acl.AclEntry) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } + private int bitField0_; + private int sequenceId_; /** @@ -2735,6 +2817,7 @@ public final class Acl { */ public Builder setSequenceId(int value) { sequenceId_ = value; + bitField0_ |= 0x00000001; onChanged(); return this; } @@ -2744,6 +2827,7 @@ public final class Acl { * @return This builder for chaining. */ public Builder clearSequenceId() { + bitField0_ = (bitField0_ & ~0x00000001); sequenceId_ = 0; onChanged(); return this; @@ -2792,6 +2876,7 @@ public final class Acl { throw new NullPointerException(); } description_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -2802,6 +2887,7 @@ public final class Acl { */ public Builder clearDescription() { description_ = getDefaultInstance().getDescription(); + bitField0_ = (bitField0_ & ~0x00000002); onChanged(); return this; } @@ -2817,6 +2903,7 @@ public final class Acl { } checkByteStringIsUtf8(value); description_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -2830,7 +2917,7 @@ public final class Acl { * @return Whether the match field is set. */ public boolean hasMatch() { - return matchBuilder_ != null || match_ != null; + return ((bitField0_ & 0x00000004) != 0); } /** @@ -2854,10 +2941,11 @@ public final class Acl { throw new NullPointerException(); } match_ = value; - onChanged(); } else { matchBuilder_.setMessage(value); } + bitField0_ |= 0x00000004; + onChanged(); return this; } @@ -2867,10 +2955,11 @@ public final class Acl { public Builder setMatch(acl.Acl.AclMatch.Builder builderForValue) { if (matchBuilder_ == null) { match_ = builderForValue.build(); - onChanged(); } else { matchBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000004; + onChanged(); return this; } @@ -2879,15 +2968,16 @@ public final class Acl { */ public Builder mergeMatch(acl.Acl.AclMatch value) { if (matchBuilder_ == null) { - if (match_ != null) { - match_ = acl.Acl.AclMatch.newBuilder(match_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000004) != 0) && match_ != null && match_ != acl.Acl.AclMatch.getDefaultInstance()) { + getMatchBuilder().mergeFrom(value); } else { match_ = value; } - onChanged(); } else { matchBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000004; + onChanged(); return this; } @@ -2895,13 +2985,13 @@ public final class Acl { * .acl.AclMatch match = 3; */ public Builder clearMatch() { - if (matchBuilder_ == null) { - match_ = null; - onChanged(); - } else { - match_ = null; + bitField0_ = (bitField0_ & ~0x00000004); + match_ = null; + if (matchBuilder_ != null) { + matchBuilder_.dispose(); matchBuilder_ = null; } + onChanged(); return this; } @@ -2909,6 +2999,7 @@ public final class Acl { * .acl.AclMatch match = 3; */ public acl.Acl.AclMatch.Builder getMatchBuilder() { + bitField0_ |= 0x00000004; onChanged(); return getMatchFieldBuilder().getBuilder(); } @@ -2944,7 +3035,7 @@ public final class Acl { * @return Whether the action field is set. */ public boolean hasAction() { - return actionBuilder_ != null || action_ != null; + return ((bitField0_ & 0x00000008) != 0); } /** @@ -2968,10 +3059,11 @@ public final class Acl { throw new NullPointerException(); } action_ = value; - onChanged(); } else { actionBuilder_.setMessage(value); } + bitField0_ |= 0x00000008; + onChanged(); return this; } @@ -2981,10 +3073,11 @@ public final class Acl { public Builder setAction(acl.Acl.AclAction.Builder builderForValue) { if (actionBuilder_ == null) { action_ = builderForValue.build(); - onChanged(); } else { actionBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000008; + onChanged(); return this; } @@ -2993,15 +3086,16 @@ public final class Acl { */ public Builder mergeAction(acl.Acl.AclAction value) { if (actionBuilder_ == null) { - if (action_ != null) { - action_ = acl.Acl.AclAction.newBuilder(action_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000008) != 0) && action_ != null && action_ != acl.Acl.AclAction.getDefaultInstance()) { + getActionBuilder().mergeFrom(value); } else { action_ = value; } - onChanged(); } else { actionBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000008; + onChanged(); return this; } @@ -3009,13 +3103,13 @@ public final class Acl { * .acl.AclAction action = 4; */ public Builder clearAction() { - if (actionBuilder_ == null) { - action_ = null; - onChanged(); - } else { - action_ = null; + bitField0_ = (bitField0_ & ~0x00000008); + action_ = null; + if (actionBuilder_ != null) { + actionBuilder_.dispose(); actionBuilder_ = null; } + onChanged(); return this; } @@ -3023,6 +3117,7 @@ public final class Acl { * .acl.AclAction action = 4; */ public acl.Acl.AclAction.Builder getActionBuilder() { + bitField0_ |= 0x00000008; onChanged(); return getActionFieldBuilder().getBuilder(); } @@ -3076,7 +3171,17 @@ public final class Acl { @java.lang.Override public AclEntry parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new AclEntry(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -3199,81 +3304,6 @@ public final class Acl { return new AclRuleSet(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private AclRuleSet(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - java.lang.String s = input.readStringRequireUtf8(); - name_ = s; - break; - } - case 16: - { - int rawValue = input.readEnum(); - type_ = rawValue; - break; - } - case 26: - { - java.lang.String s = input.readStringRequireUtf8(); - description_ = s; - break; - } - case 34: - { - java.lang.String s = input.readStringRequireUtf8(); - userId_ = s; - break; - } - case 42: - { - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - entries_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; - } - entries_.add(input.readMessage(acl.Acl.AclEntry.parser(), extensionRegistry)); - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000001) != 0)) { - entries_ = java.util.Collections.unmodifiableList(entries_); - } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return acl.Acl.internal_static_acl_AclRuleSet_descriptor; } @@ -3285,7 +3315,8 @@ public final class Acl { public static final int NAME_FIELD_NUMBER = 1; - private volatile java.lang.Object name_; + @SuppressWarnings("serial") + private volatile java.lang.Object name_ = ""; /** * string name = 1; @@ -3322,7 +3353,7 @@ public final class Acl { public static final int TYPE_FIELD_NUMBER = 2; - private int type_; + private int type_ = 0; /** * .acl.AclRuleTypeEnum type = 2; @@ -3339,14 +3370,14 @@ public final class Acl { */ @java.lang.Override public acl.Acl.AclRuleTypeEnum getType() { - @SuppressWarnings("deprecation") - acl.Acl.AclRuleTypeEnum result = acl.Acl.AclRuleTypeEnum.valueOf(type_); + acl.Acl.AclRuleTypeEnum result = acl.Acl.AclRuleTypeEnum.forNumber(type_); return result == null ? acl.Acl.AclRuleTypeEnum.UNRECOGNIZED : result; } public static final int DESCRIPTION_FIELD_NUMBER = 3; - private volatile java.lang.Object description_; + @SuppressWarnings("serial") + private volatile java.lang.Object description_ = ""; /** * string description = 3; @@ -3383,7 +3414,8 @@ public final class Acl { public static final int USER_ID_FIELD_NUMBER = 4; - private volatile java.lang.Object userId_; + @SuppressWarnings("serial") + private volatile java.lang.Object userId_ = ""; /** * string user_id = 4; @@ -3420,6 +3452,7 @@ public final class Acl { public static final int ENTRIES_FIELD_NUMBER = 5; + @SuppressWarnings("serial") private java.util.List entries_; /** @@ -3477,22 +3510,22 @@ public final class Acl { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - if (!getNameBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_); } if (type_ != acl.Acl.AclRuleTypeEnum.ACLRULETYPE_UNDEFINED.getNumber()) { output.writeEnum(2, type_); } - if (!getDescriptionBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 3, description_); } - if (!getUserIdBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(userId_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 4, userId_); } for (int i = 0; i < entries_.size(); i++) { output.writeMessage(5, entries_.get(i)); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -3501,22 +3534,22 @@ public final class Acl { if (size != -1) return size; size = 0; - if (!getNameBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_); } if (type_ != acl.Acl.AclRuleTypeEnum.ACLRULETYPE_UNDEFINED.getNumber()) { size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, type_); } - if (!getDescriptionBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, description_); } - if (!getUserIdBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(userId_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, userId_); } for (int i = 0; i < entries_.size(); i++) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, entries_.get(i)); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -3540,7 +3573,7 @@ public final class Acl { return false; if (!getEntriesList().equals(other.getEntriesList())) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -3564,7 +3597,7 @@ public final class Acl { hash = (37 * hash) + ENTRIES_FIELD_NUMBER; hash = (53 * hash) + getEntriesList().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -3658,33 +3691,27 @@ public final class Acl { // Construct using acl.Acl.AclRuleSet.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - getEntriesFieldBuilder(); - } } @java.lang.Override public Builder clear() { super.clear(); + bitField0_ = 0; name_ = ""; type_ = 0; description_ = ""; userId_ = ""; if (entriesBuilder_ == null) { entries_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); } else { + entries_ = null; entriesBuilder_.clear(); } + bitField0_ = (bitField0_ & ~0x00000010); return this; } @@ -3710,52 +3737,40 @@ public final class Acl { @java.lang.Override public acl.Acl.AclRuleSet buildPartial() { acl.Acl.AclRuleSet result = new acl.Acl.AclRuleSet(this); - int from_bitField0_ = bitField0_; - result.name_ = name_; - result.type_ = type_; - result.description_ = description_; - result.userId_ = userId_; + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(acl.Acl.AclRuleSet result) { if (entriesBuilder_ == null) { - if (((bitField0_ & 0x00000001) != 0)) { + if (((bitField0_ & 0x00000010) != 0)) { entries_ = java.util.Collections.unmodifiableList(entries_); - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000010); } result.entries_ = entries_; } else { result.entries_ = entriesBuilder_.build(); } - onBuilt(); - return result; - } - - @java.lang.Override - public Builder clone() { - return super.clone(); } - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(acl.Acl.AclRuleSet result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.name_ = name_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.type_ = type_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.description_ = description_; + } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.userId_ = userId_; + } } @java.lang.Override @@ -3773,6 +3788,7 @@ public final class Acl { return this; if (!other.getName().isEmpty()) { name_ = other.name_; + bitField0_ |= 0x00000001; onChanged(); } if (other.type_ != 0) { @@ -3780,17 +3796,19 @@ public final class Acl { } if (!other.getDescription().isEmpty()) { description_ = other.description_; + bitField0_ |= 0x00000004; onChanged(); } if (!other.getUserId().isEmpty()) { userId_ = other.userId_; + bitField0_ |= 0x00000008; onChanged(); } if (entriesBuilder_ == null) { if (!other.entries_.isEmpty()) { if (entries_.isEmpty()) { entries_ = other.entries_; - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000010); } else { ensureEntriesIsMutable(); entries_.addAll(other.entries_); @@ -3803,14 +3821,14 @@ public final class Acl { entriesBuilder_.dispose(); entriesBuilder_ = null; entries_ = other.entries_; - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000010); entriesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getEntriesFieldBuilder() : null; } else { entriesBuilder_.addAllMessages(other.entries_); } } } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -3822,17 +3840,75 @@ public final class Acl { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - acl.Acl.AclRuleSet parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + name_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 16: + { + type_ = input.readEnum(); + bitField0_ |= 0x00000002; + break; + } + // case 16 + case 26: + { + description_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000004; + break; + } + // case 26 + case 34: + { + userId_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000008; + break; + } + // case 34 + case 42: + { + acl.Acl.AclEntry m = input.readMessage(acl.Acl.AclEntry.parser(), extensionRegistry); + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + entries_.add(m); + } else { + entriesBuilder_.addMessage(m); + } + break; + } + // case 42 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (acl.Acl.AclRuleSet) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } @@ -3881,6 +3957,7 @@ public final class Acl { throw new NullPointerException(); } name_ = value; + bitField0_ |= 0x00000001; onChanged(); return this; } @@ -3891,6 +3968,7 @@ public final class Acl { */ public Builder clearName() { name_ = getDefaultInstance().getName(); + bitField0_ = (bitField0_ & ~0x00000001); onChanged(); return this; } @@ -3906,6 +3984,7 @@ public final class Acl { } checkByteStringIsUtf8(value); name_ = value; + bitField0_ |= 0x00000001; onChanged(); return this; } @@ -3928,6 +4007,7 @@ public final class Acl { */ public Builder setTypeValue(int value) { type_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -3938,8 +4018,7 @@ public final class Acl { */ @java.lang.Override public acl.Acl.AclRuleTypeEnum getType() { - @SuppressWarnings("deprecation") - acl.Acl.AclRuleTypeEnum result = acl.Acl.AclRuleTypeEnum.valueOf(type_); + acl.Acl.AclRuleTypeEnum result = acl.Acl.AclRuleTypeEnum.forNumber(type_); return result == null ? acl.Acl.AclRuleTypeEnum.UNRECOGNIZED : result; } @@ -3952,6 +4031,7 @@ public final class Acl { if (value == null) { throw new NullPointerException(); } + bitField0_ |= 0x00000002; type_ = value.getNumber(); onChanged(); return this; @@ -3962,6 +4042,7 @@ public final class Acl { * @return This builder for chaining. */ public Builder clearType() { + bitField0_ = (bitField0_ & ~0x00000002); type_ = 0; onChanged(); return this; @@ -4010,6 +4091,7 @@ public final class Acl { throw new NullPointerException(); } description_ = value; + bitField0_ |= 0x00000004; onChanged(); return this; } @@ -4020,6 +4102,7 @@ public final class Acl { */ public Builder clearDescription() { description_ = getDefaultInstance().getDescription(); + bitField0_ = (bitField0_ & ~0x00000004); onChanged(); return this; } @@ -4035,6 +4118,7 @@ public final class Acl { } checkByteStringIsUtf8(value); description_ = value; + bitField0_ |= 0x00000004; onChanged(); return this; } @@ -4082,6 +4166,7 @@ public final class Acl { throw new NullPointerException(); } userId_ = value; + bitField0_ |= 0x00000008; onChanged(); return this; } @@ -4092,6 +4177,7 @@ public final class Acl { */ public Builder clearUserId() { userId_ = getDefaultInstance().getUserId(); + bitField0_ = (bitField0_ & ~0x00000008); onChanged(); return this; } @@ -4107,6 +4193,7 @@ public final class Acl { } checkByteStringIsUtf8(value); userId_ = value; + bitField0_ |= 0x00000008; onChanged(); return this; } @@ -4114,9 +4201,9 @@ public final class Acl { private java.util.List entries_ = java.util.Collections.emptyList(); private void ensureEntriesIsMutable() { - if (!((bitField0_ & 0x00000001) != 0)) { + if (!((bitField0_ & 0x00000010) != 0)) { entries_ = new java.util.ArrayList(entries_); - bitField0_ |= 0x00000001; + bitField0_ |= 0x00000010; } } @@ -4268,7 +4355,7 @@ public final class Acl { public Builder clearEntries() { if (entriesBuilder_ == null) { entries_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000010); onChanged(); } else { entriesBuilder_.clear(); @@ -4342,7 +4429,7 @@ public final class Acl { private com.google.protobuf.RepeatedFieldBuilderV3 getEntriesFieldBuilder() { if (entriesBuilder_ == null) { - entriesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(entries_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); + entriesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(entries_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean()); entries_ = null; } return entriesBuilder_; @@ -4375,7 +4462,17 @@ public final class Acl { @java.lang.Override public AclRuleSet parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new AclRuleSet(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -4417,10 +4514,10 @@ public final class Acl { private static com.google.protobuf.Descriptors.FileDescriptor descriptor; static { - java.lang.String[] descriptorData = { "\n\tacl.proto\022\003acl\"\252\001\n\010AclMatch\022\014\n\004dscp\030\001 " + "\001(\r\022\020\n\010protocol\030\002 \001(\r\022\023\n\013src_address\030\003 \001" + "(\t\022\023\n\013dst_address\030\004 \001(\t\022\020\n\010src_port\030\005 \001(" + "\r\022\020\n\010dst_port\030\006 \001(\r\022\030\n\020start_mpls_label\030" + "\007 \001(\r\022\026\n\016end_mpls_label\030\010 \001(\r\"i\n\tAclActi" + "on\0221\n\016forward_action\030\001 \001(\0162\031.acl.AclForw" + "ardActionEnum\022)\n\nlog_action\030\002 \001(\0162\025.acl." + "AclLogActionEnum\"r\n\010AclEntry\022\023\n\013sequence" + "_id\030\001 \001(\r\022\023\n\013description\030\002 \001(\t\022\034\n\005match\030" + "\003 \001(\0132\r.acl.AclMatch\022\036\n\006action\030\004 \001(\0132\016.a" + "cl.AclAction\"\204\001\n\nAclRuleSet\022\014\n\004name\030\001 \001(" + "\t\022\"\n\004type\030\002 \001(\0162\024.acl.AclRuleTypeEnum\022\023\n" + "\013description\030\003 \001(\t\022\017\n\007user_id\030\004 \001(\t\022\036\n\007e" + "ntries\030\005 \003(\0132\r.acl.AclEntry*\231\001\n\017AclRuleT" + "ypeEnum\022\031\n\025ACLRULETYPE_UNDEFINED\020\000\022\024\n\020AC" + "LRULETYPE_IPV4\020\001\022\024\n\020ACLRULETYPE_IPV6\020\002\022\022" + "\n\016ACLRULETYPE_L2\020\003\022\024\n\020ACLRULETYPE_MPLS\020\004" + "\022\025\n\021ACLRULETYPE_MIXED\020\005*\227\001\n\024AclForwardAc" + "tionEnum\022!\n\035ACLFORWARDINGACTION_UNDEFINE" + "D\020\000\022\034\n\030ACLFORWARDINGACTION_DROP\020\001\022\036\n\032ACL" + "FORWARDINGACTION_ACCEPT\020\002\022\036\n\032ACLFORWARDI" + "NGACTION_REJECT\020\003*_\n\020AclLogActionEnum\022\032\n" + "\026ACLLOGACTION_UNDEFINED\020\000\022\026\n\022ACLLOGACTIO" + "N_NOLOG\020\001\022\027\n\023ACLLOGACTION_SYSLOG\020\002b\006prot" + "o3" }; + java.lang.String[] descriptorData = { "\n\tacl.proto\022\003acl\"\275\001\n\010AclMatch\022\014\n\004dscp\030\001 " + "\001(\r\022\020\n\010protocol\030\002 \001(\r\022\023\n\013src_address\030\003 \001" + "(\t\022\023\n\013dst_address\030\004 \001(\t\022\020\n\010src_port\030\005 \001(" + "\r\022\020\n\010dst_port\030\006 \001(\r\022\030\n\020start_mpls_label\030" + "\007 \001(\r\022\026\n\016end_mpls_label\030\010 \001(\r\022\021\n\ttcp_fla" + "gs\030\t \001(\t\"i\n\tAclAction\0221\n\016forward_action\030" + "\001 \001(\0162\031.acl.AclForwardActionEnum\022)\n\nlog_" + "action\030\002 \001(\0162\025.acl.AclLogActionEnum\"r\n\010A" + "clEntry\022\023\n\013sequence_id\030\001 \001(\r\022\023\n\013descript" + "ion\030\002 \001(\t\022\034\n\005match\030\003 \001(\0132\r.acl.AclMatch\022" + "\036\n\006action\030\004 \001(\0132\016.acl.AclAction\"\204\001\n\nAclR" + "uleSet\022\014\n\004name\030\001 \001(\t\022\"\n\004type\030\002 \001(\0162\024.acl" + ".AclRuleTypeEnum\022\023\n\013description\030\003 \001(\t\022\017\n" + "\007user_id\030\004 \001(\t\022\036\n\007entries\030\005 \003(\0132\r.acl.Ac" + "lEntry*\231\001\n\017AclRuleTypeEnum\022\031\n\025ACLRULETYP" + "E_UNDEFINED\020\000\022\024\n\020ACLRULETYPE_IPV4\020\001\022\024\n\020A" + "CLRULETYPE_IPV6\020\002\022\022\n\016ACLRULETYPE_L2\020\003\022\024\n" + "\020ACLRULETYPE_MPLS\020\004\022\025\n\021ACLRULETYPE_MIXED" + "\020\005*\227\001\n\024AclForwardActionEnum\022!\n\035ACLFORWAR" + "DINGACTION_UNDEFINED\020\000\022\034\n\030ACLFORWARDINGA" + "CTION_DROP\020\001\022\036\n\032ACLFORWARDINGACTION_ACCE" + "PT\020\002\022\036\n\032ACLFORWARDINGACTION_REJECT\020\003*_\n\020" + "AclLogActionEnum\022\032\n\026ACLLOGACTION_UNDEFIN" + "ED\020\000\022\026\n\022ACLLOGACTION_NOLOG\020\001\022\027\n\023ACLLOGAC" + "TION_SYSLOG\020\002b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] {}); internal_static_acl_AclMatch_descriptor = getDescriptor().getMessageTypes().get(0); - internal_static_acl_AclMatch_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_acl_AclMatch_descriptor, new java.lang.String[] { "Dscp", "Protocol", "SrcAddress", "DstAddress", "SrcPort", "DstPort", "StartMplsLabel", "EndMplsLabel" }); + internal_static_acl_AclMatch_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_acl_AclMatch_descriptor, new java.lang.String[] { "Dscp", "Protocol", "SrcAddress", "DstAddress", "SrcPort", "DstPort", "StartMplsLabel", "EndMplsLabel", "TcpFlags" }); internal_static_acl_AclAction_descriptor = getDescriptor().getMessageTypes().get(1); internal_static_acl_AclAction_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_acl_AclAction_descriptor, new java.lang.String[] { "ForwardAction", "LogAction" }); internal_static_acl_AclEntry_descriptor = getDescriptor().getMessageTypes().get(2); diff --git a/src/policy/target/generated-sources/grpc/context/ContextOuterClass.java b/src/policy/target/generated-sources/grpc/context/ContextOuterClass.java index 4593770498216267b8d2f95dd728fccfbb9dc134..d41b80f1d0efdbd5a345c1ebf41c8c25fb7157f7 100644 --- a/src/policy/target/generated-sources/grpc/context/ContextOuterClass.java +++ b/src/policy/target/generated-sources/grpc/context/ContextOuterClass.java @@ -195,6 +195,10 @@ public final class ContextOuterClass { * DEVICEDRIVER_OC = 11; */ DEVICEDRIVER_OC(11), + /** + * DEVICEDRIVER_QKD = 12; + */ + DEVICEDRIVER_QKD(12), UNRECOGNIZED(-1); /** @@ -261,6 +265,11 @@ public final class ContextOuterClass { */ public static final int DEVICEDRIVER_OC_VALUE = 11; + /** + * DEVICEDRIVER_QKD = 12; + */ + public static final int DEVICEDRIVER_QKD_VALUE = 12; + public final int getNumber() { if (this == UNRECOGNIZED) { throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value."); @@ -308,6 +317,8 @@ public final class ContextOuterClass { return DEVICEDRIVER_IETF_ACTN; case 11: return DEVICEDRIVER_OC; + case 12: + return DEVICEDRIVER_QKD; default: return null; } @@ -504,6 +515,10 @@ public final class ContextOuterClass { * SERVICETYPE_OPTICAL_CONNECTIVITY = 6; */ SERVICETYPE_OPTICAL_CONNECTIVITY(6), + /** + * SERVICETYPE_QKD = 7; + */ + SERVICETYPE_QKD(7), UNRECOGNIZED(-1); /** @@ -541,6 +556,11 @@ public final class ContextOuterClass { */ public static final int SERVICETYPE_OPTICAL_CONNECTIVITY_VALUE = 6; + /** + * SERVICETYPE_QKD = 7; + */ + public static final int SERVICETYPE_QKD_VALUE = 7; + public final int getNumber() { if (this == UNRECOGNIZED) { throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value."); @@ -578,6 +598,8 @@ public final class ContextOuterClass { return SERVICETYPE_E2E; case 6: return SERVICETYPE_OPTICAL_CONNECTIVITY; + case 7: + return SERVICETYPE_QKD; default: return null; } @@ -1363,44 +1385,6 @@ public final class ContextOuterClass { return new Empty(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private Empty(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_Empty_descriptor; } @@ -1425,7 +1409,7 @@ public final class ContextOuterClass { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -1434,7 +1418,7 @@ public final class ContextOuterClass { if (size != -1) return size; size = 0; - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -1448,7 +1432,7 @@ public final class ContextOuterClass { return super.equals(obj); } context.ContextOuterClass.Empty other = (context.ContextOuterClass.Empty) obj; - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -1460,7 +1444,7 @@ public final class ContextOuterClass { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -1558,17 +1542,10 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.Empty.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override @@ -1603,36 +1580,6 @@ public final class ContextOuterClass { return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); - } - @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof context.ContextOuterClass.Empty) { @@ -1646,7 +1593,7 @@ public final class ContextOuterClass { public Builder mergeFrom(context.ContextOuterClass.Empty other) { if (other == context.ContextOuterClass.Empty.getDefaultInstance()) return this; - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -1658,17 +1605,35 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.Empty parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.Empty) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } @@ -1699,7 +1664,17 @@ public final class ContextOuterClass { @java.lang.Override public Empty parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new Empty(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -1757,50 +1732,6 @@ public final class ContextOuterClass { return new Uuid(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private Uuid(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - java.lang.String s = input.readStringRequireUtf8(); - uuid_ = s; - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_Uuid_descriptor; } @@ -1812,7 +1743,8 @@ public final class ContextOuterClass { public static final int UUID_FIELD_NUMBER = 1; - private volatile java.lang.Object uuid_; + @SuppressWarnings("serial") + private volatile java.lang.Object uuid_ = ""; /** * string uuid = 1; @@ -1862,10 +1794,10 @@ public final class ContextOuterClass { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - if (!getUuidBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(uuid_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 1, uuid_); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -1874,10 +1806,10 @@ public final class ContextOuterClass { if (size != -1) return size; size = 0; - if (!getUuidBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(uuid_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, uuid_); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -1893,7 +1825,7 @@ public final class ContextOuterClass { context.ContextOuterClass.Uuid other = (context.ContextOuterClass.Uuid) obj; if (!getUuid().equals(other.getUuid())) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -1907,7 +1839,7 @@ public final class ContextOuterClass { hash = (19 * hash) + getDescriptor().hashCode(); hash = (37 * hash) + UUID_FIELD_NUMBER; hash = (53 * hash) + getUuid().hashCode(); - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -2001,22 +1933,16 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.Uuid.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); + bitField0_ = 0; uuid_ = ""; return this; } @@ -2043,39 +1969,18 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.Uuid buildPartial() { context.ContextOuterClass.Uuid result = new context.ContextOuterClass.Uuid(this); - result.uuid_ = uuid_; + if (bitField0_ != 0) { + buildPartial0(result); + } onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.Uuid result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.uuid_ = uuid_; + } } @java.lang.Override @@ -2093,9 +1998,10 @@ public final class ContextOuterClass { return this; if (!other.getUuid().isEmpty()) { uuid_ = other.uuid_; + bitField0_ |= 0x00000001; onChanged(); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -2107,20 +2013,47 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.Uuid parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + uuid_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } + // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.Uuid) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } + private int bitField0_; + private java.lang.Object uuid_ = ""; /** @@ -2164,6 +2097,7 @@ public final class ContextOuterClass { throw new NullPointerException(); } uuid_ = value; + bitField0_ |= 0x00000001; onChanged(); return this; } @@ -2174,6 +2108,7 @@ public final class ContextOuterClass { */ public Builder clearUuid() { uuid_ = getDefaultInstance().getUuid(); + bitField0_ = (bitField0_ & ~0x00000001); onChanged(); return this; } @@ -2189,6 +2124,7 @@ public final class ContextOuterClass { } checkByteStringIsUtf8(value); uuid_ = value; + bitField0_ |= 0x00000001; onChanged(); return this; } @@ -2220,7 +2156,17 @@ public final class ContextOuterClass { @java.lang.Override public Uuid parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new Uuid(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -2271,49 +2217,6 @@ public final class ContextOuterClass { return new Timestamp(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private Timestamp(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 9: - { - timestamp_ = input.readDouble(); - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_Timestamp_descriptor; } @@ -2325,7 +2228,7 @@ public final class ContextOuterClass { public static final int TIMESTAMP_FIELD_NUMBER = 1; - private double timestamp_; + private double timestamp_ = 0D; /** * double timestamp = 1; @@ -2351,10 +2254,10 @@ public final class ContextOuterClass { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - if (timestamp_ != 0D) { + if (java.lang.Double.doubleToRawLongBits(timestamp_) != 0) { output.writeDouble(1, timestamp_); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -2363,10 +2266,10 @@ public final class ContextOuterClass { if (size != -1) return size; size = 0; - if (timestamp_ != 0D) { + if (java.lang.Double.doubleToRawLongBits(timestamp_) != 0) { size += com.google.protobuf.CodedOutputStream.computeDoubleSize(1, timestamp_); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -2382,7 +2285,7 @@ public final class ContextOuterClass { context.ContextOuterClass.Timestamp other = (context.ContextOuterClass.Timestamp) obj; if (java.lang.Double.doubleToLongBits(getTimestamp()) != java.lang.Double.doubleToLongBits(other.getTimestamp())) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -2396,7 +2299,7 @@ public final class ContextOuterClass { hash = (19 * hash) + getDescriptor().hashCode(); hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER; hash = (53 * hash) + com.google.protobuf.Internal.hashLong(java.lang.Double.doubleToLongBits(getTimestamp())); - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -2490,22 +2393,16 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.Timestamp.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); + bitField0_ = 0; timestamp_ = 0D; return this; } @@ -2532,39 +2429,18 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.Timestamp buildPartial() { context.ContextOuterClass.Timestamp result = new context.ContextOuterClass.Timestamp(this); - result.timestamp_ = timestamp_; + if (bitField0_ != 0) { + buildPartial0(result); + } onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.Timestamp result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.timestamp_ = timestamp_; + } } @java.lang.Override @@ -2583,7 +2459,7 @@ public final class ContextOuterClass { if (other.getTimestamp() != 0D) { setTimestamp(other.getTimestamp()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -2595,20 +2471,47 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.Timestamp parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 9: + { + timestamp_ = input.readDouble(); + bitField0_ |= 0x00000001; + break; + } + // case 9 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.Timestamp) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } + private int bitField0_; + private double timestamp_; /** @@ -2627,6 +2530,7 @@ public final class ContextOuterClass { */ public Builder setTimestamp(double value) { timestamp_ = value; + bitField0_ |= 0x00000001; onChanged(); return this; } @@ -2636,6 +2540,7 @@ public final class ContextOuterClass { * @return This builder for chaining. */ public Builder clearTimestamp() { + bitField0_ = (bitField0_ & ~0x00000001); timestamp_ = 0D; onChanged(); return this; @@ -2668,7 +2573,17 @@ public final class ContextOuterClass { @java.lang.Override public Timestamp parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new Timestamp(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -2743,63 +2658,6 @@ public final class ContextOuterClass { return new Event(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private Event(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - context.ContextOuterClass.Timestamp.Builder subBuilder = null; - if (timestamp_ != null) { - subBuilder = timestamp_.toBuilder(); - } - timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(timestamp_); - timestamp_ = subBuilder.buildPartial(); - } - break; - } - case 16: - { - int rawValue = input.readEnum(); - eventType_ = rawValue; - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_Event_descriptor; } @@ -2836,12 +2694,12 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() { - return getTimestamp(); + return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_; } public static final int EVENT_TYPE_FIELD_NUMBER = 2; - private int eventType_; + private int eventType_ = 0; /** * .context.EventTypeEnum event_type = 2; @@ -2858,8 +2716,7 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.EventTypeEnum getEventType() { - @SuppressWarnings("deprecation") - context.ContextOuterClass.EventTypeEnum result = context.ContextOuterClass.EventTypeEnum.valueOf(eventType_); + context.ContextOuterClass.EventTypeEnum result = context.ContextOuterClass.EventTypeEnum.forNumber(eventType_); return result == null ? context.ContextOuterClass.EventTypeEnum.UNRECOGNIZED : result; } @@ -2884,7 +2741,7 @@ public final class ContextOuterClass { if (eventType_ != context.ContextOuterClass.EventTypeEnum.EVENTTYPE_UNDEFINED.getNumber()) { output.writeEnum(2, eventType_); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -2899,7 +2756,7 @@ public final class ContextOuterClass { if (eventType_ != context.ContextOuterClass.EventTypeEnum.EVENTTYPE_UNDEFINED.getNumber()) { size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, eventType_); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -2921,7 +2778,7 @@ public final class ContextOuterClass { } if (eventType_ != other.eventType_) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -2939,7 +2796,7 @@ public final class ContextOuterClass { } hash = (37 * hash) + EVENT_TYPE_FIELD_NUMBER; hash = (53 * hash) + eventType_; - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -3033,26 +2890,19 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.Event.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); - if (timestampBuilder_ == null) { - timestamp_ = null; - } else { - timestamp_ = null; + bitField0_ = 0; + timestamp_ = null; + if (timestampBuilder_ != null) { + timestampBuilder_.dispose(); timestampBuilder_ = null; } eventType_ = 0; @@ -3081,44 +2931,21 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.Event buildPartial() { context.ContextOuterClass.Event result = new context.ContextOuterClass.Event(this); - if (timestampBuilder_ == null) { - result.timestamp_ = timestamp_; - } else { - result.timestamp_ = timestampBuilder_.build(); + if (bitField0_ != 0) { + buildPartial0(result); } - result.eventType_ = eventType_; onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.Event result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.eventType_ = eventType_; + } } @java.lang.Override @@ -3140,7 +2967,7 @@ public final class ContextOuterClass { if (other.eventType_ != 0) { setEventTypeValue(other.getEventTypeValue()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -3152,20 +2979,54 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.Event parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 16: + { + eventType_ = input.readEnum(); + bitField0_ |= 0x00000002; + break; + } + // case 16 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.Event) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } + private int bitField0_; + private context.ContextOuterClass.Timestamp timestamp_; private com.google.protobuf.SingleFieldBuilderV3 timestampBuilder_; @@ -3175,7 +3036,7 @@ public final class ContextOuterClass { * @return Whether the timestamp field is set. */ public boolean hasTimestamp() { - return timestampBuilder_ != null || timestamp_ != null; + return ((bitField0_ & 0x00000001) != 0); } /** @@ -3199,10 +3060,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } timestamp_ = value; - onChanged(); } else { timestampBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -3212,10 +3074,11 @@ public final class ContextOuterClass { public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) { if (timestampBuilder_ == null) { timestamp_ = builderForValue.build(); - onChanged(); } else { timestampBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -3224,15 +3087,16 @@ public final class ContextOuterClass { */ public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) { if (timestampBuilder_ == null) { - if (timestamp_ != null) { - timestamp_ = context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000001) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) { + getTimestampBuilder().mergeFrom(value); } else { timestamp_ = value; } - onChanged(); } else { timestampBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -3240,13 +3104,13 @@ public final class ContextOuterClass { * .context.Timestamp timestamp = 1; */ public Builder clearTimestamp() { - if (timestampBuilder_ == null) { - timestamp_ = null; - onChanged(); - } else { - timestamp_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + timestamp_ = null; + if (timestampBuilder_ != null) { + timestampBuilder_.dispose(); timestampBuilder_ = null; } + onChanged(); return this; } @@ -3254,6 +3118,7 @@ public final class ContextOuterClass { * .context.Timestamp timestamp = 1; */ public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() { + bitField0_ |= 0x00000001; onChanged(); return getTimestampFieldBuilder().getBuilder(); } @@ -3298,6 +3163,7 @@ public final class ContextOuterClass { */ public Builder setEventTypeValue(int value) { eventType_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -3308,8 +3174,7 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.EventTypeEnum getEventType() { - @SuppressWarnings("deprecation") - context.ContextOuterClass.EventTypeEnum result = context.ContextOuterClass.EventTypeEnum.valueOf(eventType_); + context.ContextOuterClass.EventTypeEnum result = context.ContextOuterClass.EventTypeEnum.forNumber(eventType_); return result == null ? context.ContextOuterClass.EventTypeEnum.UNRECOGNIZED : result; } @@ -3322,6 +3187,7 @@ public final class ContextOuterClass { if (value == null) { throw new NullPointerException(); } + bitField0_ |= 0x00000002; eventType_ = value.getNumber(); onChanged(); return this; @@ -3332,6 +3198,7 @@ public final class ContextOuterClass { * @return This builder for chaining. */ public Builder clearEventType() { + bitField0_ = (bitField0_ & ~0x00000002); eventType_ = 0; onChanged(); return this; @@ -3364,7 +3231,17 @@ public final class ContextOuterClass { @java.lang.Override public Event parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new Event(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -3430,57 +3307,6 @@ public final class ContextOuterClass { return new ContextId(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private ContextId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - context.ContextOuterClass.Uuid.Builder subBuilder = null; - if (contextUuid_ != null) { - subBuilder = contextUuid_.toBuilder(); - } - contextUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(contextUuid_); - contextUuid_ = subBuilder.buildPartial(); - } - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_ContextId_descriptor; } @@ -3517,7 +3343,7 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.UuidOrBuilder getContextUuidOrBuilder() { - return getContextUuid(); + return contextUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : contextUuid_; } private byte memoizedIsInitialized = -1; @@ -3538,7 +3364,7 @@ public final class ContextOuterClass { if (contextUuid_ != null) { output.writeMessage(1, getContextUuid()); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -3550,7 +3376,7 @@ public final class ContextOuterClass { if (contextUuid_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextUuid()); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -3570,7 +3396,7 @@ public final class ContextOuterClass { if (!getContextUuid().equals(other.getContextUuid())) return false; } - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -3586,7 +3412,7 @@ public final class ContextOuterClass { hash = (37 * hash) + CONTEXT_UUID_FIELD_NUMBER; hash = (53 * hash) + getContextUuid().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -3684,26 +3510,19 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.ContextId.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); - if (contextUuidBuilder_ == null) { - contextUuid_ = null; - } else { - contextUuid_ = null; + bitField0_ = 0; + contextUuid_ = null; + if (contextUuidBuilder_ != null) { + contextUuidBuilder_.dispose(); contextUuidBuilder_ = null; } return this; @@ -3731,43 +3550,18 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.ContextId buildPartial() { context.ContextOuterClass.ContextId result = new context.ContextOuterClass.ContextId(this); - if (contextUuidBuilder_ == null) { - result.contextUuid_ = contextUuid_; - } else { - result.contextUuid_ = contextUuidBuilder_.build(); + if (bitField0_ != 0) { + buildPartial0(result); } onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.ContextId result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.contextUuid_ = contextUuidBuilder_ == null ? contextUuid_ : contextUuidBuilder_.build(); + } } @java.lang.Override @@ -3786,7 +3580,7 @@ public final class ContextOuterClass { if (other.hasContextUuid()) { mergeContextUuid(other.getContextUuid()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -3798,20 +3592,47 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.ContextId parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getContextUuidFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.ContextId) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } + private int bitField0_; + private context.ContextOuterClass.Uuid contextUuid_; private com.google.protobuf.SingleFieldBuilderV3 contextUuidBuilder_; @@ -3821,7 +3642,7 @@ public final class ContextOuterClass { * @return Whether the contextUuid field is set. */ public boolean hasContextUuid() { - return contextUuidBuilder_ != null || contextUuid_ != null; + return ((bitField0_ & 0x00000001) != 0); } /** @@ -3845,10 +3666,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } contextUuid_ = value; - onChanged(); } else { contextUuidBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -3858,10 +3680,11 @@ public final class ContextOuterClass { public Builder setContextUuid(context.ContextOuterClass.Uuid.Builder builderForValue) { if (contextUuidBuilder_ == null) { contextUuid_ = builderForValue.build(); - onChanged(); } else { contextUuidBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -3870,15 +3693,16 @@ public final class ContextOuterClass { */ public Builder mergeContextUuid(context.ContextOuterClass.Uuid value) { if (contextUuidBuilder_ == null) { - if (contextUuid_ != null) { - contextUuid_ = context.ContextOuterClass.Uuid.newBuilder(contextUuid_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000001) != 0) && contextUuid_ != null && contextUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) { + getContextUuidBuilder().mergeFrom(value); } else { contextUuid_ = value; } - onChanged(); } else { contextUuidBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -3886,13 +3710,13 @@ public final class ContextOuterClass { * .context.Uuid context_uuid = 1; */ public Builder clearContextUuid() { - if (contextUuidBuilder_ == null) { - contextUuid_ = null; - onChanged(); - } else { - contextUuid_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + contextUuid_ = null; + if (contextUuidBuilder_ != null) { + contextUuidBuilder_.dispose(); contextUuidBuilder_ = null; } + onChanged(); return this; } @@ -3900,6 +3724,7 @@ public final class ContextOuterClass { * .context.Uuid context_uuid = 1; */ public context.ContextOuterClass.Uuid.Builder getContextUuidBuilder() { + bitField0_ |= 0x00000001; onChanged(); return getContextUuidFieldBuilder().getBuilder(); } @@ -3953,7 +3778,17 @@ public final class ContextOuterClass { @java.lang.Override public ContextId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new ContextId(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -4123,113 +3958,6 @@ public final class ContextOuterClass { return new Context(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private Context(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - context.ContextOuterClass.ContextId.Builder subBuilder = null; - if (contextId_ != null) { - subBuilder = contextId_.toBuilder(); - } - contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(contextId_); - contextId_ = subBuilder.buildPartial(); - } - break; - } - case 18: - { - java.lang.String s = input.readStringRequireUtf8(); - name_ = s; - break; - } - case 26: - { - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - topologyIds_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; - } - topologyIds_.add(input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry)); - break; - } - case 34: - { - if (!((mutable_bitField0_ & 0x00000002) != 0)) { - serviceIds_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000002; - } - serviceIds_.add(input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry)); - break; - } - case 42: - { - if (!((mutable_bitField0_ & 0x00000004) != 0)) { - sliceIds_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000004; - } - sliceIds_.add(input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry)); - break; - } - case 50: - { - context.ContextOuterClass.TeraFlowController.Builder subBuilder = null; - if (controller_ != null) { - subBuilder = controller_.toBuilder(); - } - controller_ = input.readMessage(context.ContextOuterClass.TeraFlowController.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(controller_); - controller_ = subBuilder.buildPartial(); - } - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000001) != 0)) { - topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_); - } - if (((mutable_bitField0_ & 0x00000002) != 0)) { - serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_); - } - if (((mutable_bitField0_ & 0x00000004) != 0)) { - sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_); - } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_Context_descriptor; } @@ -4266,12 +3994,13 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() { - return getContextId(); + return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_; } public static final int NAME_FIELD_NUMBER = 2; - private volatile java.lang.Object name_; + @SuppressWarnings("serial") + private volatile java.lang.Object name_ = ""; /** * string name = 2; @@ -4308,6 +4037,7 @@ public final class ContextOuterClass { public static final int TOPOLOGY_IDS_FIELD_NUMBER = 3; + @SuppressWarnings("serial") private java.util.List topologyIds_; /** @@ -4352,6 +4082,7 @@ public final class ContextOuterClass { public static final int SERVICE_IDS_FIELD_NUMBER = 4; + @SuppressWarnings("serial") private java.util.List serviceIds_; /** @@ -4396,6 +4127,7 @@ public final class ContextOuterClass { public static final int SLICE_IDS_FIELD_NUMBER = 5; + @SuppressWarnings("serial") private java.util.List sliceIds_; /** @@ -4465,7 +4197,7 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.TeraFlowControllerOrBuilder getControllerOrBuilder() { - return getController(); + return controller_ == null ? context.ContextOuterClass.TeraFlowController.getDefaultInstance() : controller_; } private byte memoizedIsInitialized = -1; @@ -4486,7 +4218,7 @@ public final class ContextOuterClass { if (contextId_ != null) { output.writeMessage(1, getContextId()); } - if (!getNameBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_); } for (int i = 0; i < topologyIds_.size(); i++) { @@ -4501,7 +4233,7 @@ public final class ContextOuterClass { if (controller_ != null) { output.writeMessage(6, getController()); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -4513,7 +4245,7 @@ public final class ContextOuterClass { if (contextId_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextId()); } - if (!getNameBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_); } for (int i = 0; i < topologyIds_.size(); i++) { @@ -4528,7 +4260,7 @@ public final class ContextOuterClass { if (controller_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, getController()); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -4562,7 +4294,7 @@ public final class ContextOuterClass { if (!getController().equals(other.getController())) return false; } - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -4596,7 +4328,7 @@ public final class ContextOuterClass { hash = (37 * hash) + CONTROLLER_FIELD_NUMBER; hash = (53 * hash) + getController().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -4690,54 +4422,46 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.Context.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - getTopologyIdsFieldBuilder(); - getServiceIdsFieldBuilder(); - getSliceIdsFieldBuilder(); - } } @java.lang.Override public Builder clear() { super.clear(); - if (contextIdBuilder_ == null) { - contextId_ = null; - } else { - contextId_ = null; + bitField0_ = 0; + contextId_ = null; + if (contextIdBuilder_ != null) { + contextIdBuilder_.dispose(); contextIdBuilder_ = null; } name_ = ""; if (topologyIdsBuilder_ == null) { topologyIds_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); } else { + topologyIds_ = null; topologyIdsBuilder_.clear(); } + bitField0_ = (bitField0_ & ~0x00000004); if (serviceIdsBuilder_ == null) { serviceIds_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000002); } else { + serviceIds_ = null; serviceIdsBuilder_.clear(); } + bitField0_ = (bitField0_ & ~0x00000008); if (sliceIdsBuilder_ == null) { sliceIds_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000004); } else { + sliceIds_ = null; sliceIdsBuilder_.clear(); } - if (controllerBuilder_ == null) { - controller_ = null; - } else { - controller_ = null; + bitField0_ = (bitField0_ & ~0x00000010); + controller_ = null; + if (controllerBuilder_ != null) { + controllerBuilder_.dispose(); controllerBuilder_ = null; } return this; @@ -4765,77 +4489,55 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.Context buildPartial() { context.ContextOuterClass.Context result = new context.ContextOuterClass.Context(this); - int from_bitField0_ = bitField0_; - if (contextIdBuilder_ == null) { - result.contextId_ = contextId_; - } else { - result.contextId_ = contextIdBuilder_.build(); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); } - result.name_ = name_; + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(context.ContextOuterClass.Context result) { if (topologyIdsBuilder_ == null) { - if (((bitField0_ & 0x00000001) != 0)) { + if (((bitField0_ & 0x00000004) != 0)) { topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_); - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); } result.topologyIds_ = topologyIds_; } else { result.topologyIds_ = topologyIdsBuilder_.build(); } if (serviceIdsBuilder_ == null) { - if (((bitField0_ & 0x00000002) != 0)) { + if (((bitField0_ & 0x00000008) != 0)) { serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_); - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000008); } result.serviceIds_ = serviceIds_; } else { result.serviceIds_ = serviceIdsBuilder_.build(); } if (sliceIdsBuilder_ == null) { - if (((bitField0_ & 0x00000004) != 0)) { + if (((bitField0_ & 0x00000010) != 0)) { sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_); - bitField0_ = (bitField0_ & ~0x00000004); + bitField0_ = (bitField0_ & ~0x00000010); } result.sliceIds_ = sliceIds_; } else { result.sliceIds_ = sliceIdsBuilder_.build(); } - if (controllerBuilder_ == null) { - result.controller_ = controller_; - } else { - result.controller_ = controllerBuilder_.build(); - } - onBuilt(); - return result; - } - - @java.lang.Override - public Builder clone() { - return super.clone(); } - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.Context result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.name_ = name_; + } + if (((from_bitField0_ & 0x00000020) != 0)) { + result.controller_ = controllerBuilder_ == null ? controller_ : controllerBuilder_.build(); + } } @java.lang.Override @@ -4856,13 +4558,14 @@ public final class ContextOuterClass { } if (!other.getName().isEmpty()) { name_ = other.name_; + bitField0_ |= 0x00000002; onChanged(); } if (topologyIdsBuilder_ == null) { if (!other.topologyIds_.isEmpty()) { if (topologyIds_.isEmpty()) { topologyIds_ = other.topologyIds_; - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); } else { ensureTopologyIdsIsMutable(); topologyIds_.addAll(other.topologyIds_); @@ -4875,7 +4578,7 @@ public final class ContextOuterClass { topologyIdsBuilder_.dispose(); topologyIdsBuilder_ = null; topologyIds_ = other.topologyIds_; - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); topologyIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getTopologyIdsFieldBuilder() : null; } else { topologyIdsBuilder_.addAllMessages(other.topologyIds_); @@ -4886,7 +4589,7 @@ public final class ContextOuterClass { if (!other.serviceIds_.isEmpty()) { if (serviceIds_.isEmpty()) { serviceIds_ = other.serviceIds_; - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000008); } else { ensureServiceIdsIsMutable(); serviceIds_.addAll(other.serviceIds_); @@ -4899,7 +4602,7 @@ public final class ContextOuterClass { serviceIdsBuilder_.dispose(); serviceIdsBuilder_ = null; serviceIds_ = other.serviceIds_; - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000008); serviceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getServiceIdsFieldBuilder() : null; } else { serviceIdsBuilder_.addAllMessages(other.serviceIds_); @@ -4910,7 +4613,7 @@ public final class ContextOuterClass { if (!other.sliceIds_.isEmpty()) { if (sliceIds_.isEmpty()) { sliceIds_ = other.sliceIds_; - bitField0_ = (bitField0_ & ~0x00000004); + bitField0_ = (bitField0_ & ~0x00000010); } else { ensureSliceIdsIsMutable(); sliceIds_.addAll(other.sliceIds_); @@ -4923,7 +4626,7 @@ public final class ContextOuterClass { sliceIdsBuilder_.dispose(); sliceIdsBuilder_ = null; sliceIds_ = other.sliceIds_; - bitField0_ = (bitField0_ & ~0x00000004); + bitField0_ = (bitField0_ & ~0x00000010); sliceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceIdsFieldBuilder() : null; } else { sliceIdsBuilder_.addAllMessages(other.sliceIds_); @@ -4933,7 +4636,7 @@ public final class ContextOuterClass { if (other.hasController()) { mergeController(other.getController()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -4945,17 +4648,92 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.Context parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 18: + { + name_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } + // case 18 + case 26: + { + context.ContextOuterClass.TopologyId m = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry); + if (topologyIdsBuilder_ == null) { + ensureTopologyIdsIsMutable(); + topologyIds_.add(m); + } else { + topologyIdsBuilder_.addMessage(m); + } + break; + } + // case 26 + case 34: + { + context.ContextOuterClass.ServiceId m = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry); + if (serviceIdsBuilder_ == null) { + ensureServiceIdsIsMutable(); + serviceIds_.add(m); + } else { + serviceIdsBuilder_.addMessage(m); + } + break; + } + // case 34 + case 42: + { + context.ContextOuterClass.SliceId m = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry); + if (sliceIdsBuilder_ == null) { + ensureSliceIdsIsMutable(); + sliceIds_.add(m); + } else { + sliceIdsBuilder_.addMessage(m); + } + break; + } + // case 42 + case 50: + { + input.readMessage(getControllerFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000020; + break; + } + // case 50 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.Context) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } @@ -4970,7 +4748,7 @@ public final class ContextOuterClass { * @return Whether the contextId field is set. */ public boolean hasContextId() { - return contextIdBuilder_ != null || contextId_ != null; + return ((bitField0_ & 0x00000001) != 0); } /** @@ -4994,10 +4772,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } contextId_ = value; - onChanged(); } else { contextIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -5007,10 +4786,11 @@ public final class ContextOuterClass { public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) { if (contextIdBuilder_ == null) { contextId_ = builderForValue.build(); - onChanged(); } else { contextIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -5019,15 +4799,16 @@ public final class ContextOuterClass { */ public Builder mergeContextId(context.ContextOuterClass.ContextId value) { if (contextIdBuilder_ == null) { - if (contextId_ != null) { - contextId_ = context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) { + getContextIdBuilder().mergeFrom(value); } else { contextId_ = value; } - onChanged(); } else { contextIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -5035,13 +4816,13 @@ public final class ContextOuterClass { * .context.ContextId context_id = 1; */ public Builder clearContextId() { - if (contextIdBuilder_ == null) { - contextId_ = null; - onChanged(); - } else { - contextId_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + contextId_ = null; + if (contextIdBuilder_ != null) { + contextIdBuilder_.dispose(); contextIdBuilder_ = null; } + onChanged(); return this; } @@ -5049,6 +4830,7 @@ public final class ContextOuterClass { * .context.ContextId context_id = 1; */ public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() { + bitField0_ |= 0x00000001; onChanged(); return getContextIdFieldBuilder().getBuilder(); } @@ -5118,6 +4900,7 @@ public final class ContextOuterClass { throw new NullPointerException(); } name_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -5128,6 +4911,7 @@ public final class ContextOuterClass { */ public Builder clearName() { name_ = getDefaultInstance().getName(); + bitField0_ = (bitField0_ & ~0x00000002); onChanged(); return this; } @@ -5143,6 +4927,7 @@ public final class ContextOuterClass { } checkByteStringIsUtf8(value); name_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -5150,9 +4935,9 @@ public final class ContextOuterClass { private java.util.List topologyIds_ = java.util.Collections.emptyList(); private void ensureTopologyIdsIsMutable() { - if (!((bitField0_ & 0x00000001) != 0)) { + if (!((bitField0_ & 0x00000004) != 0)) { topologyIds_ = new java.util.ArrayList(topologyIds_); - bitField0_ |= 0x00000001; + bitField0_ |= 0x00000004; } } @@ -5304,7 +5089,7 @@ public final class ContextOuterClass { public Builder clearTopologyIds() { if (topologyIdsBuilder_ == null) { topologyIds_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); onChanged(); } else { topologyIdsBuilder_.clear(); @@ -5378,7 +5163,7 @@ public final class ContextOuterClass { private com.google.protobuf.RepeatedFieldBuilderV3 getTopologyIdsFieldBuilder() { if (topologyIdsBuilder_ == null) { - topologyIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(topologyIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); + topologyIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(topologyIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean()); topologyIds_ = null; } return topologyIdsBuilder_; @@ -5387,9 +5172,9 @@ public final class ContextOuterClass { private java.util.List serviceIds_ = java.util.Collections.emptyList(); private void ensureServiceIdsIsMutable() { - if (!((bitField0_ & 0x00000002) != 0)) { + if (!((bitField0_ & 0x00000008) != 0)) { serviceIds_ = new java.util.ArrayList(serviceIds_); - bitField0_ |= 0x00000002; + bitField0_ |= 0x00000008; } } @@ -5541,7 +5326,7 @@ public final class ContextOuterClass { public Builder clearServiceIds() { if (serviceIdsBuilder_ == null) { serviceIds_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000008); onChanged(); } else { serviceIdsBuilder_.clear(); @@ -5615,7 +5400,7 @@ public final class ContextOuterClass { private com.google.protobuf.RepeatedFieldBuilderV3 getServiceIdsFieldBuilder() { if (serviceIdsBuilder_ == null) { - serviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(serviceIds_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean()); + serviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(serviceIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean()); serviceIds_ = null; } return serviceIdsBuilder_; @@ -5624,9 +5409,9 @@ public final class ContextOuterClass { private java.util.List sliceIds_ = java.util.Collections.emptyList(); private void ensureSliceIdsIsMutable() { - if (!((bitField0_ & 0x00000004) != 0)) { + if (!((bitField0_ & 0x00000010) != 0)) { sliceIds_ = new java.util.ArrayList(sliceIds_); - bitField0_ |= 0x00000004; + bitField0_ |= 0x00000010; } } @@ -5778,7 +5563,7 @@ public final class ContextOuterClass { public Builder clearSliceIds() { if (sliceIdsBuilder_ == null) { sliceIds_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000004); + bitField0_ = (bitField0_ & ~0x00000010); onChanged(); } else { sliceIdsBuilder_.clear(); @@ -5852,7 +5637,7 @@ public final class ContextOuterClass { private com.google.protobuf.RepeatedFieldBuilderV3 getSliceIdsFieldBuilder() { if (sliceIdsBuilder_ == null) { - sliceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(sliceIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean()); + sliceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(sliceIds_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean()); sliceIds_ = null; } return sliceIdsBuilder_; @@ -5867,7 +5652,7 @@ public final class ContextOuterClass { * @return Whether the controller field is set. */ public boolean hasController() { - return controllerBuilder_ != null || controller_ != null; + return ((bitField0_ & 0x00000020) != 0); } /** @@ -5891,10 +5676,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } controller_ = value; - onChanged(); } else { controllerBuilder_.setMessage(value); } + bitField0_ |= 0x00000020; + onChanged(); return this; } @@ -5904,10 +5690,11 @@ public final class ContextOuterClass { public Builder setController(context.ContextOuterClass.TeraFlowController.Builder builderForValue) { if (controllerBuilder_ == null) { controller_ = builderForValue.build(); - onChanged(); } else { controllerBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000020; + onChanged(); return this; } @@ -5916,15 +5703,16 @@ public final class ContextOuterClass { */ public Builder mergeController(context.ContextOuterClass.TeraFlowController value) { if (controllerBuilder_ == null) { - if (controller_ != null) { - controller_ = context.ContextOuterClass.TeraFlowController.newBuilder(controller_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000020) != 0) && controller_ != null && controller_ != context.ContextOuterClass.TeraFlowController.getDefaultInstance()) { + getControllerBuilder().mergeFrom(value); } else { controller_ = value; } - onChanged(); } else { controllerBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000020; + onChanged(); return this; } @@ -5932,13 +5720,13 @@ public final class ContextOuterClass { * .context.TeraFlowController controller = 6; */ public Builder clearController() { - if (controllerBuilder_ == null) { - controller_ = null; - onChanged(); - } else { - controller_ = null; + bitField0_ = (bitField0_ & ~0x00000020); + controller_ = null; + if (controllerBuilder_ != null) { + controllerBuilder_.dispose(); controllerBuilder_ = null; } + onChanged(); return this; } @@ -5946,6 +5734,7 @@ public final class ContextOuterClass { * .context.TeraFlowController controller = 6; */ public context.ContextOuterClass.TeraFlowController.Builder getControllerBuilder() { + bitField0_ |= 0x00000020; onChanged(); return getControllerFieldBuilder().getBuilder(); } @@ -5999,7 +5788,17 @@ public final class ContextOuterClass { @java.lang.Override public Context parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new Context(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -6070,57 +5869,6 @@ public final class ContextOuterClass { return new ContextIdList(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private ContextIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - contextIds_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; - } - contextIds_.add(input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry)); - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000001) != 0)) { - contextIds_ = java.util.Collections.unmodifiableList(contextIds_); - } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_ContextIdList_descriptor; } @@ -6132,6 +5880,7 @@ public final class ContextOuterClass { public static final int CONTEXT_IDS_FIELD_NUMBER = 1; + @SuppressWarnings("serial") private java.util.List contextIds_; /** @@ -6192,7 +5941,7 @@ public final class ContextOuterClass { for (int i = 0; i < contextIds_.size(); i++) { output.writeMessage(1, contextIds_.get(i)); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -6204,7 +5953,7 @@ public final class ContextOuterClass { for (int i = 0; i < contextIds_.size(); i++) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, contextIds_.get(i)); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -6220,7 +5969,7 @@ public final class ContextOuterClass { context.ContextOuterClass.ContextIdList other = (context.ContextOuterClass.ContextIdList) obj; if (!getContextIdsList().equals(other.getContextIdsList())) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -6236,7 +5985,7 @@ public final class ContextOuterClass { hash = (37 * hash) + CONTEXT_IDS_FIELD_NUMBER; hash = (53 * hash) + getContextIdsList().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -6330,29 +6079,23 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.ContextIdList.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - getContextIdsFieldBuilder(); - } } @java.lang.Override public Builder clear() { super.clear(); + bitField0_ = 0; if (contextIdsBuilder_ == null) { contextIds_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); } else { + contextIds_ = null; contextIdsBuilder_.clear(); } + bitField0_ = (bitField0_ & ~0x00000001); return this; } @@ -6378,7 +6121,15 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.ContextIdList buildPartial() { context.ContextOuterClass.ContextIdList result = new context.ContextOuterClass.ContextIdList(this); - int from_bitField0_ = bitField0_; + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(context.ContextOuterClass.ContextIdList result) { if (contextIdsBuilder_ == null) { if (((bitField0_ & 0x00000001) != 0)) { contextIds_ = java.util.Collections.unmodifiableList(contextIds_); @@ -6388,38 +6139,10 @@ public final class ContextOuterClass { } else { result.contextIds_ = contextIdsBuilder_.build(); } - onBuilt(); - return result; - } - - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); } - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.ContextIdList result) { + int from_bitField0_ = bitField0_; } @java.lang.Override @@ -6459,7 +6182,7 @@ public final class ContextOuterClass { } } } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -6471,17 +6194,47 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.ContextIdList parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + context.ContextOuterClass.ContextId m = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry); + if (contextIdsBuilder_ == null) { + ensureContextIdsIsMutable(); + contextIds_.add(m); + } else { + contextIdsBuilder_.addMessage(m); + } + break; + } + // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.ContextIdList) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } @@ -6751,7 +6504,17 @@ public final class ContextOuterClass { @java.lang.Override public ContextIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new ContextIdList(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -6822,57 +6585,6 @@ public final class ContextOuterClass { return new ContextList(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private ContextList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - contexts_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; - } - contexts_.add(input.readMessage(context.ContextOuterClass.Context.parser(), extensionRegistry)); - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000001) != 0)) { - contexts_ = java.util.Collections.unmodifiableList(contexts_); - } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_ContextList_descriptor; } @@ -6884,6 +6596,7 @@ public final class ContextOuterClass { public static final int CONTEXTS_FIELD_NUMBER = 1; + @SuppressWarnings("serial") private java.util.List contexts_; /** @@ -6944,7 +6657,7 @@ public final class ContextOuterClass { for (int i = 0; i < contexts_.size(); i++) { output.writeMessage(1, contexts_.get(i)); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -6956,7 +6669,7 @@ public final class ContextOuterClass { for (int i = 0; i < contexts_.size(); i++) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, contexts_.get(i)); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -6972,7 +6685,7 @@ public final class ContextOuterClass { context.ContextOuterClass.ContextList other = (context.ContextOuterClass.ContextList) obj; if (!getContextsList().equals(other.getContextsList())) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -6988,7 +6701,7 @@ public final class ContextOuterClass { hash = (37 * hash) + CONTEXTS_FIELD_NUMBER; hash = (53 * hash) + getContextsList().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -7082,29 +6795,23 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.ContextList.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - getContextsFieldBuilder(); - } } @java.lang.Override public Builder clear() { super.clear(); + bitField0_ = 0; if (contextsBuilder_ == null) { contexts_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); } else { + contexts_ = null; contextsBuilder_.clear(); } + bitField0_ = (bitField0_ & ~0x00000001); return this; } @@ -7130,7 +6837,15 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.ContextList buildPartial() { context.ContextOuterClass.ContextList result = new context.ContextOuterClass.ContextList(this); - int from_bitField0_ = bitField0_; + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(context.ContextOuterClass.ContextList result) { if (contextsBuilder_ == null) { if (((bitField0_ & 0x00000001) != 0)) { contexts_ = java.util.Collections.unmodifiableList(contexts_); @@ -7140,38 +6855,10 @@ public final class ContextOuterClass { } else { result.contexts_ = contextsBuilder_.build(); } - onBuilt(); - return result; - } - - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); } - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.ContextList result) { + int from_bitField0_ = bitField0_; } @java.lang.Override @@ -7211,7 +6898,7 @@ public final class ContextOuterClass { } } } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -7223,17 +6910,47 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.ContextList parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + context.ContextOuterClass.Context m = input.readMessage(context.ContextOuterClass.Context.parser(), extensionRegistry); + if (contextsBuilder_ == null) { + ensureContextsIsMutable(); + contexts_.add(m); + } else { + contextsBuilder_.addMessage(m); + } + break; + } + // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.ContextList) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } @@ -7503,7 +7220,17 @@ public final class ContextOuterClass { @java.lang.Override public ContextList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new ContextList(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -7582,70 +7309,6 @@ public final class ContextOuterClass { return new ContextEvent(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private ContextEvent(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - context.ContextOuterClass.Event.Builder subBuilder = null; - if (event_ != null) { - subBuilder = event_.toBuilder(); - } - event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(event_); - event_ = subBuilder.buildPartial(); - } - break; - } - case 18: - { - context.ContextOuterClass.ContextId.Builder subBuilder = null; - if (contextId_ != null) { - subBuilder = contextId_.toBuilder(); - } - contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(contextId_); - contextId_ = subBuilder.buildPartial(); - } - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_ContextEvent_descriptor; } @@ -7682,7 +7345,7 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() { - return getEvent(); + return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_; } public static final int CONTEXT_ID_FIELD_NUMBER = 2; @@ -7712,7 +7375,7 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() { - return getContextId(); + return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_; } private byte memoizedIsInitialized = -1; @@ -7736,7 +7399,7 @@ public final class ContextOuterClass { if (contextId_ != null) { output.writeMessage(2, getContextId()); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -7751,7 +7414,7 @@ public final class ContextOuterClass { if (contextId_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getContextId()); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -7777,7 +7440,7 @@ public final class ContextOuterClass { if (!getContextId().equals(other.getContextId())) return false; } - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -7797,7 +7460,7 @@ public final class ContextOuterClass { hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER; hash = (53 * hash) + getContextId().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -7891,32 +7554,24 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.ContextEvent.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); - if (eventBuilder_ == null) { - event_ = null; - } else { - event_ = null; + bitField0_ = 0; + event_ = null; + if (eventBuilder_ != null) { + eventBuilder_.dispose(); eventBuilder_ = null; } - if (contextIdBuilder_ == null) { - contextId_ = null; - } else { - contextId_ = null; + contextId_ = null; + if (contextIdBuilder_ != null) { + contextIdBuilder_.dispose(); contextIdBuilder_ = null; } return this; @@ -7944,48 +7599,21 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.ContextEvent buildPartial() { context.ContextOuterClass.ContextEvent result = new context.ContextOuterClass.ContextEvent(this); - if (eventBuilder_ == null) { - result.event_ = event_; - } else { - result.event_ = eventBuilder_.build(); - } - if (contextIdBuilder_ == null) { - result.contextId_ = contextId_; - } else { - result.contextId_ = contextIdBuilder_.build(); + if (bitField0_ != 0) { + buildPartial0(result); } onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.ContextEvent result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build(); + } } @java.lang.Override @@ -8007,7 +7635,7 @@ public final class ContextOuterClass { if (other.hasContextId()) { mergeContextId(other.getContextId()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -8019,20 +7647,54 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.ContextEvent parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 18: + { + input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000002; + break; + } + // case 18 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.ContextEvent) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } + private int bitField0_; + private context.ContextOuterClass.Event event_; private com.google.protobuf.SingleFieldBuilderV3 eventBuilder_; @@ -8042,7 +7704,7 @@ public final class ContextOuterClass { * @return Whether the event field is set. */ public boolean hasEvent() { - return eventBuilder_ != null || event_ != null; + return ((bitField0_ & 0x00000001) != 0); } /** @@ -8066,10 +7728,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } event_ = value; - onChanged(); } else { eventBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -8079,10 +7742,11 @@ public final class ContextOuterClass { public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) { if (eventBuilder_ == null) { event_ = builderForValue.build(); - onChanged(); } else { eventBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -8091,15 +7755,16 @@ public final class ContextOuterClass { */ public Builder mergeEvent(context.ContextOuterClass.Event value) { if (eventBuilder_ == null) { - if (event_ != null) { - event_ = context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) { + getEventBuilder().mergeFrom(value); } else { event_ = value; } - onChanged(); } else { eventBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -8107,13 +7772,13 @@ public final class ContextOuterClass { * .context.Event event = 1; */ public Builder clearEvent() { - if (eventBuilder_ == null) { - event_ = null; - onChanged(); - } else { - event_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + event_ = null; + if (eventBuilder_ != null) { + eventBuilder_.dispose(); eventBuilder_ = null; } + onChanged(); return this; } @@ -8121,6 +7786,7 @@ public final class ContextOuterClass { * .context.Event event = 1; */ public context.ContextOuterClass.Event.Builder getEventBuilder() { + bitField0_ |= 0x00000001; onChanged(); return getEventFieldBuilder().getBuilder(); } @@ -8156,7 +7822,7 @@ public final class ContextOuterClass { * @return Whether the contextId field is set. */ public boolean hasContextId() { - return contextIdBuilder_ != null || contextId_ != null; + return ((bitField0_ & 0x00000002) != 0); } /** @@ -8180,10 +7846,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } contextId_ = value; - onChanged(); } else { contextIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000002; + onChanged(); return this; } @@ -8193,10 +7860,11 @@ public final class ContextOuterClass { public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) { if (contextIdBuilder_ == null) { contextId_ = builderForValue.build(); - onChanged(); } else { contextIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000002; + onChanged(); return this; } @@ -8205,15 +7873,16 @@ public final class ContextOuterClass { */ public Builder mergeContextId(context.ContextOuterClass.ContextId value) { if (contextIdBuilder_ == null) { - if (contextId_ != null) { - contextId_ = context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000002) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) { + getContextIdBuilder().mergeFrom(value); } else { contextId_ = value; } - onChanged(); } else { contextIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000002; + onChanged(); return this; } @@ -8221,13 +7890,13 @@ public final class ContextOuterClass { * .context.ContextId context_id = 2; */ public Builder clearContextId() { - if (contextIdBuilder_ == null) { - contextId_ = null; - onChanged(); - } else { - contextId_ = null; + bitField0_ = (bitField0_ & ~0x00000002); + contextId_ = null; + if (contextIdBuilder_ != null) { + contextIdBuilder_.dispose(); contextIdBuilder_ = null; } + onChanged(); return this; } @@ -8235,6 +7904,7 @@ public final class ContextOuterClass { * .context.ContextId context_id = 2; */ public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() { + bitField0_ |= 0x00000002; onChanged(); return getContextIdFieldBuilder().getBuilder(); } @@ -8288,7 +7958,17 @@ public final class ContextOuterClass { @java.lang.Override public ContextEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new ContextEvent(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -8371,70 +8051,6 @@ public final class ContextOuterClass { return new TopologyId(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private TopologyId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - context.ContextOuterClass.ContextId.Builder subBuilder = null; - if (contextId_ != null) { - subBuilder = contextId_.toBuilder(); - } - contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(contextId_); - contextId_ = subBuilder.buildPartial(); - } - break; - } - case 18: - { - context.ContextOuterClass.Uuid.Builder subBuilder = null; - if (topologyUuid_ != null) { - subBuilder = topologyUuid_.toBuilder(); - } - topologyUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(topologyUuid_); - topologyUuid_ = subBuilder.buildPartial(); - } - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_TopologyId_descriptor; } @@ -8471,7 +8087,7 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() { - return getContextId(); + return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_; } public static final int TOPOLOGY_UUID_FIELD_NUMBER = 2; @@ -8501,7 +8117,7 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.UuidOrBuilder getTopologyUuidOrBuilder() { - return getTopologyUuid(); + return topologyUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : topologyUuid_; } private byte memoizedIsInitialized = -1; @@ -8525,7 +8141,7 @@ public final class ContextOuterClass { if (topologyUuid_ != null) { output.writeMessage(2, getTopologyUuid()); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -8540,7 +8156,7 @@ public final class ContextOuterClass { if (topologyUuid_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getTopologyUuid()); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -8566,7 +8182,7 @@ public final class ContextOuterClass { if (!getTopologyUuid().equals(other.getTopologyUuid())) return false; } - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -8586,7 +8202,7 @@ public final class ContextOuterClass { hash = (37 * hash) + TOPOLOGY_UUID_FIELD_NUMBER; hash = (53 * hash) + getTopologyUuid().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -8684,32 +8300,24 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.TopologyId.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); - if (contextIdBuilder_ == null) { - contextId_ = null; - } else { - contextId_ = null; + bitField0_ = 0; + contextId_ = null; + if (contextIdBuilder_ != null) { + contextIdBuilder_.dispose(); contextIdBuilder_ = null; } - if (topologyUuidBuilder_ == null) { - topologyUuid_ = null; - } else { - topologyUuid_ = null; + topologyUuid_ = null; + if (topologyUuidBuilder_ != null) { + topologyUuidBuilder_.dispose(); topologyUuidBuilder_ = null; } return this; @@ -8737,48 +8345,21 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.TopologyId buildPartial() { context.ContextOuterClass.TopologyId result = new context.ContextOuterClass.TopologyId(this); - if (contextIdBuilder_ == null) { - result.contextId_ = contextId_; - } else { - result.contextId_ = contextIdBuilder_.build(); - } - if (topologyUuidBuilder_ == null) { - result.topologyUuid_ = topologyUuid_; - } else { - result.topologyUuid_ = topologyUuidBuilder_.build(); + if (bitField0_ != 0) { + buildPartial0(result); } onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.TopologyId result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.topologyUuid_ = topologyUuidBuilder_ == null ? topologyUuid_ : topologyUuidBuilder_.build(); + } } @java.lang.Override @@ -8800,7 +8381,7 @@ public final class ContextOuterClass { if (other.hasTopologyUuid()) { mergeTopologyUuid(other.getTopologyUuid()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -8812,20 +8393,54 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.TopologyId parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 18: + { + input.readMessage(getTopologyUuidFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000002; + break; + } + // case 18 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.TopologyId) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } + private int bitField0_; + private context.ContextOuterClass.ContextId contextId_; private com.google.protobuf.SingleFieldBuilderV3 contextIdBuilder_; @@ -8835,7 +8450,7 @@ public final class ContextOuterClass { * @return Whether the contextId field is set. */ public boolean hasContextId() { - return contextIdBuilder_ != null || contextId_ != null; + return ((bitField0_ & 0x00000001) != 0); } /** @@ -8859,10 +8474,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } contextId_ = value; - onChanged(); } else { contextIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -8872,10 +8488,11 @@ public final class ContextOuterClass { public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) { if (contextIdBuilder_ == null) { contextId_ = builderForValue.build(); - onChanged(); } else { contextIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -8884,15 +8501,16 @@ public final class ContextOuterClass { */ public Builder mergeContextId(context.ContextOuterClass.ContextId value) { if (contextIdBuilder_ == null) { - if (contextId_ != null) { - contextId_ = context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) { + getContextIdBuilder().mergeFrom(value); } else { contextId_ = value; } - onChanged(); } else { contextIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -8900,13 +8518,13 @@ public final class ContextOuterClass { * .context.ContextId context_id = 1; */ public Builder clearContextId() { - if (contextIdBuilder_ == null) { - contextId_ = null; - onChanged(); - } else { - contextId_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + contextId_ = null; + if (contextIdBuilder_ != null) { + contextIdBuilder_.dispose(); contextIdBuilder_ = null; } + onChanged(); return this; } @@ -8914,6 +8532,7 @@ public final class ContextOuterClass { * .context.ContextId context_id = 1; */ public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() { + bitField0_ |= 0x00000001; onChanged(); return getContextIdFieldBuilder().getBuilder(); } @@ -8949,7 +8568,7 @@ public final class ContextOuterClass { * @return Whether the topologyUuid field is set. */ public boolean hasTopologyUuid() { - return topologyUuidBuilder_ != null || topologyUuid_ != null; + return ((bitField0_ & 0x00000002) != 0); } /** @@ -8973,10 +8592,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } topologyUuid_ = value; - onChanged(); } else { topologyUuidBuilder_.setMessage(value); } + bitField0_ |= 0x00000002; + onChanged(); return this; } @@ -8986,10 +8606,11 @@ public final class ContextOuterClass { public Builder setTopologyUuid(context.ContextOuterClass.Uuid.Builder builderForValue) { if (topologyUuidBuilder_ == null) { topologyUuid_ = builderForValue.build(); - onChanged(); } else { topologyUuidBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000002; + onChanged(); return this; } @@ -8998,15 +8619,16 @@ public final class ContextOuterClass { */ public Builder mergeTopologyUuid(context.ContextOuterClass.Uuid value) { if (topologyUuidBuilder_ == null) { - if (topologyUuid_ != null) { - topologyUuid_ = context.ContextOuterClass.Uuid.newBuilder(topologyUuid_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000002) != 0) && topologyUuid_ != null && topologyUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) { + getTopologyUuidBuilder().mergeFrom(value); } else { topologyUuid_ = value; } - onChanged(); } else { topologyUuidBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000002; + onChanged(); return this; } @@ -9014,13 +8636,13 @@ public final class ContextOuterClass { * .context.Uuid topology_uuid = 2; */ public Builder clearTopologyUuid() { - if (topologyUuidBuilder_ == null) { - topologyUuid_ = null; - onChanged(); - } else { - topologyUuid_ = null; + bitField0_ = (bitField0_ & ~0x00000002); + topologyUuid_ = null; + if (topologyUuidBuilder_ != null) { + topologyUuidBuilder_.dispose(); topologyUuidBuilder_ = null; } + onChanged(); return this; } @@ -9028,6 +8650,7 @@ public final class ContextOuterClass { * .context.Uuid topology_uuid = 2; */ public context.ContextOuterClass.Uuid.Builder getTopologyUuidBuilder() { + bitField0_ |= 0x00000002; onChanged(); return getTopologyUuidFieldBuilder().getBuilder(); } @@ -9081,7 +8704,17 @@ public final class ContextOuterClass { @java.lang.Override public TopologyId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new TopologyId(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -9208,88 +8841,6 @@ public final class ContextOuterClass { return new Topology(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private Topology(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - context.ContextOuterClass.TopologyId.Builder subBuilder = null; - if (topologyId_ != null) { - subBuilder = topologyId_.toBuilder(); - } - topologyId_ = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(topologyId_); - topologyId_ = subBuilder.buildPartial(); - } - break; - } - case 18: - { - java.lang.String s = input.readStringRequireUtf8(); - name_ = s; - break; - } - case 26: - { - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - deviceIds_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; - } - deviceIds_.add(input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry)); - break; - } - case 34: - { - if (!((mutable_bitField0_ & 0x00000002) != 0)) { - linkIds_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000002; - } - linkIds_.add(input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry)); - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000001) != 0)) { - deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_); - } - if (((mutable_bitField0_ & 0x00000002) != 0)) { - linkIds_ = java.util.Collections.unmodifiableList(linkIds_); - } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_Topology_descriptor; } @@ -9326,12 +8877,13 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() { - return getTopologyId(); + return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_; } public static final int NAME_FIELD_NUMBER = 2; - private volatile java.lang.Object name_; + @SuppressWarnings("serial") + private volatile java.lang.Object name_ = ""; /** * string name = 2; @@ -9368,6 +8920,7 @@ public final class ContextOuterClass { public static final int DEVICE_IDS_FIELD_NUMBER = 3; + @SuppressWarnings("serial") private java.util.List deviceIds_; /** @@ -9412,6 +8965,7 @@ public final class ContextOuterClass { public static final int LINK_IDS_FIELD_NUMBER = 4; + @SuppressWarnings("serial") private java.util.List linkIds_; /** @@ -9472,7 +9026,7 @@ public final class ContextOuterClass { if (topologyId_ != null) { output.writeMessage(1, getTopologyId()); } - if (!getNameBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_); } for (int i = 0; i < deviceIds_.size(); i++) { @@ -9481,7 +9035,7 @@ public final class ContextOuterClass { for (int i = 0; i < linkIds_.size(); i++) { output.writeMessage(4, linkIds_.get(i)); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -9493,7 +9047,7 @@ public final class ContextOuterClass { if (topologyId_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getTopologyId()); } - if (!getNameBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_); } for (int i = 0; i < deviceIds_.size(); i++) { @@ -9502,7 +9056,7 @@ public final class ContextOuterClass { for (int i = 0; i < linkIds_.size(); i++) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, linkIds_.get(i)); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -9528,7 +9082,7 @@ public final class ContextOuterClass { return false; if (!getLinkIdsList().equals(other.getLinkIdsList())) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -9554,7 +9108,7 @@ public final class ContextOuterClass { hash = (37 * hash) + LINK_IDS_FIELD_NUMBER; hash = (53 * hash) + getLinkIdsList().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -9648,43 +9202,36 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.Topology.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - getDeviceIdsFieldBuilder(); - getLinkIdsFieldBuilder(); - } } @java.lang.Override public Builder clear() { super.clear(); - if (topologyIdBuilder_ == null) { - topologyId_ = null; - } else { - topologyId_ = null; + bitField0_ = 0; + topologyId_ = null; + if (topologyIdBuilder_ != null) { + topologyIdBuilder_.dispose(); topologyIdBuilder_ = null; } name_ = ""; if (deviceIdsBuilder_ == null) { deviceIds_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); } else { + deviceIds_ = null; deviceIdsBuilder_.clear(); } + bitField0_ = (bitField0_ & ~0x00000004); if (linkIdsBuilder_ == null) { linkIds_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000002); } else { + linkIds_ = null; linkIdsBuilder_.clear(); } + bitField0_ = (bitField0_ & ~0x00000008); return this; } @@ -9710,63 +9257,43 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.Topology buildPartial() { context.ContextOuterClass.Topology result = new context.ContextOuterClass.Topology(this); - int from_bitField0_ = bitField0_; - if (topologyIdBuilder_ == null) { - result.topologyId_ = topologyId_; - } else { - result.topologyId_ = topologyIdBuilder_.build(); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); } - result.name_ = name_; + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(context.ContextOuterClass.Topology result) { if (deviceIdsBuilder_ == null) { - if (((bitField0_ & 0x00000001) != 0)) { + if (((bitField0_ & 0x00000004) != 0)) { deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_); - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); } result.deviceIds_ = deviceIds_; } else { result.deviceIds_ = deviceIdsBuilder_.build(); } if (linkIdsBuilder_ == null) { - if (((bitField0_ & 0x00000002) != 0)) { + if (((bitField0_ & 0x00000008) != 0)) { linkIds_ = java.util.Collections.unmodifiableList(linkIds_); - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000008); } result.linkIds_ = linkIds_; } else { result.linkIds_ = linkIdsBuilder_.build(); } - onBuilt(); - return result; - } - - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); } - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.Topology result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.topologyId_ = topologyIdBuilder_ == null ? topologyId_ : topologyIdBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.name_ = name_; + } } @java.lang.Override @@ -9787,13 +9314,14 @@ public final class ContextOuterClass { } if (!other.getName().isEmpty()) { name_ = other.name_; + bitField0_ |= 0x00000002; onChanged(); } if (deviceIdsBuilder_ == null) { if (!other.deviceIds_.isEmpty()) { if (deviceIds_.isEmpty()) { deviceIds_ = other.deviceIds_; - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); } else { ensureDeviceIdsIsMutable(); deviceIds_.addAll(other.deviceIds_); @@ -9806,7 +9334,7 @@ public final class ContextOuterClass { deviceIdsBuilder_.dispose(); deviceIdsBuilder_ = null; deviceIds_ = other.deviceIds_; - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); deviceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDeviceIdsFieldBuilder() : null; } else { deviceIdsBuilder_.addAllMessages(other.deviceIds_); @@ -9817,7 +9345,7 @@ public final class ContextOuterClass { if (!other.linkIds_.isEmpty()) { if (linkIds_.isEmpty()) { linkIds_ = other.linkIds_; - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000008); } else { ensureLinkIdsIsMutable(); linkIds_.addAll(other.linkIds_); @@ -9830,14 +9358,14 @@ public final class ContextOuterClass { linkIdsBuilder_.dispose(); linkIdsBuilder_ = null; linkIds_ = other.linkIds_; - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000008); linkIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinkIdsFieldBuilder() : null; } else { linkIdsBuilder_.addAllMessages(other.linkIds_); } } } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -9849,17 +9377,73 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.Topology parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getTopologyIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 18: + { + name_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } + // case 18 + case 26: + { + context.ContextOuterClass.DeviceId m = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry); + if (deviceIdsBuilder_ == null) { + ensureDeviceIdsIsMutable(); + deviceIds_.add(m); + } else { + deviceIdsBuilder_.addMessage(m); + } + break; + } + // case 26 + case 34: + { + context.ContextOuterClass.LinkId m = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry); + if (linkIdsBuilder_ == null) { + ensureLinkIdsIsMutable(); + linkIds_.add(m); + } else { + linkIdsBuilder_.addMessage(m); + } + break; + } + // case 34 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.Topology) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } @@ -9874,7 +9458,7 @@ public final class ContextOuterClass { * @return Whether the topologyId field is set. */ public boolean hasTopologyId() { - return topologyIdBuilder_ != null || topologyId_ != null; + return ((bitField0_ & 0x00000001) != 0); } /** @@ -9898,10 +9482,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } topologyId_ = value; - onChanged(); } else { topologyIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -9911,10 +9496,11 @@ public final class ContextOuterClass { public Builder setTopologyId(context.ContextOuterClass.TopologyId.Builder builderForValue) { if (topologyIdBuilder_ == null) { topologyId_ = builderForValue.build(); - onChanged(); } else { topologyIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -9923,15 +9509,16 @@ public final class ContextOuterClass { */ public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) { if (topologyIdBuilder_ == null) { - if (topologyId_ != null) { - topologyId_ = context.ContextOuterClass.TopologyId.newBuilder(topologyId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000001) != 0) && topologyId_ != null && topologyId_ != context.ContextOuterClass.TopologyId.getDefaultInstance()) { + getTopologyIdBuilder().mergeFrom(value); } else { topologyId_ = value; } - onChanged(); } else { topologyIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -9939,13 +9526,13 @@ public final class ContextOuterClass { * .context.TopologyId topology_id = 1; */ public Builder clearTopologyId() { - if (topologyIdBuilder_ == null) { - topologyId_ = null; - onChanged(); - } else { - topologyId_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + topologyId_ = null; + if (topologyIdBuilder_ != null) { + topologyIdBuilder_.dispose(); topologyIdBuilder_ = null; } + onChanged(); return this; } @@ -9953,6 +9540,7 @@ public final class ContextOuterClass { * .context.TopologyId topology_id = 1; */ public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() { + bitField0_ |= 0x00000001; onChanged(); return getTopologyIdFieldBuilder().getBuilder(); } @@ -10022,6 +9610,7 @@ public final class ContextOuterClass { throw new NullPointerException(); } name_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -10032,6 +9621,7 @@ public final class ContextOuterClass { */ public Builder clearName() { name_ = getDefaultInstance().getName(); + bitField0_ = (bitField0_ & ~0x00000002); onChanged(); return this; } @@ -10047,6 +9637,7 @@ public final class ContextOuterClass { } checkByteStringIsUtf8(value); name_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -10054,9 +9645,9 @@ public final class ContextOuterClass { private java.util.List deviceIds_ = java.util.Collections.emptyList(); private void ensureDeviceIdsIsMutable() { - if (!((bitField0_ & 0x00000001) != 0)) { + if (!((bitField0_ & 0x00000004) != 0)) { deviceIds_ = new java.util.ArrayList(deviceIds_); - bitField0_ |= 0x00000001; + bitField0_ |= 0x00000004; } } @@ -10208,7 +9799,7 @@ public final class ContextOuterClass { public Builder clearDeviceIds() { if (deviceIdsBuilder_ == null) { deviceIds_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); onChanged(); } else { deviceIdsBuilder_.clear(); @@ -10282,7 +9873,7 @@ public final class ContextOuterClass { private com.google.protobuf.RepeatedFieldBuilderV3 getDeviceIdsFieldBuilder() { if (deviceIdsBuilder_ == null) { - deviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(deviceIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); + deviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(deviceIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean()); deviceIds_ = null; } return deviceIdsBuilder_; @@ -10291,9 +9882,9 @@ public final class ContextOuterClass { private java.util.List linkIds_ = java.util.Collections.emptyList(); private void ensureLinkIdsIsMutable() { - if (!((bitField0_ & 0x00000002) != 0)) { + if (!((bitField0_ & 0x00000008) != 0)) { linkIds_ = new java.util.ArrayList(linkIds_); - bitField0_ |= 0x00000002; + bitField0_ |= 0x00000008; } } @@ -10445,7 +10036,7 @@ public final class ContextOuterClass { public Builder clearLinkIds() { if (linkIdsBuilder_ == null) { linkIds_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000008); onChanged(); } else { linkIdsBuilder_.clear(); @@ -10519,7 +10110,7 @@ public final class ContextOuterClass { private com.google.protobuf.RepeatedFieldBuilderV3 getLinkIdsFieldBuilder() { if (linkIdsBuilder_ == null) { - linkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(linkIds_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean()); + linkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(linkIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean()); linkIds_ = null; } return linkIdsBuilder_; @@ -10552,7 +10143,17 @@ public final class ContextOuterClass { @java.lang.Override public Topology parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new Topology(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -10679,88 +10280,6 @@ public final class ContextOuterClass { return new TopologyDetails(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private TopologyDetails(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - context.ContextOuterClass.TopologyId.Builder subBuilder = null; - if (topologyId_ != null) { - subBuilder = topologyId_.toBuilder(); - } - topologyId_ = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(topologyId_); - topologyId_ = subBuilder.buildPartial(); - } - break; - } - case 18: - { - java.lang.String s = input.readStringRequireUtf8(); - name_ = s; - break; - } - case 26: - { - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - devices_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; - } - devices_.add(input.readMessage(context.ContextOuterClass.Device.parser(), extensionRegistry)); - break; - } - case 34: - { - if (!((mutable_bitField0_ & 0x00000002) != 0)) { - links_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000002; - } - links_.add(input.readMessage(context.ContextOuterClass.Link.parser(), extensionRegistry)); - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000001) != 0)) { - devices_ = java.util.Collections.unmodifiableList(devices_); - } - if (((mutable_bitField0_ & 0x00000002) != 0)) { - links_ = java.util.Collections.unmodifiableList(links_); - } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_TopologyDetails_descriptor; } @@ -10797,12 +10316,13 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() { - return getTopologyId(); + return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_; } public static final int NAME_FIELD_NUMBER = 2; - private volatile java.lang.Object name_; + @SuppressWarnings("serial") + private volatile java.lang.Object name_ = ""; /** * string name = 2; @@ -10839,6 +10359,7 @@ public final class ContextOuterClass { public static final int DEVICES_FIELD_NUMBER = 3; + @SuppressWarnings("serial") private java.util.List devices_; /** @@ -10883,6 +10404,7 @@ public final class ContextOuterClass { public static final int LINKS_FIELD_NUMBER = 4; + @SuppressWarnings("serial") private java.util.List links_; /** @@ -10943,7 +10465,7 @@ public final class ContextOuterClass { if (topologyId_ != null) { output.writeMessage(1, getTopologyId()); } - if (!getNameBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_); } for (int i = 0; i < devices_.size(); i++) { @@ -10952,7 +10474,7 @@ public final class ContextOuterClass { for (int i = 0; i < links_.size(); i++) { output.writeMessage(4, links_.get(i)); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -10964,7 +10486,7 @@ public final class ContextOuterClass { if (topologyId_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getTopologyId()); } - if (!getNameBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_); } for (int i = 0; i < devices_.size(); i++) { @@ -10973,7 +10495,7 @@ public final class ContextOuterClass { for (int i = 0; i < links_.size(); i++) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, links_.get(i)); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -10999,7 +10521,7 @@ public final class ContextOuterClass { return false; if (!getLinksList().equals(other.getLinksList())) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -11025,7 +10547,7 @@ public final class ContextOuterClass { hash = (37 * hash) + LINKS_FIELD_NUMBER; hash = (53 * hash) + getLinksList().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -11119,43 +10641,36 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.TopologyDetails.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - getDevicesFieldBuilder(); - getLinksFieldBuilder(); - } } @java.lang.Override public Builder clear() { super.clear(); - if (topologyIdBuilder_ == null) { - topologyId_ = null; - } else { - topologyId_ = null; + bitField0_ = 0; + topologyId_ = null; + if (topologyIdBuilder_ != null) { + topologyIdBuilder_.dispose(); topologyIdBuilder_ = null; } name_ = ""; if (devicesBuilder_ == null) { devices_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); } else { + devices_ = null; devicesBuilder_.clear(); } + bitField0_ = (bitField0_ & ~0x00000004); if (linksBuilder_ == null) { links_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000002); } else { + links_ = null; linksBuilder_.clear(); } + bitField0_ = (bitField0_ & ~0x00000008); return this; } @@ -11181,63 +10696,43 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.TopologyDetails buildPartial() { context.ContextOuterClass.TopologyDetails result = new context.ContextOuterClass.TopologyDetails(this); - int from_bitField0_ = bitField0_; - if (topologyIdBuilder_ == null) { - result.topologyId_ = topologyId_; - } else { - result.topologyId_ = topologyIdBuilder_.build(); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); } - result.name_ = name_; + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(context.ContextOuterClass.TopologyDetails result) { if (devicesBuilder_ == null) { - if (((bitField0_ & 0x00000001) != 0)) { + if (((bitField0_ & 0x00000004) != 0)) { devices_ = java.util.Collections.unmodifiableList(devices_); - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); } result.devices_ = devices_; } else { result.devices_ = devicesBuilder_.build(); } if (linksBuilder_ == null) { - if (((bitField0_ & 0x00000002) != 0)) { + if (((bitField0_ & 0x00000008) != 0)) { links_ = java.util.Collections.unmodifiableList(links_); - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000008); } result.links_ = links_; } else { result.links_ = linksBuilder_.build(); } - onBuilt(); - return result; - } - - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); } - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.TopologyDetails result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.topologyId_ = topologyIdBuilder_ == null ? topologyId_ : topologyIdBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.name_ = name_; + } } @java.lang.Override @@ -11258,13 +10753,14 @@ public final class ContextOuterClass { } if (!other.getName().isEmpty()) { name_ = other.name_; + bitField0_ |= 0x00000002; onChanged(); } if (devicesBuilder_ == null) { if (!other.devices_.isEmpty()) { if (devices_.isEmpty()) { devices_ = other.devices_; - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); } else { ensureDevicesIsMutable(); devices_.addAll(other.devices_); @@ -11277,7 +10773,7 @@ public final class ContextOuterClass { devicesBuilder_.dispose(); devicesBuilder_ = null; devices_ = other.devices_; - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); devicesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDevicesFieldBuilder() : null; } else { devicesBuilder_.addAllMessages(other.devices_); @@ -11288,7 +10784,7 @@ public final class ContextOuterClass { if (!other.links_.isEmpty()) { if (links_.isEmpty()) { links_ = other.links_; - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000008); } else { ensureLinksIsMutable(); links_.addAll(other.links_); @@ -11301,14 +10797,14 @@ public final class ContextOuterClass { linksBuilder_.dispose(); linksBuilder_ = null; links_ = other.links_; - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000008); linksBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinksFieldBuilder() : null; } else { linksBuilder_.addAllMessages(other.links_); } } } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -11320,17 +10816,73 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.TopologyDetails parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getTopologyIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 18: + { + name_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } + // case 18 + case 26: + { + context.ContextOuterClass.Device m = input.readMessage(context.ContextOuterClass.Device.parser(), extensionRegistry); + if (devicesBuilder_ == null) { + ensureDevicesIsMutable(); + devices_.add(m); + } else { + devicesBuilder_.addMessage(m); + } + break; + } + // case 26 + case 34: + { + context.ContextOuterClass.Link m = input.readMessage(context.ContextOuterClass.Link.parser(), extensionRegistry); + if (linksBuilder_ == null) { + ensureLinksIsMutable(); + links_.add(m); + } else { + linksBuilder_.addMessage(m); + } + break; + } + // case 34 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.TopologyDetails) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } @@ -11345,7 +10897,7 @@ public final class ContextOuterClass { * @return Whether the topologyId field is set. */ public boolean hasTopologyId() { - return topologyIdBuilder_ != null || topologyId_ != null; + return ((bitField0_ & 0x00000001) != 0); } /** @@ -11369,10 +10921,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } topologyId_ = value; - onChanged(); } else { topologyIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -11382,10 +10935,11 @@ public final class ContextOuterClass { public Builder setTopologyId(context.ContextOuterClass.TopologyId.Builder builderForValue) { if (topologyIdBuilder_ == null) { topologyId_ = builderForValue.build(); - onChanged(); } else { topologyIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -11394,15 +10948,16 @@ public final class ContextOuterClass { */ public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) { if (topologyIdBuilder_ == null) { - if (topologyId_ != null) { - topologyId_ = context.ContextOuterClass.TopologyId.newBuilder(topologyId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000001) != 0) && topologyId_ != null && topologyId_ != context.ContextOuterClass.TopologyId.getDefaultInstance()) { + getTopologyIdBuilder().mergeFrom(value); } else { topologyId_ = value; } - onChanged(); } else { topologyIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -11410,13 +10965,13 @@ public final class ContextOuterClass { * .context.TopologyId topology_id = 1; */ public Builder clearTopologyId() { - if (topologyIdBuilder_ == null) { - topologyId_ = null; - onChanged(); - } else { - topologyId_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + topologyId_ = null; + if (topologyIdBuilder_ != null) { + topologyIdBuilder_.dispose(); topologyIdBuilder_ = null; } + onChanged(); return this; } @@ -11424,6 +10979,7 @@ public final class ContextOuterClass { * .context.TopologyId topology_id = 1; */ public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() { + bitField0_ |= 0x00000001; onChanged(); return getTopologyIdFieldBuilder().getBuilder(); } @@ -11493,6 +11049,7 @@ public final class ContextOuterClass { throw new NullPointerException(); } name_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -11503,6 +11060,7 @@ public final class ContextOuterClass { */ public Builder clearName() { name_ = getDefaultInstance().getName(); + bitField0_ = (bitField0_ & ~0x00000002); onChanged(); return this; } @@ -11518,6 +11076,7 @@ public final class ContextOuterClass { } checkByteStringIsUtf8(value); name_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -11525,9 +11084,9 @@ public final class ContextOuterClass { private java.util.List devices_ = java.util.Collections.emptyList(); private void ensureDevicesIsMutable() { - if (!((bitField0_ & 0x00000001) != 0)) { + if (!((bitField0_ & 0x00000004) != 0)) { devices_ = new java.util.ArrayList(devices_); - bitField0_ |= 0x00000001; + bitField0_ |= 0x00000004; } } @@ -11679,7 +11238,7 @@ public final class ContextOuterClass { public Builder clearDevices() { if (devicesBuilder_ == null) { devices_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); onChanged(); } else { devicesBuilder_.clear(); @@ -11753,7 +11312,7 @@ public final class ContextOuterClass { private com.google.protobuf.RepeatedFieldBuilderV3 getDevicesFieldBuilder() { if (devicesBuilder_ == null) { - devicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(devices_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); + devicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(devices_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean()); devices_ = null; } return devicesBuilder_; @@ -11762,9 +11321,9 @@ public final class ContextOuterClass { private java.util.List links_ = java.util.Collections.emptyList(); private void ensureLinksIsMutable() { - if (!((bitField0_ & 0x00000002) != 0)) { + if (!((bitField0_ & 0x00000008) != 0)) { links_ = new java.util.ArrayList(links_); - bitField0_ |= 0x00000002; + bitField0_ |= 0x00000008; } } @@ -11916,7 +11475,7 @@ public final class ContextOuterClass { public Builder clearLinks() { if (linksBuilder_ == null) { links_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000008); onChanged(); } else { linksBuilder_.clear(); @@ -11990,7 +11549,7 @@ public final class ContextOuterClass { private com.google.protobuf.RepeatedFieldBuilderV3 getLinksFieldBuilder() { if (linksBuilder_ == null) { - linksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(links_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean()); + linksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(links_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean()); links_ = null; } return linksBuilder_; @@ -12023,7 +11582,17 @@ public final class ContextOuterClass { @java.lang.Override public TopologyDetails parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new TopologyDetails(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -12094,57 +11663,6 @@ public final class ContextOuterClass { return new TopologyIdList(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private TopologyIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - topologyIds_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; - } - topologyIds_.add(input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry)); - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000001) != 0)) { - topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_); - } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_TopologyIdList_descriptor; } @@ -12156,6 +11674,7 @@ public final class ContextOuterClass { public static final int TOPOLOGY_IDS_FIELD_NUMBER = 1; + @SuppressWarnings("serial") private java.util.List topologyIds_; /** @@ -12216,7 +11735,7 @@ public final class ContextOuterClass { for (int i = 0; i < topologyIds_.size(); i++) { output.writeMessage(1, topologyIds_.get(i)); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -12228,7 +11747,7 @@ public final class ContextOuterClass { for (int i = 0; i < topologyIds_.size(); i++) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, topologyIds_.get(i)); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -12244,7 +11763,7 @@ public final class ContextOuterClass { context.ContextOuterClass.TopologyIdList other = (context.ContextOuterClass.TopologyIdList) obj; if (!getTopologyIdsList().equals(other.getTopologyIdsList())) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -12260,7 +11779,7 @@ public final class ContextOuterClass { hash = (37 * hash) + TOPOLOGY_IDS_FIELD_NUMBER; hash = (53 * hash) + getTopologyIdsList().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -12354,29 +11873,23 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.TopologyIdList.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - getTopologyIdsFieldBuilder(); - } } @java.lang.Override public Builder clear() { super.clear(); + bitField0_ = 0; if (topologyIdsBuilder_ == null) { topologyIds_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); } else { + topologyIds_ = null; topologyIdsBuilder_.clear(); } + bitField0_ = (bitField0_ & ~0x00000001); return this; } @@ -12402,7 +11915,15 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.TopologyIdList buildPartial() { context.ContextOuterClass.TopologyIdList result = new context.ContextOuterClass.TopologyIdList(this); - int from_bitField0_ = bitField0_; + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(context.ContextOuterClass.TopologyIdList result) { if (topologyIdsBuilder_ == null) { if (((bitField0_ & 0x00000001) != 0)) { topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_); @@ -12412,38 +11933,10 @@ public final class ContextOuterClass { } else { result.topologyIds_ = topologyIdsBuilder_.build(); } - onBuilt(); - return result; - } - - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); } - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.TopologyIdList result) { + int from_bitField0_ = bitField0_; } @java.lang.Override @@ -12483,7 +11976,7 @@ public final class ContextOuterClass { } } } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -12495,17 +11988,47 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.TopologyIdList parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + context.ContextOuterClass.TopologyId m = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry); + if (topologyIdsBuilder_ == null) { + ensureTopologyIdsIsMutable(); + topologyIds_.add(m); + } else { + topologyIdsBuilder_.addMessage(m); + } + break; + } + // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.TopologyIdList) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } @@ -12775,7 +12298,17 @@ public final class ContextOuterClass { @java.lang.Override public TopologyIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new TopologyIdList(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -12846,57 +12379,6 @@ public final class ContextOuterClass { return new TopologyList(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private TopologyList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - topologies_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; - } - topologies_.add(input.readMessage(context.ContextOuterClass.Topology.parser(), extensionRegistry)); - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000001) != 0)) { - topologies_ = java.util.Collections.unmodifiableList(topologies_); - } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_TopologyList_descriptor; } @@ -12908,6 +12390,7 @@ public final class ContextOuterClass { public static final int TOPOLOGIES_FIELD_NUMBER = 1; + @SuppressWarnings("serial") private java.util.List topologies_; /** @@ -12968,7 +12451,7 @@ public final class ContextOuterClass { for (int i = 0; i < topologies_.size(); i++) { output.writeMessage(1, topologies_.get(i)); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -12980,7 +12463,7 @@ public final class ContextOuterClass { for (int i = 0; i < topologies_.size(); i++) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, topologies_.get(i)); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -12996,7 +12479,7 @@ public final class ContextOuterClass { context.ContextOuterClass.TopologyList other = (context.ContextOuterClass.TopologyList) obj; if (!getTopologiesList().equals(other.getTopologiesList())) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -13012,7 +12495,7 @@ public final class ContextOuterClass { hash = (37 * hash) + TOPOLOGIES_FIELD_NUMBER; hash = (53 * hash) + getTopologiesList().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -13106,29 +12589,23 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.TopologyList.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - getTopologiesFieldBuilder(); - } } @java.lang.Override public Builder clear() { super.clear(); + bitField0_ = 0; if (topologiesBuilder_ == null) { topologies_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); } else { + topologies_ = null; topologiesBuilder_.clear(); } + bitField0_ = (bitField0_ & ~0x00000001); return this; } @@ -13154,7 +12631,15 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.TopologyList buildPartial() { context.ContextOuterClass.TopologyList result = new context.ContextOuterClass.TopologyList(this); - int from_bitField0_ = bitField0_; + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(context.ContextOuterClass.TopologyList result) { if (topologiesBuilder_ == null) { if (((bitField0_ & 0x00000001) != 0)) { topologies_ = java.util.Collections.unmodifiableList(topologies_); @@ -13164,38 +12649,10 @@ public final class ContextOuterClass { } else { result.topologies_ = topologiesBuilder_.build(); } - onBuilt(); - return result; - } - - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); } - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.TopologyList result) { + int from_bitField0_ = bitField0_; } @java.lang.Override @@ -13235,7 +12692,7 @@ public final class ContextOuterClass { } } } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -13247,17 +12704,47 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.TopologyList parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + context.ContextOuterClass.Topology m = input.readMessage(context.ContextOuterClass.Topology.parser(), extensionRegistry); + if (topologiesBuilder_ == null) { + ensureTopologiesIsMutable(); + topologies_.add(m); + } else { + topologiesBuilder_.addMessage(m); + } + break; + } + // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.TopologyList) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } @@ -13527,7 +13014,17 @@ public final class ContextOuterClass { @java.lang.Override public TopologyList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new TopologyList(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -13606,70 +13103,6 @@ public final class ContextOuterClass { return new TopologyEvent(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private TopologyEvent(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - context.ContextOuterClass.Event.Builder subBuilder = null; - if (event_ != null) { - subBuilder = event_.toBuilder(); - } - event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(event_); - event_ = subBuilder.buildPartial(); - } - break; - } - case 18: - { - context.ContextOuterClass.TopologyId.Builder subBuilder = null; - if (topologyId_ != null) { - subBuilder = topologyId_.toBuilder(); - } - topologyId_ = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(topologyId_); - topologyId_ = subBuilder.buildPartial(); - } - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_TopologyEvent_descriptor; } @@ -13706,7 +13139,7 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() { - return getEvent(); + return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_; } public static final int TOPOLOGY_ID_FIELD_NUMBER = 2; @@ -13736,7 +13169,7 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() { - return getTopologyId(); + return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_; } private byte memoizedIsInitialized = -1; @@ -13760,7 +13193,7 @@ public final class ContextOuterClass { if (topologyId_ != null) { output.writeMessage(2, getTopologyId()); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -13775,7 +13208,7 @@ public final class ContextOuterClass { if (topologyId_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getTopologyId()); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -13801,7 +13234,7 @@ public final class ContextOuterClass { if (!getTopologyId().equals(other.getTopologyId())) return false; } - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -13821,7 +13254,7 @@ public final class ContextOuterClass { hash = (37 * hash) + TOPOLOGY_ID_FIELD_NUMBER; hash = (53 * hash) + getTopologyId().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -13915,32 +13348,24 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.TopologyEvent.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); - if (eventBuilder_ == null) { - event_ = null; - } else { - event_ = null; + bitField0_ = 0; + event_ = null; + if (eventBuilder_ != null) { + eventBuilder_.dispose(); eventBuilder_ = null; } - if (topologyIdBuilder_ == null) { - topologyId_ = null; - } else { - topologyId_ = null; + topologyId_ = null; + if (topologyIdBuilder_ != null) { + topologyIdBuilder_.dispose(); topologyIdBuilder_ = null; } return this; @@ -13968,48 +13393,21 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.TopologyEvent buildPartial() { context.ContextOuterClass.TopologyEvent result = new context.ContextOuterClass.TopologyEvent(this); - if (eventBuilder_ == null) { - result.event_ = event_; - } else { - result.event_ = eventBuilder_.build(); - } - if (topologyIdBuilder_ == null) { - result.topologyId_ = topologyId_; - } else { - result.topologyId_ = topologyIdBuilder_.build(); + if (bitField0_ != 0) { + buildPartial0(result); } onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.TopologyEvent result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.topologyId_ = topologyIdBuilder_ == null ? topologyId_ : topologyIdBuilder_.build(); + } } @java.lang.Override @@ -14031,7 +13429,7 @@ public final class ContextOuterClass { if (other.hasTopologyId()) { mergeTopologyId(other.getTopologyId()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -14043,20 +13441,54 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.TopologyEvent parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 18: + { + input.readMessage(getTopologyIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000002; + break; + } + // case 18 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.TopologyEvent) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } + private int bitField0_; + private context.ContextOuterClass.Event event_; private com.google.protobuf.SingleFieldBuilderV3 eventBuilder_; @@ -14066,7 +13498,7 @@ public final class ContextOuterClass { * @return Whether the event field is set. */ public boolean hasEvent() { - return eventBuilder_ != null || event_ != null; + return ((bitField0_ & 0x00000001) != 0); } /** @@ -14090,10 +13522,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } event_ = value; - onChanged(); } else { eventBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -14103,10 +13536,11 @@ public final class ContextOuterClass { public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) { if (eventBuilder_ == null) { event_ = builderForValue.build(); - onChanged(); } else { eventBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -14115,15 +13549,16 @@ public final class ContextOuterClass { */ public Builder mergeEvent(context.ContextOuterClass.Event value) { if (eventBuilder_ == null) { - if (event_ != null) { - event_ = context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) { + getEventBuilder().mergeFrom(value); } else { event_ = value; } - onChanged(); } else { eventBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -14131,13 +13566,13 @@ public final class ContextOuterClass { * .context.Event event = 1; */ public Builder clearEvent() { - if (eventBuilder_ == null) { - event_ = null; - onChanged(); - } else { - event_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + event_ = null; + if (eventBuilder_ != null) { + eventBuilder_.dispose(); eventBuilder_ = null; } + onChanged(); return this; } @@ -14145,6 +13580,7 @@ public final class ContextOuterClass { * .context.Event event = 1; */ public context.ContextOuterClass.Event.Builder getEventBuilder() { + bitField0_ |= 0x00000001; onChanged(); return getEventFieldBuilder().getBuilder(); } @@ -14180,7 +13616,7 @@ public final class ContextOuterClass { * @return Whether the topologyId field is set. */ public boolean hasTopologyId() { - return topologyIdBuilder_ != null || topologyId_ != null; + return ((bitField0_ & 0x00000002) != 0); } /** @@ -14204,10 +13640,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } topologyId_ = value; - onChanged(); } else { topologyIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000002; + onChanged(); return this; } @@ -14217,10 +13654,11 @@ public final class ContextOuterClass { public Builder setTopologyId(context.ContextOuterClass.TopologyId.Builder builderForValue) { if (topologyIdBuilder_ == null) { topologyId_ = builderForValue.build(); - onChanged(); } else { topologyIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000002; + onChanged(); return this; } @@ -14229,15 +13667,16 @@ public final class ContextOuterClass { */ public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) { if (topologyIdBuilder_ == null) { - if (topologyId_ != null) { - topologyId_ = context.ContextOuterClass.TopologyId.newBuilder(topologyId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000002) != 0) && topologyId_ != null && topologyId_ != context.ContextOuterClass.TopologyId.getDefaultInstance()) { + getTopologyIdBuilder().mergeFrom(value); } else { topologyId_ = value; } - onChanged(); } else { topologyIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000002; + onChanged(); return this; } @@ -14245,13 +13684,13 @@ public final class ContextOuterClass { * .context.TopologyId topology_id = 2; */ public Builder clearTopologyId() { - if (topologyIdBuilder_ == null) { - topologyId_ = null; - onChanged(); - } else { - topologyId_ = null; + bitField0_ = (bitField0_ & ~0x00000002); + topologyId_ = null; + if (topologyIdBuilder_ != null) { + topologyIdBuilder_.dispose(); topologyIdBuilder_ = null; } + onChanged(); return this; } @@ -14259,6 +13698,7 @@ public final class ContextOuterClass { * .context.TopologyId topology_id = 2; */ public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() { + bitField0_ |= 0x00000002; onChanged(); return getTopologyIdFieldBuilder().getBuilder(); } @@ -14312,7 +13752,17 @@ public final class ContextOuterClass { @java.lang.Override public TopologyEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new TopologyEvent(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -14378,57 +13828,6 @@ public final class ContextOuterClass { return new DeviceId(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private DeviceId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - context.ContextOuterClass.Uuid.Builder subBuilder = null; - if (deviceUuid_ != null) { - subBuilder = deviceUuid_.toBuilder(); - } - deviceUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(deviceUuid_); - deviceUuid_ = subBuilder.buildPartial(); - } - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_DeviceId_descriptor; } @@ -14465,7 +13864,7 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.UuidOrBuilder getDeviceUuidOrBuilder() { - return getDeviceUuid(); + return deviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : deviceUuid_; } private byte memoizedIsInitialized = -1; @@ -14486,7 +13885,7 @@ public final class ContextOuterClass { if (deviceUuid_ != null) { output.writeMessage(1, getDeviceUuid()); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -14498,7 +13897,7 @@ public final class ContextOuterClass { if (deviceUuid_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getDeviceUuid()); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -14518,7 +13917,7 @@ public final class ContextOuterClass { if (!getDeviceUuid().equals(other.getDeviceUuid())) return false; } - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -14534,7 +13933,7 @@ public final class ContextOuterClass { hash = (37 * hash) + DEVICE_UUID_FIELD_NUMBER; hash = (53 * hash) + getDeviceUuid().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -14632,26 +14031,19 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.DeviceId.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); - if (deviceUuidBuilder_ == null) { - deviceUuid_ = null; - } else { - deviceUuid_ = null; + bitField0_ = 0; + deviceUuid_ = null; + if (deviceUuidBuilder_ != null) { + deviceUuidBuilder_.dispose(); deviceUuidBuilder_ = null; } return this; @@ -14679,43 +14071,18 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.DeviceId buildPartial() { context.ContextOuterClass.DeviceId result = new context.ContextOuterClass.DeviceId(this); - if (deviceUuidBuilder_ == null) { - result.deviceUuid_ = deviceUuid_; - } else { - result.deviceUuid_ = deviceUuidBuilder_.build(); + if (bitField0_ != 0) { + buildPartial0(result); } onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.DeviceId result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.deviceUuid_ = deviceUuidBuilder_ == null ? deviceUuid_ : deviceUuidBuilder_.build(); + } } @java.lang.Override @@ -14734,7 +14101,7 @@ public final class ContextOuterClass { if (other.hasDeviceUuid()) { mergeDeviceUuid(other.getDeviceUuid()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -14746,20 +14113,47 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.DeviceId parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getDeviceUuidFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.DeviceId) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } + private int bitField0_; + private context.ContextOuterClass.Uuid deviceUuid_; private com.google.protobuf.SingleFieldBuilderV3 deviceUuidBuilder_; @@ -14769,7 +14163,7 @@ public final class ContextOuterClass { * @return Whether the deviceUuid field is set. */ public boolean hasDeviceUuid() { - return deviceUuidBuilder_ != null || deviceUuid_ != null; + return ((bitField0_ & 0x00000001) != 0); } /** @@ -14793,10 +14187,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } deviceUuid_ = value; - onChanged(); } else { deviceUuidBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -14806,10 +14201,11 @@ public final class ContextOuterClass { public Builder setDeviceUuid(context.ContextOuterClass.Uuid.Builder builderForValue) { if (deviceUuidBuilder_ == null) { deviceUuid_ = builderForValue.build(); - onChanged(); } else { deviceUuidBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -14818,15 +14214,16 @@ public final class ContextOuterClass { */ public Builder mergeDeviceUuid(context.ContextOuterClass.Uuid value) { if (deviceUuidBuilder_ == null) { - if (deviceUuid_ != null) { - deviceUuid_ = context.ContextOuterClass.Uuid.newBuilder(deviceUuid_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000001) != 0) && deviceUuid_ != null && deviceUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) { + getDeviceUuidBuilder().mergeFrom(value); } else { deviceUuid_ = value; } - onChanged(); } else { deviceUuidBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -14834,13 +14231,13 @@ public final class ContextOuterClass { * .context.Uuid device_uuid = 1; */ public Builder clearDeviceUuid() { - if (deviceUuidBuilder_ == null) { - deviceUuid_ = null; - onChanged(); - } else { - deviceUuid_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + deviceUuid_ = null; + if (deviceUuidBuilder_ != null) { + deviceUuidBuilder_.dispose(); deviceUuidBuilder_ = null; } + onChanged(); return this; } @@ -14848,6 +14245,7 @@ public final class ContextOuterClass { * .context.Uuid device_uuid = 1; */ public context.ContextOuterClass.Uuid.Builder getDeviceUuidBuilder() { + bitField0_ |= 0x00000001; onChanged(); return getDeviceUuidFieldBuilder().getBuilder(); } @@ -14901,7 +14299,17 @@ public final class ContextOuterClass { @java.lang.Override public DeviceId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new DeviceId(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -15153,154 +14561,6 @@ public final class ContextOuterClass { return new Device(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private Device(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - context.ContextOuterClass.DeviceId.Builder subBuilder = null; - if (deviceId_ != null) { - subBuilder = deviceId_.toBuilder(); - } - deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(deviceId_); - deviceId_ = subBuilder.buildPartial(); - } - break; - } - case 18: - { - java.lang.String s = input.readStringRequireUtf8(); - name_ = s; - break; - } - case 26: - { - java.lang.String s = input.readStringRequireUtf8(); - deviceType_ = s; - break; - } - case 34: - { - context.ContextOuterClass.DeviceConfig.Builder subBuilder = null; - if (deviceConfig_ != null) { - subBuilder = deviceConfig_.toBuilder(); - } - deviceConfig_ = input.readMessage(context.ContextOuterClass.DeviceConfig.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(deviceConfig_); - deviceConfig_ = subBuilder.buildPartial(); - } - break; - } - case 40: - { - int rawValue = input.readEnum(); - deviceOperationalStatus_ = rawValue; - break; - } - case 48: - { - int rawValue = input.readEnum(); - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - deviceDrivers_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; - } - deviceDrivers_.add(rawValue); - break; - } - case 50: - { - int length = input.readRawVarint32(); - int oldLimit = input.pushLimit(length); - while (input.getBytesUntilLimit() > 0) { - int rawValue = input.readEnum(); - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - deviceDrivers_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; - } - deviceDrivers_.add(rawValue); - } - input.popLimit(oldLimit); - break; - } - case 58: - { - if (!((mutable_bitField0_ & 0x00000002) != 0)) { - deviceEndpoints_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000002; - } - deviceEndpoints_.add(input.readMessage(context.ContextOuterClass.EndPoint.parser(), extensionRegistry)); - break; - } - case 66: - { - if (!((mutable_bitField0_ & 0x00000004) != 0)) { - components_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000004; - } - components_.add(input.readMessage(context.ContextOuterClass.Component.parser(), extensionRegistry)); - break; - } - case 74: - { - context.ContextOuterClass.DeviceId.Builder subBuilder = null; - if (controllerId_ != null) { - subBuilder = controllerId_.toBuilder(); - } - controllerId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(controllerId_); - controllerId_ = subBuilder.buildPartial(); - } - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000001) != 0)) { - deviceDrivers_ = java.util.Collections.unmodifiableList(deviceDrivers_); - } - if (((mutable_bitField0_ & 0x00000002) != 0)) { - deviceEndpoints_ = java.util.Collections.unmodifiableList(deviceEndpoints_); - } - if (((mutable_bitField0_ & 0x00000004) != 0)) { - components_ = java.util.Collections.unmodifiableList(components_); - } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_Device_descriptor; } @@ -15337,12 +14597,13 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() { - return getDeviceId(); + return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_; } public static final int NAME_FIELD_NUMBER = 2; - private volatile java.lang.Object name_; + @SuppressWarnings("serial") + private volatile java.lang.Object name_ = ""; /** * string name = 2; @@ -15379,7 +14640,8 @@ public final class ContextOuterClass { public static final int DEVICE_TYPE_FIELD_NUMBER = 3; - private volatile java.lang.Object deviceType_; + @SuppressWarnings("serial") + private volatile java.lang.Object deviceType_ = ""; /** * string device_type = 3; @@ -15441,12 +14703,12 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder() { - return getDeviceConfig(); + return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_; } public static final int DEVICE_OPERATIONAL_STATUS_FIELD_NUMBER = 5; - private int deviceOperationalStatus_; + private int deviceOperationalStatus_ = 0; /** * .context.DeviceOperationalStatusEnum device_operational_status = 5; @@ -15463,20 +14725,19 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.DeviceOperationalStatusEnum getDeviceOperationalStatus() { - @SuppressWarnings("deprecation") - context.ContextOuterClass.DeviceOperationalStatusEnum result = context.ContextOuterClass.DeviceOperationalStatusEnum.valueOf(deviceOperationalStatus_); + context.ContextOuterClass.DeviceOperationalStatusEnum result = context.ContextOuterClass.DeviceOperationalStatusEnum.forNumber(deviceOperationalStatus_); return result == null ? context.ContextOuterClass.DeviceOperationalStatusEnum.UNRECOGNIZED : result; } public static final int DEVICE_DRIVERS_FIELD_NUMBER = 6; + @SuppressWarnings("serial") private java.util.List deviceDrivers_; private static final com.google.protobuf.Internal.ListAdapter.Converter deviceDrivers_converter_ = new com.google.protobuf.Internal.ListAdapter.Converter() { public context.ContextOuterClass.DeviceDriverEnum convert(java.lang.Integer from) { - @SuppressWarnings("deprecation") - context.ContextOuterClass.DeviceDriverEnum result = context.ContextOuterClass.DeviceDriverEnum.valueOf(from); + context.ContextOuterClass.DeviceDriverEnum result = context.ContextOuterClass.DeviceDriverEnum.forNumber(from); return result == null ? context.ContextOuterClass.DeviceDriverEnum.UNRECOGNIZED : result; } }; @@ -15532,6 +14793,7 @@ public final class ContextOuterClass { public static final int DEVICE_ENDPOINTS_FIELD_NUMBER = 7; + @SuppressWarnings("serial") private java.util.List deviceEndpoints_; /** @@ -15576,6 +14838,7 @@ public final class ContextOuterClass { public static final int COMPONENTS_FIELD_NUMBER = 8; + @SuppressWarnings("serial") private java.util.List components_; /** @@ -15677,7 +14940,7 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.DeviceIdOrBuilder getControllerIdOrBuilder() { - return getControllerId(); + return controllerId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : controllerId_; } private byte memoizedIsInitialized = -1; @@ -15699,10 +14962,10 @@ public final class ContextOuterClass { if (deviceId_ != null) { output.writeMessage(1, getDeviceId()); } - if (!getNameBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_); } - if (!getDeviceTypeBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(deviceType_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 3, deviceType_); } if (deviceConfig_ != null) { @@ -15727,7 +14990,7 @@ public final class ContextOuterClass { if (controllerId_ != null) { output.writeMessage(9, getControllerId()); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -15739,10 +15002,10 @@ public final class ContextOuterClass { if (deviceId_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getDeviceId()); } - if (!getNameBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_); } - if (!getDeviceTypeBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(deviceType_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, deviceType_); } if (deviceConfig_ != null) { @@ -15772,7 +15035,7 @@ public final class ContextOuterClass { if (controllerId_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(9, getControllerId()); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -15816,7 +15079,7 @@ public final class ContextOuterClass { if (!getControllerId().equals(other.getControllerId())) return false; } - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -15858,7 +15121,7 @@ public final class ContextOuterClass { hash = (37 * hash) + CONTROLLER_ID_FIELD_NUMBER; hash = (53 * hash) + getControllerId().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -15952,57 +15215,48 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.Device.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - getDeviceEndpointsFieldBuilder(); - getComponentsFieldBuilder(); - } } @java.lang.Override public Builder clear() { super.clear(); - if (deviceIdBuilder_ == null) { - deviceId_ = null; - } else { - deviceId_ = null; + bitField0_ = 0; + deviceId_ = null; + if (deviceIdBuilder_ != null) { + deviceIdBuilder_.dispose(); deviceIdBuilder_ = null; } name_ = ""; deviceType_ = ""; - if (deviceConfigBuilder_ == null) { - deviceConfig_ = null; - } else { - deviceConfig_ = null; + deviceConfig_ = null; + if (deviceConfigBuilder_ != null) { + deviceConfigBuilder_.dispose(); deviceConfigBuilder_ = null; } deviceOperationalStatus_ = 0; deviceDrivers_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000020); if (deviceEndpointsBuilder_ == null) { deviceEndpoints_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000002); } else { + deviceEndpoints_ = null; deviceEndpointsBuilder_.clear(); } + bitField0_ = (bitField0_ & ~0x00000040); if (componentsBuilder_ == null) { components_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000004); } else { + components_ = null; componentsBuilder_.clear(); } - if (controllerIdBuilder_ == null) { - controllerId_ = null; - } else { - controllerId_ = null; + bitField0_ = (bitField0_ & ~0x00000080); + controllerId_ = null; + if (controllerIdBuilder_ != null) { + controllerIdBuilder_.dispose(); controllerIdBuilder_ = null; } return this; @@ -16030,80 +15284,60 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.Device buildPartial() { context.ContextOuterClass.Device result = new context.ContextOuterClass.Device(this); - int from_bitField0_ = bitField0_; - if (deviceIdBuilder_ == null) { - result.deviceId_ = deviceId_; - } else { - result.deviceId_ = deviceIdBuilder_.build(); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); } - result.name_ = name_; - result.deviceType_ = deviceType_; - if (deviceConfigBuilder_ == null) { - result.deviceConfig_ = deviceConfig_; - } else { - result.deviceConfig_ = deviceConfigBuilder_.build(); - } - result.deviceOperationalStatus_ = deviceOperationalStatus_; - if (((bitField0_ & 0x00000001) != 0)) { + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(context.ContextOuterClass.Device result) { + if (((bitField0_ & 0x00000020) != 0)) { deviceDrivers_ = java.util.Collections.unmodifiableList(deviceDrivers_); - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000020); } result.deviceDrivers_ = deviceDrivers_; if (deviceEndpointsBuilder_ == null) { - if (((bitField0_ & 0x00000002) != 0)) { + if (((bitField0_ & 0x00000040) != 0)) { deviceEndpoints_ = java.util.Collections.unmodifiableList(deviceEndpoints_); - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000040); } result.deviceEndpoints_ = deviceEndpoints_; } else { result.deviceEndpoints_ = deviceEndpointsBuilder_.build(); } if (componentsBuilder_ == null) { - if (((bitField0_ & 0x00000004) != 0)) { + if (((bitField0_ & 0x00000080) != 0)) { components_ = java.util.Collections.unmodifiableList(components_); - bitField0_ = (bitField0_ & ~0x00000004); + bitField0_ = (bitField0_ & ~0x00000080); } result.components_ = components_; } else { result.components_ = componentsBuilder_.build(); } - if (controllerIdBuilder_ == null) { - result.controllerId_ = controllerId_; - } else { - result.controllerId_ = controllerIdBuilder_.build(); - } - onBuilt(); - return result; - } - - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); } - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.Device result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.deviceId_ = deviceIdBuilder_ == null ? deviceId_ : deviceIdBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.name_ = name_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.deviceType_ = deviceType_; + } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.deviceConfig_ = deviceConfigBuilder_ == null ? deviceConfig_ : deviceConfigBuilder_.build(); + } + if (((from_bitField0_ & 0x00000010) != 0)) { + result.deviceOperationalStatus_ = deviceOperationalStatus_; + } + if (((from_bitField0_ & 0x00000100) != 0)) { + result.controllerId_ = controllerIdBuilder_ == null ? controllerId_ : controllerIdBuilder_.build(); + } } @java.lang.Override @@ -16124,10 +15358,12 @@ public final class ContextOuterClass { } if (!other.getName().isEmpty()) { name_ = other.name_; + bitField0_ |= 0x00000002; onChanged(); } if (!other.getDeviceType().isEmpty()) { deviceType_ = other.deviceType_; + bitField0_ |= 0x00000004; onChanged(); } if (other.hasDeviceConfig()) { @@ -16139,7 +15375,7 @@ public final class ContextOuterClass { if (!other.deviceDrivers_.isEmpty()) { if (deviceDrivers_.isEmpty()) { deviceDrivers_ = other.deviceDrivers_; - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000020); } else { ensureDeviceDriversIsMutable(); deviceDrivers_.addAll(other.deviceDrivers_); @@ -16150,7 +15386,7 @@ public final class ContextOuterClass { if (!other.deviceEndpoints_.isEmpty()) { if (deviceEndpoints_.isEmpty()) { deviceEndpoints_ = other.deviceEndpoints_; - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000040); } else { ensureDeviceEndpointsIsMutable(); deviceEndpoints_.addAll(other.deviceEndpoints_); @@ -16163,7 +15399,7 @@ public final class ContextOuterClass { deviceEndpointsBuilder_.dispose(); deviceEndpointsBuilder_ = null; deviceEndpoints_ = other.deviceEndpoints_; - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000040); deviceEndpointsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDeviceEndpointsFieldBuilder() : null; } else { deviceEndpointsBuilder_.addAllMessages(other.deviceEndpoints_); @@ -16174,7 +15410,7 @@ public final class ContextOuterClass { if (!other.components_.isEmpty()) { if (components_.isEmpty()) { components_ = other.components_; - bitField0_ = (bitField0_ & ~0x00000004); + bitField0_ = (bitField0_ & ~0x00000080); } else { ensureComponentsIsMutable(); components_.addAll(other.components_); @@ -16187,7 +15423,7 @@ public final class ContextOuterClass { componentsBuilder_.dispose(); componentsBuilder_ = null; components_ = other.components_; - bitField0_ = (bitField0_ & ~0x00000004); + bitField0_ = (bitField0_ & ~0x00000080); componentsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getComponentsFieldBuilder() : null; } else { componentsBuilder_.addAllMessages(other.components_); @@ -16197,7 +15433,7 @@ public final class ContextOuterClass { if (other.hasControllerId()) { mergeControllerId(other.getControllerId()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -16209,17 +15445,122 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.Device parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getDeviceIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 18: + { + name_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } + // case 18 + case 26: + { + deviceType_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000004; + break; + } + // case 26 + case 34: + { + input.readMessage(getDeviceConfigFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000008; + break; + } + // case 34 + case 40: + { + deviceOperationalStatus_ = input.readEnum(); + bitField0_ |= 0x00000010; + break; + } + // case 40 + case 48: + { + int tmpRaw = input.readEnum(); + ensureDeviceDriversIsMutable(); + deviceDrivers_.add(tmpRaw); + break; + } + // case 48 + case 50: + { + int length = input.readRawVarint32(); + int oldLimit = input.pushLimit(length); + while (input.getBytesUntilLimit() > 0) { + int tmpRaw = input.readEnum(); + ensureDeviceDriversIsMutable(); + deviceDrivers_.add(tmpRaw); + } + input.popLimit(oldLimit); + break; + } + // case 50 + case 58: + { + context.ContextOuterClass.EndPoint m = input.readMessage(context.ContextOuterClass.EndPoint.parser(), extensionRegistry); + if (deviceEndpointsBuilder_ == null) { + ensureDeviceEndpointsIsMutable(); + deviceEndpoints_.add(m); + } else { + deviceEndpointsBuilder_.addMessage(m); + } + break; + } + // case 58 + case 66: + { + context.ContextOuterClass.Component m = input.readMessage(context.ContextOuterClass.Component.parser(), extensionRegistry); + if (componentsBuilder_ == null) { + ensureComponentsIsMutable(); + components_.add(m); + } else { + componentsBuilder_.addMessage(m); + } + break; + } + // case 66 + case 74: + { + input.readMessage(getControllerIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000100; + break; + } + // case 74 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.Device) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } @@ -16234,7 +15575,7 @@ public final class ContextOuterClass { * @return Whether the deviceId field is set. */ public boolean hasDeviceId() { - return deviceIdBuilder_ != null || deviceId_ != null; + return ((bitField0_ & 0x00000001) != 0); } /** @@ -16258,10 +15599,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } deviceId_ = value; - onChanged(); } else { deviceIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -16271,10 +15613,11 @@ public final class ContextOuterClass { public Builder setDeviceId(context.ContextOuterClass.DeviceId.Builder builderForValue) { if (deviceIdBuilder_ == null) { deviceId_ = builderForValue.build(); - onChanged(); } else { deviceIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -16283,15 +15626,16 @@ public final class ContextOuterClass { */ public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) { if (deviceIdBuilder_ == null) { - if (deviceId_ != null) { - deviceId_ = context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000001) != 0) && deviceId_ != null && deviceId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) { + getDeviceIdBuilder().mergeFrom(value); } else { deviceId_ = value; } - onChanged(); } else { deviceIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -16299,13 +15643,13 @@ public final class ContextOuterClass { * .context.DeviceId device_id = 1; */ public Builder clearDeviceId() { - if (deviceIdBuilder_ == null) { - deviceId_ = null; - onChanged(); - } else { - deviceId_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + deviceId_ = null; + if (deviceIdBuilder_ != null) { + deviceIdBuilder_.dispose(); deviceIdBuilder_ = null; } + onChanged(); return this; } @@ -16313,6 +15657,7 @@ public final class ContextOuterClass { * .context.DeviceId device_id = 1; */ public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() { + bitField0_ |= 0x00000001; onChanged(); return getDeviceIdFieldBuilder().getBuilder(); } @@ -16382,6 +15727,7 @@ public final class ContextOuterClass { throw new NullPointerException(); } name_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -16392,6 +15738,7 @@ public final class ContextOuterClass { */ public Builder clearName() { name_ = getDefaultInstance().getName(); + bitField0_ = (bitField0_ & ~0x00000002); onChanged(); return this; } @@ -16407,6 +15754,7 @@ public final class ContextOuterClass { } checkByteStringIsUtf8(value); name_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -16454,6 +15802,7 @@ public final class ContextOuterClass { throw new NullPointerException(); } deviceType_ = value; + bitField0_ |= 0x00000004; onChanged(); return this; } @@ -16464,6 +15813,7 @@ public final class ContextOuterClass { */ public Builder clearDeviceType() { deviceType_ = getDefaultInstance().getDeviceType(); + bitField0_ = (bitField0_ & ~0x00000004); onChanged(); return this; } @@ -16479,6 +15829,7 @@ public final class ContextOuterClass { } checkByteStringIsUtf8(value); deviceType_ = value; + bitField0_ |= 0x00000004; onChanged(); return this; } @@ -16492,7 +15843,7 @@ public final class ContextOuterClass { * @return Whether the deviceConfig field is set. */ public boolean hasDeviceConfig() { - return deviceConfigBuilder_ != null || deviceConfig_ != null; + return ((bitField0_ & 0x00000008) != 0); } /** @@ -16516,10 +15867,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } deviceConfig_ = value; - onChanged(); } else { deviceConfigBuilder_.setMessage(value); } + bitField0_ |= 0x00000008; + onChanged(); return this; } @@ -16529,10 +15881,11 @@ public final class ContextOuterClass { public Builder setDeviceConfig(context.ContextOuterClass.DeviceConfig.Builder builderForValue) { if (deviceConfigBuilder_ == null) { deviceConfig_ = builderForValue.build(); - onChanged(); } else { deviceConfigBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000008; + onChanged(); return this; } @@ -16541,15 +15894,16 @@ public final class ContextOuterClass { */ public Builder mergeDeviceConfig(context.ContextOuterClass.DeviceConfig value) { if (deviceConfigBuilder_ == null) { - if (deviceConfig_ != null) { - deviceConfig_ = context.ContextOuterClass.DeviceConfig.newBuilder(deviceConfig_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000008) != 0) && deviceConfig_ != null && deviceConfig_ != context.ContextOuterClass.DeviceConfig.getDefaultInstance()) { + getDeviceConfigBuilder().mergeFrom(value); } else { deviceConfig_ = value; } - onChanged(); } else { deviceConfigBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000008; + onChanged(); return this; } @@ -16557,13 +15911,13 @@ public final class ContextOuterClass { * .context.DeviceConfig device_config = 4; */ public Builder clearDeviceConfig() { - if (deviceConfigBuilder_ == null) { - deviceConfig_ = null; - onChanged(); - } else { - deviceConfig_ = null; + bitField0_ = (bitField0_ & ~0x00000008); + deviceConfig_ = null; + if (deviceConfigBuilder_ != null) { + deviceConfigBuilder_.dispose(); deviceConfigBuilder_ = null; } + onChanged(); return this; } @@ -16571,6 +15925,7 @@ public final class ContextOuterClass { * .context.DeviceConfig device_config = 4; */ public context.ContextOuterClass.DeviceConfig.Builder getDeviceConfigBuilder() { + bitField0_ |= 0x00000008; onChanged(); return getDeviceConfigFieldBuilder().getBuilder(); } @@ -16615,6 +15970,7 @@ public final class ContextOuterClass { */ public Builder setDeviceOperationalStatusValue(int value) { deviceOperationalStatus_ = value; + bitField0_ |= 0x00000010; onChanged(); return this; } @@ -16625,8 +15981,7 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.DeviceOperationalStatusEnum getDeviceOperationalStatus() { - @SuppressWarnings("deprecation") - context.ContextOuterClass.DeviceOperationalStatusEnum result = context.ContextOuterClass.DeviceOperationalStatusEnum.valueOf(deviceOperationalStatus_); + context.ContextOuterClass.DeviceOperationalStatusEnum result = context.ContextOuterClass.DeviceOperationalStatusEnum.forNumber(deviceOperationalStatus_); return result == null ? context.ContextOuterClass.DeviceOperationalStatusEnum.UNRECOGNIZED : result; } @@ -16639,6 +15994,7 @@ public final class ContextOuterClass { if (value == null) { throw new NullPointerException(); } + bitField0_ |= 0x00000010; deviceOperationalStatus_ = value.getNumber(); onChanged(); return this; @@ -16649,6 +16005,7 @@ public final class ContextOuterClass { * @return This builder for chaining. */ public Builder clearDeviceOperationalStatus() { + bitField0_ = (bitField0_ & ~0x00000010); deviceOperationalStatus_ = 0; onChanged(); return this; @@ -16657,9 +16014,9 @@ public final class ContextOuterClass { private java.util.List deviceDrivers_ = java.util.Collections.emptyList(); private void ensureDeviceDriversIsMutable() { - if (!((bitField0_ & 0x00000001) != 0)) { + if (!((bitField0_ & 0x00000020) != 0)) { deviceDrivers_ = new java.util.ArrayList(deviceDrivers_); - bitField0_ |= 0x00000001; + bitField0_ |= 0x00000020; } } @@ -16739,7 +16096,7 @@ public final class ContextOuterClass { */ public Builder clearDeviceDrivers() { deviceDrivers_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000020); onChanged(); return this; } @@ -16763,8 +16120,8 @@ public final class ContextOuterClass { /** * repeated .context.DeviceDriverEnum device_drivers = 6; - * @param index The index of the value to return. - * @return The enum numeric value on the wire of deviceDrivers at the given index. + * @param index The index to set the value at. + * @param value The enum numeric value on the wire for deviceDrivers to set. * @return This builder for chaining. */ public Builder setDeviceDriversValue(int index, int value) { @@ -16803,9 +16160,9 @@ public final class ContextOuterClass { private java.util.List deviceEndpoints_ = java.util.Collections.emptyList(); private void ensureDeviceEndpointsIsMutable() { - if (!((bitField0_ & 0x00000002) != 0)) { + if (!((bitField0_ & 0x00000040) != 0)) { deviceEndpoints_ = new java.util.ArrayList(deviceEndpoints_); - bitField0_ |= 0x00000002; + bitField0_ |= 0x00000040; } } @@ -16957,7 +16314,7 @@ public final class ContextOuterClass { public Builder clearDeviceEndpoints() { if (deviceEndpointsBuilder_ == null) { deviceEndpoints_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000040); onChanged(); } else { deviceEndpointsBuilder_.clear(); @@ -17031,7 +16388,7 @@ public final class ContextOuterClass { private com.google.protobuf.RepeatedFieldBuilderV3 getDeviceEndpointsFieldBuilder() { if (deviceEndpointsBuilder_ == null) { - deviceEndpointsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(deviceEndpoints_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean()); + deviceEndpointsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(deviceEndpoints_, ((bitField0_ & 0x00000040) != 0), getParentForChildren(), isClean()); deviceEndpoints_ = null; } return deviceEndpointsBuilder_; @@ -17040,9 +16397,9 @@ public final class ContextOuterClass { private java.util.List components_ = java.util.Collections.emptyList(); private void ensureComponentsIsMutable() { - if (!((bitField0_ & 0x00000004) != 0)) { + if (!((bitField0_ & 0x00000080) != 0)) { components_ = new java.util.ArrayList(components_); - bitField0_ |= 0x00000004; + bitField0_ |= 0x00000080; } } @@ -17238,7 +16595,7 @@ public final class ContextOuterClass { public Builder clearComponents() { if (componentsBuilder_ == null) { components_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000004); + bitField0_ = (bitField0_ & ~0x00000080); onChanged(); } else { componentsBuilder_.clear(); @@ -17340,7 +16697,7 @@ public final class ContextOuterClass { private com.google.protobuf.RepeatedFieldBuilderV3 getComponentsFieldBuilder() { if (componentsBuilder_ == null) { - componentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(components_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean()); + componentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(components_, ((bitField0_ & 0x00000080) != 0), getParentForChildren(), isClean()); components_ = null; } return componentsBuilder_; @@ -17359,7 +16716,7 @@ public final class ContextOuterClass { * @return Whether the controllerId field is set. */ public boolean hasControllerId() { - return controllerIdBuilder_ != null || controllerId_ != null; + return ((bitField0_ & 0x00000100) != 0); } /** @@ -17391,10 +16748,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } controllerId_ = value; - onChanged(); } else { controllerIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000100; + onChanged(); return this; } @@ -17408,10 +16766,11 @@ public final class ContextOuterClass { public Builder setControllerId(context.ContextOuterClass.DeviceId.Builder builderForValue) { if (controllerIdBuilder_ == null) { controllerId_ = builderForValue.build(); - onChanged(); } else { controllerIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000100; + onChanged(); return this; } @@ -17424,15 +16783,16 @@ public final class ContextOuterClass { */ public Builder mergeControllerId(context.ContextOuterClass.DeviceId value) { if (controllerIdBuilder_ == null) { - if (controllerId_ != null) { - controllerId_ = context.ContextOuterClass.DeviceId.newBuilder(controllerId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000100) != 0) && controllerId_ != null && controllerId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) { + getControllerIdBuilder().mergeFrom(value); } else { controllerId_ = value; } - onChanged(); } else { controllerIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000100; + onChanged(); return this; } @@ -17444,13 +16804,13 @@ public final class ContextOuterClass { * .context.DeviceId controller_id = 9; */ public Builder clearControllerId() { - if (controllerIdBuilder_ == null) { - controllerId_ = null; - onChanged(); - } else { - controllerId_ = null; + bitField0_ = (bitField0_ & ~0x00000100); + controllerId_ = null; + if (controllerIdBuilder_ != null) { + controllerIdBuilder_.dispose(); controllerIdBuilder_ = null; } + onChanged(); return this; } @@ -17462,6 +16822,7 @@ public final class ContextOuterClass { * .context.DeviceId controller_id = 9; */ public context.ContextOuterClass.DeviceId.Builder getControllerIdBuilder() { + bitField0_ |= 0x00000100; onChanged(); return getControllerIdFieldBuilder().getBuilder(); } @@ -17523,7 +16884,17 @@ public final class ContextOuterClass { @java.lang.Override public Device parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new Device(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -17626,7 +16997,9 @@ public final class ContextOuterClass { * * map<string, string> attributes = 4; */ - java.lang.String getAttributesOrDefault(java.lang.String key, java.lang.String defaultValue); + /* nullable */ + java.lang.String getAttributesOrDefault(java.lang.String key, /* nullable */ + java.lang.String defaultValue); /** *
@@ -17679,86 +17052,6 @@ public final class ContextOuterClass {
             return new Component();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Component(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
-                                if (componentUuid_ != null) {
-                                    subBuilder = componentUuid_.toBuilder();
-                                }
-                                componentUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(componentUuid_);
-                                    componentUuid_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                name_ = s;
-                                break;
-                            }
-                        case 26:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                type_ = s;
-                                break;
-                            }
-                        case 34:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    attributes_ = com.google.protobuf.MapField.newMapField(AttributesDefaultEntryHolder.defaultEntry);
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                com.google.protobuf.MapEntry attributes__ = input.readMessage(AttributesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
-                                attributes_.getMutableMap().put(attributes__.getKey(), attributes__.getValue());
-                                break;
-                            }
-                        case 42:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                parent_ = s;
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Component_descriptor;
         }
@@ -17806,12 +17099,13 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getComponentUuidOrBuilder() {
-            return getComponentUuid();
+            return componentUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : componentUuid_;
         }
 
         public static final int NAME_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object name_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object name_ = "";
 
         /**
          * string name = 2;
@@ -17848,7 +17142,8 @@ public final class ContextOuterClass {
 
         public static final int TYPE_FIELD_NUMBER = 3;
 
-        private volatile java.lang.Object type_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object type_ = "";
 
         /**
          * string type = 3;
@@ -17890,6 +17185,7 @@ public final class ContextOuterClass {
             static final com.google.protobuf.MapEntry defaultEntry = com.google.protobuf.MapEntry.newDefaultInstance(context.ContextOuterClass.internal_static_context_Component_AttributesEntry_descriptor, com.google.protobuf.WireFormat.FieldType.STRING, "", com.google.protobuf.WireFormat.FieldType.STRING, "");
         }
 
+        @SuppressWarnings("serial")
         private com.google.protobuf.MapField attributes_;
 
         private com.google.protobuf.MapField internalGetAttributes() {
@@ -17913,7 +17209,7 @@ public final class ContextOuterClass {
         @java.lang.Override
         public boolean containsAttributes(java.lang.String key) {
             if (key == null) {
-                throw new java.lang.NullPointerException();
+                throw new NullPointerException("map key");
             }
             return internalGetAttributes().getMap().containsKey(key);
         }
@@ -17947,9 +17243,11 @@ public final class ContextOuterClass {
          * map<string, string> attributes = 4;
          */
         @java.lang.Override
-        public java.lang.String getAttributesOrDefault(java.lang.String key, java.lang.String defaultValue) {
+        public /* nullable */
+        java.lang.String getAttributesOrDefault(java.lang.String key, /* nullable */
+        java.lang.String defaultValue) {
             if (key == null) {
-                throw new java.lang.NullPointerException();
+                throw new NullPointerException("map key");
             }
             java.util.Map map = internalGetAttributes().getMap();
             return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -17965,7 +17263,7 @@ public final class ContextOuterClass {
         @java.lang.Override
         public java.lang.String getAttributesOrThrow(java.lang.String key) {
             if (key == null) {
-                throw new java.lang.NullPointerException();
+                throw new NullPointerException("map key");
             }
             java.util.Map map = internalGetAttributes().getMap();
             if (!map.containsKey(key)) {
@@ -17976,7 +17274,8 @@ public final class ContextOuterClass {
 
         public static final int PARENT_FIELD_NUMBER = 5;
 
-        private volatile java.lang.Object parent_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object parent_ = "";
 
         /**
          * string parent = 5;
@@ -18029,17 +17328,17 @@ public final class ContextOuterClass {
             if (componentUuid_ != null) {
                 output.writeMessage(1, getComponentUuid());
             }
-            if (!getNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
             }
-            if (!getTypeBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(type_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 3, type_);
             }
             com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(output, internalGetAttributes(), AttributesDefaultEntryHolder.defaultEntry, 4);
-            if (!getParentBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(parent_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 5, parent_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -18051,20 +17350,20 @@ public final class ContextOuterClass {
             if (componentUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getComponentUuid());
             }
-            if (!getNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
             }
-            if (!getTypeBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(type_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, type_);
             }
             for (java.util.Map.Entry entry : internalGetAttributes().getMap().entrySet()) {
                 com.google.protobuf.MapEntry attributes__ = AttributesDefaultEntryHolder.defaultEntry.newBuilderForType().setKey(entry.getKey()).setValue(entry.getValue()).build();
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, attributes__);
             }
-            if (!getParentBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(parent_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, parent_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -18092,7 +17391,7 @@ public final class ContextOuterClass {
                 return false;
             if (!getParent().equals(other.getParent()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -18118,7 +17417,7 @@ public final class ContextOuterClass {
             }
             hash = (37 * hash) + PARENT_FIELD_NUMBER;
             hash = (53 * hash) + getParent().hashCode();
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -18236,26 +17535,19 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Component.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (componentUuidBuilder_ == null) {
-                    componentUuid_ = null;
-                } else {
-                    componentUuid_ = null;
+                bitField0_ = 0;
+                componentUuid_ = null;
+                if (componentUuidBuilder_ != null) {
+                    componentUuidBuilder_.dispose();
                     componentUuidBuilder_ = null;
                 }
                 name_ = "";
@@ -18287,49 +17579,31 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Component buildPartial() {
                 context.ContextOuterClass.Component result = new context.ContextOuterClass.Component(this);
-                int from_bitField0_ = bitField0_;
-                if (componentUuidBuilder_ == null) {
-                    result.componentUuid_ = componentUuid_;
-                } else {
-                    result.componentUuid_ = componentUuidBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.name_ = name_;
-                result.type_ = type_;
-                result.attributes_ = internalGetAttributes();
-                result.attributes_.makeImmutable();
-                result.parent_ = parent_;
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.Component result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.componentUuid_ = componentUuidBuilder_ == null ? componentUuid_ : componentUuidBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.name_ = name_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.type_ = type_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.attributes_ = internalGetAttributes();
+                    result.attributes_.makeImmutable();
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.parent_ = parent_;
+                }
             }
 
             @java.lang.Override
@@ -18350,18 +17624,22 @@ public final class ContextOuterClass {
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (!other.getType().isEmpty()) {
                     type_ = other.type_;
+                    bitField0_ |= 0x00000004;
                     onChanged();
                 }
                 internalGetMutableAttributes().mergeFrom(other.internalGetAttributes());
+                bitField0_ |= 0x00000008;
                 if (!other.getParent().isEmpty()) {
                     parent_ = other.parent_;
+                    bitField0_ |= 0x00000010;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -18373,17 +17651,71 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Component parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getComponentUuidFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    name_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    type_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    com.google.protobuf.MapEntry attributes__ = input.readMessage(AttributesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
+                                    internalGetMutableAttributes().getMutableMap().put(attributes__.getKey(), attributes__.getValue());
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 34
+                            case 42:
+                                {
+                                    parent_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 42
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Component) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -18398,7 +17730,7 @@ public final class ContextOuterClass {
              * @return Whether the componentUuid field is set.
              */
             public boolean hasComponentUuid() {
-                return componentUuidBuilder_ != null || componentUuid_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -18422,10 +17754,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     componentUuid_ = value;
-                    onChanged();
                 } else {
                     componentUuidBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -18435,10 +17768,11 @@ public final class ContextOuterClass {
             public Builder setComponentUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (componentUuidBuilder_ == null) {
                     componentUuid_ = builderForValue.build();
-                    onChanged();
                 } else {
                     componentUuidBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -18447,15 +17781,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeComponentUuid(context.ContextOuterClass.Uuid value) {
                 if (componentUuidBuilder_ == null) {
-                    if (componentUuid_ != null) {
-                        componentUuid_ = context.ContextOuterClass.Uuid.newBuilder(componentUuid_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && componentUuid_ != null && componentUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getComponentUuidBuilder().mergeFrom(value);
                     } else {
                         componentUuid_ = value;
                     }
-                    onChanged();
                 } else {
                     componentUuidBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -18463,13 +17798,13 @@ public final class ContextOuterClass {
              * .context.Uuid component_uuid = 1;
              */
             public Builder clearComponentUuid() {
-                if (componentUuidBuilder_ == null) {
-                    componentUuid_ = null;
-                    onChanged();
-                } else {
-                    componentUuid_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                componentUuid_ = null;
+                if (componentUuidBuilder_ != null) {
+                    componentUuidBuilder_.dispose();
                     componentUuidBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -18477,6 +17812,7 @@ public final class ContextOuterClass {
              * .context.Uuid component_uuid = 1;
              */
             public context.ContextOuterClass.Uuid.Builder getComponentUuidBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getComponentUuidFieldBuilder().getBuilder();
             }
@@ -18546,6 +17882,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 name_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -18556,6 +17893,7 @@ public final class ContextOuterClass {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -18571,6 +17909,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -18618,6 +17957,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 type_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -18628,6 +17968,7 @@ public final class ContextOuterClass {
              */
             public Builder clearType() {
                 type_ = getDefaultInstance().getType();
+                bitField0_ = (bitField0_ & ~0x00000004);
                 onChanged();
                 return this;
             }
@@ -18643,6 +17984,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 type_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -18657,14 +17999,14 @@ public final class ContextOuterClass {
             }
 
             private com.google.protobuf.MapField internalGetMutableAttributes() {
-                onChanged();
-                ;
                 if (attributes_ == null) {
                     attributes_ = com.google.protobuf.MapField.newMapField(AttributesDefaultEntryHolder.defaultEntry);
                 }
                 if (!attributes_.isMutable()) {
                     attributes_ = attributes_.copy();
                 }
+                bitField0_ |= 0x00000008;
+                onChanged();
                 return attributes_;
             }
 
@@ -18682,7 +18024,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public boolean containsAttributes(java.lang.String key) {
                 if (key == null) {
-                    throw new java.lang.NullPointerException();
+                    throw new NullPointerException("map key");
                 }
                 return internalGetAttributes().getMap().containsKey(key);
             }
@@ -18716,9 +18058,11 @@ public final class ContextOuterClass {
              * map<string, string> attributes = 4;
              */
             @java.lang.Override
-            public java.lang.String getAttributesOrDefault(java.lang.String key, java.lang.String defaultValue) {
+            public /* nullable */
+            java.lang.String getAttributesOrDefault(java.lang.String key, /* nullable */
+            java.lang.String defaultValue) {
                 if (key == null) {
-                    throw new java.lang.NullPointerException();
+                    throw new NullPointerException("map key");
                 }
                 java.util.Map map = internalGetAttributes().getMap();
                 return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -18734,7 +18078,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public java.lang.String getAttributesOrThrow(java.lang.String key) {
                 if (key == null) {
-                    throw new java.lang.NullPointerException();
+                    throw new NullPointerException("map key");
                 }
                 java.util.Map map = internalGetAttributes().getMap();
                 if (!map.containsKey(key)) {
@@ -18744,6 +18088,7 @@ public final class ContextOuterClass {
             }
 
             public Builder clearAttributes() {
+                bitField0_ = (bitField0_ & ~0x00000008);
                 internalGetMutableAttributes().getMutableMap().clear();
                 return this;
             }
@@ -18757,7 +18102,7 @@ public final class ContextOuterClass {
              */
             public Builder removeAttributes(java.lang.String key) {
                 if (key == null) {
-                    throw new java.lang.NullPointerException();
+                    throw new NullPointerException("map key");
                 }
                 internalGetMutableAttributes().getMutableMap().remove(key);
                 return this;
@@ -18768,6 +18113,7 @@ public final class ContextOuterClass {
              */
             @java.lang.Deprecated
             public java.util.Map getMutableAttributes() {
+                bitField0_ |= 0x00000008;
                 return internalGetMutableAttributes().getMutableMap();
             }
 
@@ -18780,12 +18126,13 @@ public final class ContextOuterClass {
              */
             public Builder putAttributes(java.lang.String key, java.lang.String value) {
                 if (key == null) {
-                    throw new java.lang.NullPointerException();
+                    throw new NullPointerException("map key");
                 }
                 if (value == null) {
-                    throw new java.lang.NullPointerException();
+                    throw new NullPointerException("map value");
                 }
                 internalGetMutableAttributes().getMutableMap().put(key, value);
+                bitField0_ |= 0x00000008;
                 return this;
             }
 
@@ -18798,6 +18145,7 @@ public final class ContextOuterClass {
              */
             public Builder putAllAttributes(java.util.Map values) {
                 internalGetMutableAttributes().getMutableMap().putAll(values);
+                bitField0_ |= 0x00000008;
                 return this;
             }
 
@@ -18844,6 +18192,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 parent_ = value;
+                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -18854,6 +18203,7 @@ public final class ContextOuterClass {
              */
             public Builder clearParent() {
                 parent_ = getDefaultInstance().getParent();
+                bitField0_ = (bitField0_ & ~0x00000010);
                 onChanged();
                 return this;
             }
@@ -18869,6 +18219,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 parent_ = value;
+                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -18900,7 +18251,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Component parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Component(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -18971,57 +18332,6 @@ public final class ContextOuterClass {
             return new DeviceConfig();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private DeviceConfig(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    configRules_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                configRules_.add(input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    configRules_ = java.util.Collections.unmodifiableList(configRules_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_DeviceConfig_descriptor;
         }
@@ -19033,6 +18343,7 @@ public final class ContextOuterClass {
 
         public static final int CONFIG_RULES_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List configRules_;
 
         /**
@@ -19093,7 +18404,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < configRules_.size(); i++) {
                 output.writeMessage(1, configRules_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -19105,7 +18416,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < configRules_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, configRules_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -19121,7 +18432,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.DeviceConfig other = (context.ContextOuterClass.DeviceConfig) obj;
             if (!getConfigRulesList().equals(other.getConfigRulesList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -19137,7 +18448,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONFIG_RULES_FIELD_NUMBER;
                 hash = (53 * hash) + getConfigRulesList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -19231,29 +18542,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.DeviceConfig.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getConfigRulesFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (configRulesBuilder_ == null) {
                     configRules_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    configRules_ = null;
                     configRulesBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -19279,7 +18584,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.DeviceConfig buildPartial() {
                 context.ContextOuterClass.DeviceConfig result = new context.ContextOuterClass.DeviceConfig(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.DeviceConfig result) {
                 if (configRulesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         configRules_ = java.util.Collections.unmodifiableList(configRules_);
@@ -19289,38 +18602,10 @@ public final class ContextOuterClass {
                 } else {
                     result.configRules_ = configRulesBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
             }
 
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.DeviceConfig result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -19360,7 +18645,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -19372,17 +18657,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.DeviceConfig parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.ConfigRule m = input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry);
+                                    if (configRulesBuilder_ == null) {
+                                        ensureConfigRulesIsMutable();
+                                        configRules_.add(m);
+                                    } else {
+                                        configRulesBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.DeviceConfig) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -19652,7 +18967,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public DeviceConfig parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new DeviceConfig(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -19723,57 +19048,6 @@ public final class ContextOuterClass {
             return new DeviceIdList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private DeviceIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    deviceIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                deviceIds_.add(input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_DeviceIdList_descriptor;
         }
@@ -19785,6 +19059,7 @@ public final class ContextOuterClass {
 
         public static final int DEVICE_IDS_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List deviceIds_;
 
         /**
@@ -19845,7 +19120,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < deviceIds_.size(); i++) {
                 output.writeMessage(1, deviceIds_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -19857,7 +19132,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < deviceIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, deviceIds_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -19873,7 +19148,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.DeviceIdList other = (context.ContextOuterClass.DeviceIdList) obj;
             if (!getDeviceIdsList().equals(other.getDeviceIdsList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -19889,7 +19164,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + DEVICE_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getDeviceIdsList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -19983,29 +19258,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.DeviceIdList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getDeviceIdsFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (deviceIdsBuilder_ == null) {
                     deviceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    deviceIds_ = null;
                     deviceIdsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -20031,7 +19300,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.DeviceIdList buildPartial() {
                 context.ContextOuterClass.DeviceIdList result = new context.ContextOuterClass.DeviceIdList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.DeviceIdList result) {
                 if (deviceIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
@@ -20041,38 +19318,10 @@ public final class ContextOuterClass {
                 } else {
                     result.deviceIds_ = deviceIdsBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
             }
 
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.DeviceIdList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -20112,7 +19361,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -20124,17 +19373,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.DeviceIdList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.DeviceId m = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
+                                    if (deviceIdsBuilder_ == null) {
+                                        ensureDeviceIdsIsMutable();
+                                        deviceIds_.add(m);
+                                    } else {
+                                        deviceIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.DeviceIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -20404,7 +19683,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public DeviceIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new DeviceIdList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -20475,57 +19764,6 @@ public final class ContextOuterClass {
             return new DeviceList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private DeviceList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    devices_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                devices_.add(input.readMessage(context.ContextOuterClass.Device.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    devices_ = java.util.Collections.unmodifiableList(devices_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_DeviceList_descriptor;
         }
@@ -20537,6 +19775,7 @@ public final class ContextOuterClass {
 
         public static final int DEVICES_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List devices_;
 
         /**
@@ -20597,7 +19836,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < devices_.size(); i++) {
                 output.writeMessage(1, devices_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -20609,7 +19848,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < devices_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, devices_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -20625,7 +19864,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.DeviceList other = (context.ContextOuterClass.DeviceList) obj;
             if (!getDevicesList().equals(other.getDevicesList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -20641,7 +19880,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + DEVICES_FIELD_NUMBER;
                 hash = (53 * hash) + getDevicesList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -20735,29 +19974,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.DeviceList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getDevicesFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (devicesBuilder_ == null) {
                     devices_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    devices_ = null;
                     devicesBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -20783,7 +20016,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.DeviceList buildPartial() {
                 context.ContextOuterClass.DeviceList result = new context.ContextOuterClass.DeviceList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.DeviceList result) {
                 if (devicesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         devices_ = java.util.Collections.unmodifiableList(devices_);
@@ -20793,38 +20034,10 @@ public final class ContextOuterClass {
                 } else {
                     result.devices_ = devicesBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
             }
 
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.DeviceList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -20864,7 +20077,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -20876,17 +20089,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.DeviceList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.Device m = input.readMessage(context.ContextOuterClass.Device.parser(), extensionRegistry);
+                                    if (devicesBuilder_ == null) {
+                                        ensureDevicesIsMutable();
+                                        devices_.add(m);
+                                    } else {
+                                        devicesBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.DeviceList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -21156,7 +20399,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public DeviceList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new DeviceList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -21236,72 +20489,6 @@ public final class ContextOuterClass {
             return new DeviceFilter();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private DeviceFilter(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.DeviceIdList.Builder subBuilder = null;
-                                if (deviceIds_ != null) {
-                                    subBuilder = deviceIds_.toBuilder();
-                                }
-                                deviceIds_ = input.readMessage(context.ContextOuterClass.DeviceIdList.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(deviceIds_);
-                                    deviceIds_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 16:
-                            {
-                                includeEndpoints_ = input.readBool();
-                                break;
-                            }
-                        case 24:
-                            {
-                                includeConfigRules_ = input.readBool();
-                                break;
-                            }
-                        case 32:
-                            {
-                                includeComponents_ = input.readBool();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_DeviceFilter_descriptor;
         }
@@ -21338,12 +20525,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceIdListOrBuilder getDeviceIdsOrBuilder() {
-            return getDeviceIds();
+            return deviceIds_ == null ? context.ContextOuterClass.DeviceIdList.getDefaultInstance() : deviceIds_;
         }
 
         public static final int INCLUDE_ENDPOINTS_FIELD_NUMBER = 2;
 
-        private boolean includeEndpoints_;
+        private boolean includeEndpoints_ = false;
 
         /**
          * bool include_endpoints = 2;
@@ -21356,7 +20543,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_CONFIG_RULES_FIELD_NUMBER = 3;
 
-        private boolean includeConfigRules_;
+        private boolean includeConfigRules_ = false;
 
         /**
          * bool include_config_rules = 3;
@@ -21369,7 +20556,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_COMPONENTS_FIELD_NUMBER = 4;
 
-        private boolean includeComponents_;
+        private boolean includeComponents_ = false;
 
         /**
          * bool include_components = 4;
@@ -21407,7 +20594,7 @@ public final class ContextOuterClass {
             if (includeComponents_ != false) {
                 output.writeBool(4, includeComponents_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -21428,7 +20615,7 @@ public final class ContextOuterClass {
             if (includeComponents_ != false) {
                 size += com.google.protobuf.CodedOutputStream.computeBoolSize(4, includeComponents_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -21454,7 +20641,7 @@ public final class ContextOuterClass {
                 return false;
             if (getIncludeComponents() != other.getIncludeComponents())
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -21476,7 +20663,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeConfigRules());
             hash = (37 * hash) + INCLUDE_COMPONENTS_FIELD_NUMBER;
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeComponents());
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -21570,26 +20757,19 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.DeviceFilter.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (deviceIdsBuilder_ == null) {
-                    deviceIds_ = null;
-                } else {
-                    deviceIds_ = null;
+                bitField0_ = 0;
+                deviceIds_ = null;
+                if (deviceIdsBuilder_ != null) {
+                    deviceIdsBuilder_.dispose();
                     deviceIdsBuilder_ = null;
                 }
                 includeEndpoints_ = false;
@@ -21620,46 +20800,27 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.DeviceFilter buildPartial() {
                 context.ContextOuterClass.DeviceFilter result = new context.ContextOuterClass.DeviceFilter(this);
-                if (deviceIdsBuilder_ == null) {
-                    result.deviceIds_ = deviceIds_;
-                } else {
-                    result.deviceIds_ = deviceIdsBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.includeEndpoints_ = includeEndpoints_;
-                result.includeConfigRules_ = includeConfigRules_;
-                result.includeComponents_ = includeComponents_;
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.DeviceFilter result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.deviceIds_ = deviceIdsBuilder_ == null ? deviceIds_ : deviceIdsBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.includeEndpoints_ = includeEndpoints_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.includeConfigRules_ = includeConfigRules_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.includeComponents_ = includeComponents_;
+                }
             }
 
             @java.lang.Override
@@ -21687,7 +20848,7 @@ public final class ContextOuterClass {
                 if (other.getIncludeComponents() != false) {
                     setIncludeComponents(other.getIncludeComponents());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -21699,20 +20860,68 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.DeviceFilter parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getDeviceIdsFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 16:
+                                {
+                                    includeEndpoints_ = input.readBool();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 16
+                            case 24:
+                                {
+                                    includeConfigRules_ = input.readBool();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            case 32:
+                                {
+                                    includeComponents_ = input.readBool();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 32
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.DeviceFilter) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.DeviceIdList deviceIds_;
 
             private com.google.protobuf.SingleFieldBuilderV3 deviceIdsBuilder_;
@@ -21722,7 +20931,7 @@ public final class ContextOuterClass {
              * @return Whether the deviceIds field is set.
              */
             public boolean hasDeviceIds() {
-                return deviceIdsBuilder_ != null || deviceIds_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -21746,10 +20955,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     deviceIds_ = value;
-                    onChanged();
                 } else {
                     deviceIdsBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -21759,10 +20969,11 @@ public final class ContextOuterClass {
             public Builder setDeviceIds(context.ContextOuterClass.DeviceIdList.Builder builderForValue) {
                 if (deviceIdsBuilder_ == null) {
                     deviceIds_ = builderForValue.build();
-                    onChanged();
                 } else {
                     deviceIdsBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -21771,15 +20982,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeDeviceIds(context.ContextOuterClass.DeviceIdList value) {
                 if (deviceIdsBuilder_ == null) {
-                    if (deviceIds_ != null) {
-                        deviceIds_ = context.ContextOuterClass.DeviceIdList.newBuilder(deviceIds_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && deviceIds_ != null && deviceIds_ != context.ContextOuterClass.DeviceIdList.getDefaultInstance()) {
+                        getDeviceIdsBuilder().mergeFrom(value);
                     } else {
                         deviceIds_ = value;
                     }
-                    onChanged();
                 } else {
                     deviceIdsBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -21787,13 +20999,13 @@ public final class ContextOuterClass {
              * .context.DeviceIdList device_ids = 1;
              */
             public Builder clearDeviceIds() {
-                if (deviceIdsBuilder_ == null) {
-                    deviceIds_ = null;
-                    onChanged();
-                } else {
-                    deviceIds_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                deviceIds_ = null;
+                if (deviceIdsBuilder_ != null) {
+                    deviceIdsBuilder_.dispose();
                     deviceIdsBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -21801,6 +21013,7 @@ public final class ContextOuterClass {
              * .context.DeviceIdList device_ids = 1;
              */
             public context.ContextOuterClass.DeviceIdList.Builder getDeviceIdsBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getDeviceIdsFieldBuilder().getBuilder();
             }
@@ -21845,6 +21058,7 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeEndpoints(boolean value) {
                 includeEndpoints_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -21854,6 +21068,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeEndpoints() {
+                bitField0_ = (bitField0_ & ~0x00000002);
                 includeEndpoints_ = false;
                 onChanged();
                 return this;
@@ -21877,6 +21092,7 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeConfigRules(boolean value) {
                 includeConfigRules_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -21886,6 +21102,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeConfigRules() {
+                bitField0_ = (bitField0_ & ~0x00000004);
                 includeConfigRules_ = false;
                 onChanged();
                 return this;
@@ -21909,6 +21126,7 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeComponents(boolean value) {
                 includeComponents_ = value;
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -21918,6 +21136,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeComponents() {
+                bitField0_ = (bitField0_ & ~0x00000008);
                 includeComponents_ = false;
                 onChanged();
                 return this;
@@ -21950,7 +21169,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public DeviceFilter parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new DeviceFilter(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -22046,83 +21275,6 @@ public final class ContextOuterClass {
             return new DeviceEvent();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private DeviceEvent(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Event.Builder subBuilder = null;
-                                if (event_ != null) {
-                                    subBuilder = event_.toBuilder();
-                                }
-                                event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(event_);
-                                    event_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.DeviceId.Builder subBuilder = null;
-                                if (deviceId_ != null) {
-                                    subBuilder = deviceId_.toBuilder();
-                                }
-                                deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(deviceId_);
-                                    deviceId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 26:
-                            {
-                                context.ContextOuterClass.DeviceConfig.Builder subBuilder = null;
-                                if (deviceConfig_ != null) {
-                                    subBuilder = deviceConfig_.toBuilder();
-                                }
-                                deviceConfig_ = input.readMessage(context.ContextOuterClass.DeviceConfig.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(deviceConfig_);
-                                    deviceConfig_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_DeviceEvent_descriptor;
         }
@@ -22159,7 +21311,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-            return getEvent();
+            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
         }
 
         public static final int DEVICE_ID_FIELD_NUMBER = 2;
@@ -22189,7 +21341,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
-            return getDeviceId();
+            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
         }
 
         public static final int DEVICE_CONFIG_FIELD_NUMBER = 3;
@@ -22219,7 +21371,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder() {
-            return getDeviceConfig();
+            return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -22246,7 +21398,7 @@ public final class ContextOuterClass {
             if (deviceConfig_ != null) {
                 output.writeMessage(3, getDeviceConfig());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -22264,7 +21416,7 @@ public final class ContextOuterClass {
             if (deviceConfig_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getDeviceConfig());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -22296,7 +21448,7 @@ public final class ContextOuterClass {
                 if (!getDeviceConfig().equals(other.getDeviceConfig()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -22320,7 +21472,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + DEVICE_CONFIG_FIELD_NUMBER;
                 hash = (53 * hash) + getDeviceConfig().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -22414,38 +21566,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.DeviceEvent.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (eventBuilder_ == null) {
-                    event_ = null;
-                } else {
-                    event_ = null;
+                bitField0_ = 0;
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
                     eventBuilder_ = null;
                 }
-                if (deviceIdBuilder_ == null) {
-                    deviceId_ = null;
-                } else {
-                    deviceId_ = null;
+                deviceId_ = null;
+                if (deviceIdBuilder_ != null) {
+                    deviceIdBuilder_.dispose();
                     deviceIdBuilder_ = null;
                 }
-                if (deviceConfigBuilder_ == null) {
-                    deviceConfig_ = null;
-                } else {
-                    deviceConfig_ = null;
+                deviceConfig_ = null;
+                if (deviceConfigBuilder_ != null) {
+                    deviceConfigBuilder_.dispose();
                     deviceConfigBuilder_ = null;
                 }
                 return this;
@@ -22473,53 +21616,24 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.DeviceEvent buildPartial() {
                 context.ContextOuterClass.DeviceEvent result = new context.ContextOuterClass.DeviceEvent(this);
-                if (eventBuilder_ == null) {
-                    result.event_ = event_;
-                } else {
-                    result.event_ = eventBuilder_.build();
-                }
-                if (deviceIdBuilder_ == null) {
-                    result.deviceId_ = deviceId_;
-                } else {
-                    result.deviceId_ = deviceIdBuilder_.build();
-                }
-                if (deviceConfigBuilder_ == null) {
-                    result.deviceConfig_ = deviceConfig_;
-                } else {
-                    result.deviceConfig_ = deviceConfigBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.DeviceEvent result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.deviceId_ = deviceIdBuilder_ == null ? deviceId_ : deviceIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.deviceConfig_ = deviceConfigBuilder_ == null ? deviceConfig_ : deviceConfigBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -22544,7 +21658,7 @@ public final class ContextOuterClass {
                 if (other.hasDeviceConfig()) {
                     mergeDeviceConfig(other.getDeviceConfig());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -22556,20 +21670,61 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.DeviceEvent parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getDeviceIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    input.readMessage(getDeviceConfigFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.DeviceEvent) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.Event event_;
 
             private com.google.protobuf.SingleFieldBuilderV3 eventBuilder_;
@@ -22579,7 +21734,7 @@ public final class ContextOuterClass {
              * @return Whether the event field is set.
              */
             public boolean hasEvent() {
-                return eventBuilder_ != null || event_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -22603,10 +21758,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     event_ = value;
-                    onChanged();
                 } else {
                     eventBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -22616,10 +21772,11 @@ public final class ContextOuterClass {
             public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                 if (eventBuilder_ == null) {
                     event_ = builderForValue.build();
-                    onChanged();
                 } else {
                     eventBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -22628,15 +21785,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeEvent(context.ContextOuterClass.Event value) {
                 if (eventBuilder_ == null) {
-                    if (event_ != null) {
-                        event_ = context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
+                        getEventBuilder().mergeFrom(value);
                     } else {
                         event_ = value;
                     }
-                    onChanged();
                 } else {
                     eventBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -22644,13 +21802,13 @@ public final class ContextOuterClass {
              * .context.Event event = 1;
              */
             public Builder clearEvent() {
-                if (eventBuilder_ == null) {
-                    event_ = null;
-                    onChanged();
-                } else {
-                    event_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
                     eventBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -22658,6 +21816,7 @@ public final class ContextOuterClass {
              * .context.Event event = 1;
              */
             public context.ContextOuterClass.Event.Builder getEventBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEventFieldBuilder().getBuilder();
             }
@@ -22693,7 +21852,7 @@ public final class ContextOuterClass {
              * @return Whether the deviceId field is set.
              */
             public boolean hasDeviceId() {
-                return deviceIdBuilder_ != null || deviceId_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -22717,10 +21876,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     deviceId_ = value;
-                    onChanged();
                 } else {
                     deviceIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -22730,10 +21890,11 @@ public final class ContextOuterClass {
             public Builder setDeviceId(context.ContextOuterClass.DeviceId.Builder builderForValue) {
                 if (deviceIdBuilder_ == null) {
                     deviceId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     deviceIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -22742,15 +21903,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
                 if (deviceIdBuilder_ == null) {
-                    if (deviceId_ != null) {
-                        deviceId_ = context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && deviceId_ != null && deviceId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) {
+                        getDeviceIdBuilder().mergeFrom(value);
                     } else {
                         deviceId_ = value;
                     }
-                    onChanged();
                 } else {
                     deviceIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -22758,13 +21920,13 @@ public final class ContextOuterClass {
              * .context.DeviceId device_id = 2;
              */
             public Builder clearDeviceId() {
-                if (deviceIdBuilder_ == null) {
-                    deviceId_ = null;
-                    onChanged();
-                } else {
-                    deviceId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                deviceId_ = null;
+                if (deviceIdBuilder_ != null) {
+                    deviceIdBuilder_.dispose();
                     deviceIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -22772,6 +21934,7 @@ public final class ContextOuterClass {
              * .context.DeviceId device_id = 2;
              */
             public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getDeviceIdFieldBuilder().getBuilder();
             }
@@ -22807,7 +21970,7 @@ public final class ContextOuterClass {
              * @return Whether the deviceConfig field is set.
              */
             public boolean hasDeviceConfig() {
-                return deviceConfigBuilder_ != null || deviceConfig_ != null;
+                return ((bitField0_ & 0x00000004) != 0);
             }
 
             /**
@@ -22831,10 +21994,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     deviceConfig_ = value;
-                    onChanged();
                 } else {
                     deviceConfigBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -22844,10 +22008,11 @@ public final class ContextOuterClass {
             public Builder setDeviceConfig(context.ContextOuterClass.DeviceConfig.Builder builderForValue) {
                 if (deviceConfigBuilder_ == null) {
                     deviceConfig_ = builderForValue.build();
-                    onChanged();
                 } else {
                     deviceConfigBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -22856,15 +22021,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeDeviceConfig(context.ContextOuterClass.DeviceConfig value) {
                 if (deviceConfigBuilder_ == null) {
-                    if (deviceConfig_ != null) {
-                        deviceConfig_ = context.ContextOuterClass.DeviceConfig.newBuilder(deviceConfig_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000004) != 0) && deviceConfig_ != null && deviceConfig_ != context.ContextOuterClass.DeviceConfig.getDefaultInstance()) {
+                        getDeviceConfigBuilder().mergeFrom(value);
                     } else {
                         deviceConfig_ = value;
                     }
-                    onChanged();
                 } else {
                     deviceConfigBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -22872,13 +22038,13 @@ public final class ContextOuterClass {
              * .context.DeviceConfig device_config = 3;
              */
             public Builder clearDeviceConfig() {
-                if (deviceConfigBuilder_ == null) {
-                    deviceConfig_ = null;
-                    onChanged();
-                } else {
-                    deviceConfig_ = null;
+                bitField0_ = (bitField0_ & ~0x00000004);
+                deviceConfig_ = null;
+                if (deviceConfigBuilder_ != null) {
+                    deviceConfigBuilder_.dispose();
                     deviceConfigBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -22886,6 +22052,7 @@ public final class ContextOuterClass {
              * .context.DeviceConfig device_config = 3;
              */
             public context.ContextOuterClass.DeviceConfig.Builder getDeviceConfigBuilder() {
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return getDeviceConfigFieldBuilder().getBuilder();
             }
@@ -22939,7 +22106,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public DeviceEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new DeviceEvent(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -23005,57 +22182,6 @@ public final class ContextOuterClass {
             return new LinkId();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private LinkId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
-                                if (linkUuid_ != null) {
-                                    subBuilder = linkUuid_.toBuilder();
-                                }
-                                linkUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(linkUuid_);
-                                    linkUuid_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_LinkId_descriptor;
         }
@@ -23092,7 +22218,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getLinkUuidOrBuilder() {
-            return getLinkUuid();
+            return linkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : linkUuid_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -23113,7 +22239,7 @@ public final class ContextOuterClass {
             if (linkUuid_ != null) {
                 output.writeMessage(1, getLinkUuid());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -23125,7 +22251,7 @@ public final class ContextOuterClass {
             if (linkUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getLinkUuid());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -23145,7 +22271,7 @@ public final class ContextOuterClass {
                 if (!getLinkUuid().equals(other.getLinkUuid()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -23161,7 +22287,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + LINK_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getLinkUuid().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -23259,26 +22385,19 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.LinkId.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (linkUuidBuilder_ == null) {
-                    linkUuid_ = null;
-                } else {
-                    linkUuid_ = null;
+                bitField0_ = 0;
+                linkUuid_ = null;
+                if (linkUuidBuilder_ != null) {
+                    linkUuidBuilder_.dispose();
                     linkUuidBuilder_ = null;
                 }
                 return this;
@@ -23306,43 +22425,18 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.LinkId buildPartial() {
                 context.ContextOuterClass.LinkId result = new context.ContextOuterClass.LinkId(this);
-                if (linkUuidBuilder_ == null) {
-                    result.linkUuid_ = linkUuid_;
-                } else {
-                    result.linkUuid_ = linkUuidBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.LinkId result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.linkUuid_ = linkUuidBuilder_ == null ? linkUuid_ : linkUuidBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -23361,7 +22455,7 @@ public final class ContextOuterClass {
                 if (other.hasLinkUuid()) {
                     mergeLinkUuid(other.getLinkUuid());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -23373,20 +22467,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.LinkId parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getLinkUuidFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.LinkId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.Uuid linkUuid_;
 
             private com.google.protobuf.SingleFieldBuilderV3 linkUuidBuilder_;
@@ -23396,7 +22517,7 @@ public final class ContextOuterClass {
              * @return Whether the linkUuid field is set.
              */
             public boolean hasLinkUuid() {
-                return linkUuidBuilder_ != null || linkUuid_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -23420,10 +22541,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     linkUuid_ = value;
-                    onChanged();
                 } else {
                     linkUuidBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -23433,10 +22555,11 @@ public final class ContextOuterClass {
             public Builder setLinkUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (linkUuidBuilder_ == null) {
                     linkUuid_ = builderForValue.build();
-                    onChanged();
                 } else {
                     linkUuidBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -23445,15 +22568,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeLinkUuid(context.ContextOuterClass.Uuid value) {
                 if (linkUuidBuilder_ == null) {
-                    if (linkUuid_ != null) {
-                        linkUuid_ = context.ContextOuterClass.Uuid.newBuilder(linkUuid_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && linkUuid_ != null && linkUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getLinkUuidBuilder().mergeFrom(value);
                     } else {
                         linkUuid_ = value;
                     }
-                    onChanged();
                 } else {
                     linkUuidBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -23461,13 +22585,13 @@ public final class ContextOuterClass {
              * .context.Uuid link_uuid = 1;
              */
             public Builder clearLinkUuid() {
-                if (linkUuidBuilder_ == null) {
-                    linkUuid_ = null;
-                    onChanged();
-                } else {
-                    linkUuid_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                linkUuid_ = null;
+                if (linkUuidBuilder_ != null) {
+                    linkUuidBuilder_.dispose();
                     linkUuidBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -23475,6 +22599,7 @@ public final class ContextOuterClass {
              * .context.Uuid link_uuid = 1;
              */
             public context.ContextOuterClass.Uuid.Builder getLinkUuidBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getLinkUuidFieldBuilder().getBuilder();
             }
@@ -23528,7 +22653,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public LinkId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new LinkId(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -23585,54 +22720,6 @@ public final class ContextOuterClass {
             return new LinkAttributes();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private LinkAttributes(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 13:
-                            {
-                                totalCapacityGbps_ = input.readFloat();
-                                break;
-                            }
-                        case 21:
-                            {
-                                usedCapacityGbps_ = input.readFloat();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_LinkAttributes_descriptor;
         }
@@ -23644,7 +22731,7 @@ public final class ContextOuterClass {
 
         public static final int TOTAL_CAPACITY_GBPS_FIELD_NUMBER = 1;
 
-        private float totalCapacityGbps_;
+        private float totalCapacityGbps_ = 0F;
 
         /**
          * float total_capacity_gbps = 1;
@@ -23657,7 +22744,7 @@ public final class ContextOuterClass {
 
         public static final int USED_CAPACITY_GBPS_FIELD_NUMBER = 2;
 
-        private float usedCapacityGbps_;
+        private float usedCapacityGbps_ = 0F;
 
         /**
          * float used_capacity_gbps = 2;
@@ -23683,13 +22770,13 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (totalCapacityGbps_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(totalCapacityGbps_) != 0) {
                 output.writeFloat(1, totalCapacityGbps_);
             }
-            if (usedCapacityGbps_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(usedCapacityGbps_) != 0) {
                 output.writeFloat(2, usedCapacityGbps_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -23698,13 +22785,13 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (totalCapacityGbps_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(totalCapacityGbps_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, totalCapacityGbps_);
             }
-            if (usedCapacityGbps_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(usedCapacityGbps_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, usedCapacityGbps_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -23722,7 +22809,7 @@ public final class ContextOuterClass {
                 return false;
             if (java.lang.Float.floatToIntBits(getUsedCapacityGbps()) != java.lang.Float.floatToIntBits(other.getUsedCapacityGbps()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -23738,7 +22825,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getTotalCapacityGbps());
             hash = (37 * hash) + USED_CAPACITY_GBPS_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getUsedCapacityGbps());
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -23832,22 +22919,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.LinkAttributes.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 totalCapacityGbps_ = 0F;
                 usedCapacityGbps_ = 0F;
                 return this;
@@ -23875,40 +22956,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.LinkAttributes buildPartial() {
                 context.ContextOuterClass.LinkAttributes result = new context.ContextOuterClass.LinkAttributes(this);
-                result.totalCapacityGbps_ = totalCapacityGbps_;
-                result.usedCapacityGbps_ = usedCapacityGbps_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.LinkAttributes result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.totalCapacityGbps_ = totalCapacityGbps_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.usedCapacityGbps_ = usedCapacityGbps_;
+                }
             }
 
             @java.lang.Override
@@ -23930,7 +22992,7 @@ public final class ContextOuterClass {
                 if (other.getUsedCapacityGbps() != 0F) {
                     setUsedCapacityGbps(other.getUsedCapacityGbps());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -23942,20 +23004,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.LinkAttributes parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 13:
+                                {
+                                    totalCapacityGbps_ = input.readFloat();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 13
+                            case 21:
+                                {
+                                    usedCapacityGbps_ = input.readFloat();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 21
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.LinkAttributes) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private float totalCapacityGbps_;
 
             /**
@@ -23974,6 +23070,7 @@ public final class ContextOuterClass {
              */
             public Builder setTotalCapacityGbps(float value) {
                 totalCapacityGbps_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -23983,6 +23080,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearTotalCapacityGbps() {
+                bitField0_ = (bitField0_ & ~0x00000001);
                 totalCapacityGbps_ = 0F;
                 onChanged();
                 return this;
@@ -24006,6 +23104,7 @@ public final class ContextOuterClass {
              */
             public Builder setUsedCapacityGbps(float value) {
                 usedCapacityGbps_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -24015,6 +23114,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearUsedCapacityGbps() {
+                bitField0_ = (bitField0_ & ~0x00000002);
                 usedCapacityGbps_ = 0F;
                 onChanged();
                 return this;
@@ -24047,7 +23147,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public LinkAttributes parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new LinkAttributes(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -24165,89 +23275,6 @@ public final class ContextOuterClass {
             return new Link();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Link(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.LinkId.Builder subBuilder = null;
-                                if (linkId_ != null) {
-                                    subBuilder = linkId_.toBuilder();
-                                }
-                                linkId_ = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(linkId_);
-                                    linkId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                name_ = s;
-                                break;
-                            }
-                        case 26:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    linkEndpointIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                linkEndpointIds_.add(input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
-                                break;
-                            }
-                        case 34:
-                            {
-                                context.ContextOuterClass.LinkAttributes.Builder subBuilder = null;
-                                if (attributes_ != null) {
-                                    subBuilder = attributes_.toBuilder();
-                                }
-                                attributes_ = input.readMessage(context.ContextOuterClass.LinkAttributes.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(attributes_);
-                                    attributes_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    linkEndpointIds_ = java.util.Collections.unmodifiableList(linkEndpointIds_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Link_descriptor;
         }
@@ -24284,12 +23311,13 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
-            return getLinkId();
+            return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
         }
 
         public static final int NAME_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object name_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object name_ = "";
 
         /**
          * string name = 2;
@@ -24326,6 +23354,7 @@ public final class ContextOuterClass {
 
         public static final int LINK_ENDPOINT_IDS_FIELD_NUMBER = 3;
 
+        @SuppressWarnings("serial")
         private java.util.List linkEndpointIds_;
 
         /**
@@ -24395,7 +23424,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.LinkAttributesOrBuilder getAttributesOrBuilder() {
-            return getAttributes();
+            return attributes_ == null ? context.ContextOuterClass.LinkAttributes.getDefaultInstance() : attributes_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -24416,7 +23445,7 @@ public final class ContextOuterClass {
             if (linkId_ != null) {
                 output.writeMessage(1, getLinkId());
             }
-            if (!getNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
             }
             for (int i = 0; i < linkEndpointIds_.size(); i++) {
@@ -24425,7 +23454,7 @@ public final class ContextOuterClass {
             if (attributes_ != null) {
                 output.writeMessage(4, getAttributes());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -24437,7 +23466,7 @@ public final class ContextOuterClass {
             if (linkId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getLinkId());
             }
-            if (!getNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
             }
             for (int i = 0; i < linkEndpointIds_.size(); i++) {
@@ -24446,7 +23475,7 @@ public final class ContextOuterClass {
             if (attributes_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getAttributes());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -24476,7 +23505,7 @@ public final class ContextOuterClass {
                 if (!getAttributes().equals(other.getAttributes()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -24502,7 +23531,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + ATTRIBUTES_FIELD_NUMBER;
                 hash = (53 * hash) + getAttributes().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -24596,40 +23625,32 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Link.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getLinkEndpointIdsFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (linkIdBuilder_ == null) {
-                    linkId_ = null;
-                } else {
-                    linkId_ = null;
+                bitField0_ = 0;
+                linkId_ = null;
+                if (linkIdBuilder_ != null) {
+                    linkIdBuilder_.dispose();
                     linkIdBuilder_ = null;
                 }
                 name_ = "";
                 if (linkEndpointIdsBuilder_ == null) {
                     linkEndpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    linkEndpointIds_ = null;
                     linkEndpointIdsBuilder_.clear();
                 }
-                if (attributesBuilder_ == null) {
-                    attributes_ = null;
-                } else {
-                    attributes_ = null;
+                bitField0_ = (bitField0_ & ~0x00000004);
+                attributes_ = null;
+                if (attributesBuilder_ != null) {
+                    attributesBuilder_.dispose();
                     attributesBuilder_ = null;
                 }
                 return this;
@@ -24657,59 +23678,37 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Link buildPartial() {
                 context.ContextOuterClass.Link result = new context.ContextOuterClass.Link(this);
-                int from_bitField0_ = bitField0_;
-                if (linkIdBuilder_ == null) {
-                    result.linkId_ = linkId_;
-                } else {
-                    result.linkId_ = linkIdBuilder_.build();
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.name_ = name_;
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.Link result) {
                 if (linkEndpointIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0)) {
+                    if (((bitField0_ & 0x00000004) != 0)) {
                         linkEndpointIds_ = java.util.Collections.unmodifiableList(linkEndpointIds_);
-                        bitField0_ = (bitField0_ & ~0x00000001);
+                        bitField0_ = (bitField0_ & ~0x00000004);
                     }
                     result.linkEndpointIds_ = linkEndpointIds_;
                 } else {
                     result.linkEndpointIds_ = linkEndpointIdsBuilder_.build();
                 }
-                if (attributesBuilder_ == null) {
-                    result.attributes_ = attributes_;
-                } else {
-                    result.attributes_ = attributesBuilder_.build();
-                }
-                onBuilt();
-                return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.Link result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.linkId_ = linkIdBuilder_ == null ? linkId_ : linkIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.name_ = name_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.attributes_ = attributesBuilder_ == null ? attributes_ : attributesBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -24730,13 +23729,14 @@ public final class ContextOuterClass {
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (linkEndpointIdsBuilder_ == null) {
                     if (!other.linkEndpointIds_.isEmpty()) {
                         if (linkEndpointIds_.isEmpty()) {
                             linkEndpointIds_ = other.linkEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                         } else {
                             ensureLinkEndpointIdsIsMutable();
                             linkEndpointIds_.addAll(other.linkEndpointIds_);
@@ -24749,7 +23749,7 @@ public final class ContextOuterClass {
                             linkEndpointIdsBuilder_.dispose();
                             linkEndpointIdsBuilder_ = null;
                             linkEndpointIds_ = other.linkEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                             linkEndpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinkEndpointIdsFieldBuilder() : null;
                         } else {
                             linkEndpointIdsBuilder_.addAllMessages(other.linkEndpointIds_);
@@ -24759,7 +23759,7 @@ public final class ContextOuterClass {
                 if (other.hasAttributes()) {
                     mergeAttributes(other.getAttributes());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -24771,17 +23771,68 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Link parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getLinkIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    name_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                    if (linkEndpointIdsBuilder_ == null) {
+                                        ensureLinkEndpointIdsIsMutable();
+                                        linkEndpointIds_.add(m);
+                                    } else {
+                                        linkEndpointIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    input.readMessage(getAttributesFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 34
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Link) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -24796,7 +23847,7 @@ public final class ContextOuterClass {
              * @return Whether the linkId field is set.
              */
             public boolean hasLinkId() {
-                return linkIdBuilder_ != null || linkId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -24820,10 +23871,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     linkId_ = value;
-                    onChanged();
                 } else {
                     linkIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -24833,10 +23885,11 @@ public final class ContextOuterClass {
             public Builder setLinkId(context.ContextOuterClass.LinkId.Builder builderForValue) {
                 if (linkIdBuilder_ == null) {
                     linkId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     linkIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -24845,15 +23898,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeLinkId(context.ContextOuterClass.LinkId value) {
                 if (linkIdBuilder_ == null) {
-                    if (linkId_ != null) {
-                        linkId_ = context.ContextOuterClass.LinkId.newBuilder(linkId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && linkId_ != null && linkId_ != context.ContextOuterClass.LinkId.getDefaultInstance()) {
+                        getLinkIdBuilder().mergeFrom(value);
                     } else {
                         linkId_ = value;
                     }
-                    onChanged();
                 } else {
                     linkIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -24861,13 +23915,13 @@ public final class ContextOuterClass {
              * .context.LinkId link_id = 1;
              */
             public Builder clearLinkId() {
-                if (linkIdBuilder_ == null) {
-                    linkId_ = null;
-                    onChanged();
-                } else {
-                    linkId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                linkId_ = null;
+                if (linkIdBuilder_ != null) {
+                    linkIdBuilder_.dispose();
                     linkIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -24875,6 +23929,7 @@ public final class ContextOuterClass {
              * .context.LinkId link_id = 1;
              */
             public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getLinkIdFieldBuilder().getBuilder();
             }
@@ -24944,6 +23999,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 name_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -24954,6 +24010,7 @@ public final class ContextOuterClass {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -24969,6 +24026,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -24976,9 +24034,9 @@ public final class ContextOuterClass {
             private java.util.List linkEndpointIds_ = java.util.Collections.emptyList();
 
             private void ensureLinkEndpointIdsIsMutable() {
-                if (!((bitField0_ & 0x00000001) != 0)) {
+                if (!((bitField0_ & 0x00000004) != 0)) {
                     linkEndpointIds_ = new java.util.ArrayList(linkEndpointIds_);
-                    bitField0_ |= 0x00000001;
+                    bitField0_ |= 0x00000004;
                 }
             }
 
@@ -25130,7 +24188,7 @@ public final class ContextOuterClass {
             public Builder clearLinkEndpointIds() {
                 if (linkEndpointIdsBuilder_ == null) {
                     linkEndpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
+                    bitField0_ = (bitField0_ & ~0x00000004);
                     onChanged();
                 } else {
                     linkEndpointIdsBuilder_.clear();
@@ -25204,7 +24262,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getLinkEndpointIdsFieldBuilder() {
                 if (linkEndpointIdsBuilder_ == null) {
-                    linkEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(linkEndpointIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    linkEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(linkEndpointIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
                     linkEndpointIds_ = null;
                 }
                 return linkEndpointIdsBuilder_;
@@ -25219,7 +24277,7 @@ public final class ContextOuterClass {
              * @return Whether the attributes field is set.
              */
             public boolean hasAttributes() {
-                return attributesBuilder_ != null || attributes_ != null;
+                return ((bitField0_ & 0x00000008) != 0);
             }
 
             /**
@@ -25243,10 +24301,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     attributes_ = value;
-                    onChanged();
                 } else {
                     attributesBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000008;
+                onChanged();
                 return this;
             }
 
@@ -25256,10 +24315,11 @@ public final class ContextOuterClass {
             public Builder setAttributes(context.ContextOuterClass.LinkAttributes.Builder builderForValue) {
                 if (attributesBuilder_ == null) {
                     attributes_ = builderForValue.build();
-                    onChanged();
                 } else {
                     attributesBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000008;
+                onChanged();
                 return this;
             }
 
@@ -25268,15 +24328,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeAttributes(context.ContextOuterClass.LinkAttributes value) {
                 if (attributesBuilder_ == null) {
-                    if (attributes_ != null) {
-                        attributes_ = context.ContextOuterClass.LinkAttributes.newBuilder(attributes_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000008) != 0) && attributes_ != null && attributes_ != context.ContextOuterClass.LinkAttributes.getDefaultInstance()) {
+                        getAttributesBuilder().mergeFrom(value);
                     } else {
                         attributes_ = value;
                     }
-                    onChanged();
                 } else {
                     attributesBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000008;
+                onChanged();
                 return this;
             }
 
@@ -25284,13 +24345,13 @@ public final class ContextOuterClass {
              * .context.LinkAttributes attributes = 4;
              */
             public Builder clearAttributes() {
-                if (attributesBuilder_ == null) {
-                    attributes_ = null;
-                    onChanged();
-                } else {
-                    attributes_ = null;
+                bitField0_ = (bitField0_ & ~0x00000008);
+                attributes_ = null;
+                if (attributesBuilder_ != null) {
+                    attributesBuilder_.dispose();
                     attributesBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -25298,6 +24359,7 @@ public final class ContextOuterClass {
              * .context.LinkAttributes attributes = 4;
              */
             public context.ContextOuterClass.LinkAttributes.Builder getAttributesBuilder() {
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return getAttributesFieldBuilder().getBuilder();
             }
@@ -25351,7 +24413,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Link parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Link(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -25422,57 +24494,6 @@ public final class ContextOuterClass {
             return new LinkIdList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private LinkIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    linkIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                linkIds_.add(input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_LinkIdList_descriptor;
         }
@@ -25484,6 +24505,7 @@ public final class ContextOuterClass {
 
         public static final int LINK_IDS_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List linkIds_;
 
         /**
@@ -25544,7 +24566,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < linkIds_.size(); i++) {
                 output.writeMessage(1, linkIds_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -25556,7 +24578,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < linkIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, linkIds_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -25572,7 +24594,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.LinkIdList other = (context.ContextOuterClass.LinkIdList) obj;
             if (!getLinkIdsList().equals(other.getLinkIdsList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -25588,7 +24610,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + LINK_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getLinkIdsList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -25682,29 +24704,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.LinkIdList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getLinkIdsFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (linkIdsBuilder_ == null) {
                     linkIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    linkIds_ = null;
                     linkIdsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -25730,7 +24746,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.LinkIdList buildPartial() {
                 context.ContextOuterClass.LinkIdList result = new context.ContextOuterClass.LinkIdList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.LinkIdList result) {
                 if (linkIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
@@ -25740,38 +24764,10 @@ public final class ContextOuterClass {
                 } else {
                     result.linkIds_ = linkIdsBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
             }
 
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.LinkIdList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -25811,7 +24807,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -25823,17 +24819,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.LinkIdList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.LinkId m = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
+                                    if (linkIdsBuilder_ == null) {
+                                        ensureLinkIdsIsMutable();
+                                        linkIds_.add(m);
+                                    } else {
+                                        linkIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.LinkIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -26103,7 +25129,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public LinkIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new LinkIdList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -26174,57 +25210,6 @@ public final class ContextOuterClass {
             return new LinkList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private LinkList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    links_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                links_.add(input.readMessage(context.ContextOuterClass.Link.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    links_ = java.util.Collections.unmodifiableList(links_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_LinkList_descriptor;
         }
@@ -26236,6 +25221,7 @@ public final class ContextOuterClass {
 
         public static final int LINKS_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List links_;
 
         /**
@@ -26296,7 +25282,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < links_.size(); i++) {
                 output.writeMessage(1, links_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -26308,7 +25294,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < links_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, links_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -26324,7 +25310,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.LinkList other = (context.ContextOuterClass.LinkList) obj;
             if (!getLinksList().equals(other.getLinksList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -26340,7 +25326,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + LINKS_FIELD_NUMBER;
                 hash = (53 * hash) + getLinksList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -26434,29 +25420,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.LinkList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getLinksFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (linksBuilder_ == null) {
                     links_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    links_ = null;
                     linksBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -26482,7 +25462,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.LinkList buildPartial() {
                 context.ContextOuterClass.LinkList result = new context.ContextOuterClass.LinkList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.LinkList result) {
                 if (linksBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         links_ = java.util.Collections.unmodifiableList(links_);
@@ -26492,38 +25480,10 @@ public final class ContextOuterClass {
                 } else {
                     result.links_ = linksBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
             }
 
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.LinkList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -26563,7 +25523,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -26575,17 +25535,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.LinkList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.Link m = input.readMessage(context.ContextOuterClass.Link.parser(), extensionRegistry);
+                                    if (linksBuilder_ == null) {
+                                        ensureLinksIsMutable();
+                                        links_.add(m);
+                                    } else {
+                                        linksBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.LinkList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -26855,7 +25845,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public LinkList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new LinkList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -26934,70 +25934,6 @@ public final class ContextOuterClass {
             return new LinkEvent();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private LinkEvent(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Event.Builder subBuilder = null;
-                                if (event_ != null) {
-                                    subBuilder = event_.toBuilder();
-                                }
-                                event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(event_);
-                                    event_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.LinkId.Builder subBuilder = null;
-                                if (linkId_ != null) {
-                                    subBuilder = linkId_.toBuilder();
-                                }
-                                linkId_ = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(linkId_);
-                                    linkId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_LinkEvent_descriptor;
         }
@@ -27034,7 +25970,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-            return getEvent();
+            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
         }
 
         public static final int LINK_ID_FIELD_NUMBER = 2;
@@ -27064,7 +26000,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
-            return getLinkId();
+            return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -27088,7 +26024,7 @@ public final class ContextOuterClass {
             if (linkId_ != null) {
                 output.writeMessage(2, getLinkId());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -27103,7 +26039,7 @@ public final class ContextOuterClass {
             if (linkId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getLinkId());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -27129,7 +26065,7 @@ public final class ContextOuterClass {
                 if (!getLinkId().equals(other.getLinkId()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -27149,7 +26085,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + LINK_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getLinkId().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -27243,32 +26179,24 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.LinkEvent.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (eventBuilder_ == null) {
-                    event_ = null;
-                } else {
-                    event_ = null;
+                bitField0_ = 0;
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
                     eventBuilder_ = null;
                 }
-                if (linkIdBuilder_ == null) {
-                    linkId_ = null;
-                } else {
-                    linkId_ = null;
+                linkId_ = null;
+                if (linkIdBuilder_ != null) {
+                    linkIdBuilder_.dispose();
                     linkIdBuilder_ = null;
                 }
                 return this;
@@ -27296,48 +26224,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.LinkEvent buildPartial() {
                 context.ContextOuterClass.LinkEvent result = new context.ContextOuterClass.LinkEvent(this);
-                if (eventBuilder_ == null) {
-                    result.event_ = event_;
-                } else {
-                    result.event_ = eventBuilder_.build();
-                }
-                if (linkIdBuilder_ == null) {
-                    result.linkId_ = linkId_;
-                } else {
-                    result.linkId_ = linkIdBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.LinkEvent result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.linkId_ = linkIdBuilder_ == null ? linkId_ : linkIdBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -27359,7 +26260,7 @@ public final class ContextOuterClass {
                 if (other.hasLinkId()) {
                     mergeLinkId(other.getLinkId());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -27371,20 +26272,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.LinkEvent parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getLinkIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.LinkEvent) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.Event event_;
 
             private com.google.protobuf.SingleFieldBuilderV3 eventBuilder_;
@@ -27394,7 +26329,7 @@ public final class ContextOuterClass {
              * @return Whether the event field is set.
              */
             public boolean hasEvent() {
-                return eventBuilder_ != null || event_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -27418,10 +26353,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     event_ = value;
-                    onChanged();
                 } else {
                     eventBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -27431,10 +26367,11 @@ public final class ContextOuterClass {
             public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                 if (eventBuilder_ == null) {
                     event_ = builderForValue.build();
-                    onChanged();
                 } else {
                     eventBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -27443,15 +26380,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeEvent(context.ContextOuterClass.Event value) {
                 if (eventBuilder_ == null) {
-                    if (event_ != null) {
-                        event_ = context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
+                        getEventBuilder().mergeFrom(value);
                     } else {
                         event_ = value;
                     }
-                    onChanged();
                 } else {
                     eventBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -27459,13 +26397,13 @@ public final class ContextOuterClass {
              * .context.Event event = 1;
              */
             public Builder clearEvent() {
-                if (eventBuilder_ == null) {
-                    event_ = null;
-                    onChanged();
-                } else {
-                    event_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
                     eventBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -27473,6 +26411,7 @@ public final class ContextOuterClass {
              * .context.Event event = 1;
              */
             public context.ContextOuterClass.Event.Builder getEventBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEventFieldBuilder().getBuilder();
             }
@@ -27508,7 +26447,7 @@ public final class ContextOuterClass {
              * @return Whether the linkId field is set.
              */
             public boolean hasLinkId() {
-                return linkIdBuilder_ != null || linkId_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -27532,10 +26471,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     linkId_ = value;
-                    onChanged();
                 } else {
                     linkIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -27545,10 +26485,11 @@ public final class ContextOuterClass {
             public Builder setLinkId(context.ContextOuterClass.LinkId.Builder builderForValue) {
                 if (linkIdBuilder_ == null) {
                     linkId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     linkIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -27557,15 +26498,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeLinkId(context.ContextOuterClass.LinkId value) {
                 if (linkIdBuilder_ == null) {
-                    if (linkId_ != null) {
-                        linkId_ = context.ContextOuterClass.LinkId.newBuilder(linkId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && linkId_ != null && linkId_ != context.ContextOuterClass.LinkId.getDefaultInstance()) {
+                        getLinkIdBuilder().mergeFrom(value);
                     } else {
                         linkId_ = value;
                     }
-                    onChanged();
                 } else {
                     linkIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -27573,13 +26515,13 @@ public final class ContextOuterClass {
              * .context.LinkId link_id = 2;
              */
             public Builder clearLinkId() {
-                if (linkIdBuilder_ == null) {
-                    linkId_ = null;
-                    onChanged();
-                } else {
-                    linkId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                linkId_ = null;
+                if (linkIdBuilder_ != null) {
+                    linkIdBuilder_.dispose();
                     linkIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -27587,6 +26529,7 @@ public final class ContextOuterClass {
              * .context.LinkId link_id = 2;
              */
             public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getLinkIdFieldBuilder().getBuilder();
             }
@@ -27640,7 +26583,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public LinkEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new LinkEvent(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -27723,70 +26676,6 @@ public final class ContextOuterClass {
             return new ServiceId();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ServiceId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.ContextId.Builder subBuilder = null;
-                                if (contextId_ != null) {
-                                    subBuilder = contextId_.toBuilder();
-                                }
-                                contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(contextId_);
-                                    contextId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
-                                if (serviceUuid_ != null) {
-                                    subBuilder = serviceUuid_.toBuilder();
-                                }
-                                serviceUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(serviceUuid_);
-                                    serviceUuid_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ServiceId_descriptor;
         }
@@ -27823,7 +26712,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-            return getContextId();
+            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
         }
 
         public static final int SERVICE_UUID_FIELD_NUMBER = 2;
@@ -27853,7 +26742,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getServiceUuidOrBuilder() {
-            return getServiceUuid();
+            return serviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : serviceUuid_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -27877,7 +26766,7 @@ public final class ContextOuterClass {
             if (serviceUuid_ != null) {
                 output.writeMessage(2, getServiceUuid());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -27892,7 +26781,7 @@ public final class ContextOuterClass {
             if (serviceUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getServiceUuid());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -27918,7 +26807,7 @@ public final class ContextOuterClass {
                 if (!getServiceUuid().equals(other.getServiceUuid()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -27938,7 +26827,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SERVICE_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getServiceUuid().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -28036,32 +26925,24 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ServiceId.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (contextIdBuilder_ == null) {
-                    contextId_ = null;
-                } else {
-                    contextId_ = null;
+                bitField0_ = 0;
+                contextId_ = null;
+                if (contextIdBuilder_ != null) {
+                    contextIdBuilder_.dispose();
                     contextIdBuilder_ = null;
                 }
-                if (serviceUuidBuilder_ == null) {
-                    serviceUuid_ = null;
-                } else {
-                    serviceUuid_ = null;
+                serviceUuid_ = null;
+                if (serviceUuidBuilder_ != null) {
+                    serviceUuidBuilder_.dispose();
                     serviceUuidBuilder_ = null;
                 }
                 return this;
@@ -28089,48 +26970,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ServiceId buildPartial() {
                 context.ContextOuterClass.ServiceId result = new context.ContextOuterClass.ServiceId(this);
-                if (contextIdBuilder_ == null) {
-                    result.contextId_ = contextId_;
-                } else {
-                    result.contextId_ = contextIdBuilder_.build();
-                }
-                if (serviceUuidBuilder_ == null) {
-                    result.serviceUuid_ = serviceUuid_;
-                } else {
-                    result.serviceUuid_ = serviceUuidBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ServiceId result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.serviceUuid_ = serviceUuidBuilder_ == null ? serviceUuid_ : serviceUuidBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -28152,7 +27006,7 @@ public final class ContextOuterClass {
                 if (other.hasServiceUuid()) {
                     mergeServiceUuid(other.getServiceUuid());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -28164,20 +27018,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ServiceId parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getServiceUuidFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ServiceId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.ContextId contextId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 contextIdBuilder_;
@@ -28187,7 +27075,7 @@ public final class ContextOuterClass {
              * @return Whether the contextId field is set.
              */
             public boolean hasContextId() {
-                return contextIdBuilder_ != null || contextId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -28211,10 +27099,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     contextId_ = value;
-                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -28224,10 +27113,11 @@ public final class ContextOuterClass {
             public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
                 if (contextIdBuilder_ == null) {
                     contextId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -28236,15 +27126,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
                 if (contextIdBuilder_ == null) {
-                    if (contextId_ != null) {
-                        contextId_ = context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
+                        getContextIdBuilder().mergeFrom(value);
                     } else {
                         contextId_ = value;
                     }
-                    onChanged();
                 } else {
                     contextIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -28252,13 +27143,13 @@ public final class ContextOuterClass {
              * .context.ContextId context_id = 1;
              */
             public Builder clearContextId() {
-                if (contextIdBuilder_ == null) {
-                    contextId_ = null;
-                    onChanged();
-                } else {
-                    contextId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                contextId_ = null;
+                if (contextIdBuilder_ != null) {
+                    contextIdBuilder_.dispose();
                     contextIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -28266,6 +27157,7 @@ public final class ContextOuterClass {
              * .context.ContextId context_id = 1;
              */
             public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getContextIdFieldBuilder().getBuilder();
             }
@@ -28301,7 +27193,7 @@ public final class ContextOuterClass {
              * @return Whether the serviceUuid field is set.
              */
             public boolean hasServiceUuid() {
-                return serviceUuidBuilder_ != null || serviceUuid_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -28325,10 +27217,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     serviceUuid_ = value;
-                    onChanged();
                 } else {
                     serviceUuidBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -28338,10 +27231,11 @@ public final class ContextOuterClass {
             public Builder setServiceUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (serviceUuidBuilder_ == null) {
                     serviceUuid_ = builderForValue.build();
-                    onChanged();
                 } else {
                     serviceUuidBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -28350,15 +27244,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeServiceUuid(context.ContextOuterClass.Uuid value) {
                 if (serviceUuidBuilder_ == null) {
-                    if (serviceUuid_ != null) {
-                        serviceUuid_ = context.ContextOuterClass.Uuid.newBuilder(serviceUuid_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && serviceUuid_ != null && serviceUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getServiceUuidBuilder().mergeFrom(value);
                     } else {
                         serviceUuid_ = value;
                     }
-                    onChanged();
                 } else {
                     serviceUuidBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -28366,13 +27261,13 @@ public final class ContextOuterClass {
              * .context.Uuid service_uuid = 2;
              */
             public Builder clearServiceUuid() {
-                if (serviceUuidBuilder_ == null) {
-                    serviceUuid_ = null;
-                    onChanged();
-                } else {
-                    serviceUuid_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                serviceUuid_ = null;
+                if (serviceUuidBuilder_ != null) {
+                    serviceUuidBuilder_.dispose();
                     serviceUuidBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -28380,6 +27275,7 @@ public final class ContextOuterClass {
              * .context.Uuid service_uuid = 2;
              */
             public context.ContextOuterClass.Uuid.Builder getServiceUuidBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getServiceUuidFieldBuilder().getBuilder();
             }
@@ -28433,7 +27329,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ServiceId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ServiceId(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -28624,133 +27530,6 @@ public final class ContextOuterClass {
             return new Service();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Service(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.ServiceId.Builder subBuilder = null;
-                                if (serviceId_ != null) {
-                                    subBuilder = serviceId_.toBuilder();
-                                }
-                                serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(serviceId_);
-                                    serviceId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                name_ = s;
-                                break;
-                            }
-                        case 24:
-                            {
-                                int rawValue = input.readEnum();
-                                serviceType_ = rawValue;
-                                break;
-                            }
-                        case 34:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    serviceEndpointIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                serviceEndpointIds_.add(input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
-                                break;
-                            }
-                        case 42:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
-                                    serviceConstraints_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000002;
-                                }
-                                serviceConstraints_.add(input.readMessage(context.ContextOuterClass.Constraint.parser(), extensionRegistry));
-                                break;
-                            }
-                        case 50:
-                            {
-                                context.ContextOuterClass.ServiceStatus.Builder subBuilder = null;
-                                if (serviceStatus_ != null) {
-                                    subBuilder = serviceStatus_.toBuilder();
-                                }
-                                serviceStatus_ = input.readMessage(context.ContextOuterClass.ServiceStatus.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(serviceStatus_);
-                                    serviceStatus_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 58:
-                            {
-                                context.ContextOuterClass.ServiceConfig.Builder subBuilder = null;
-                                if (serviceConfig_ != null) {
-                                    subBuilder = serviceConfig_.toBuilder();
-                                }
-                                serviceConfig_ = input.readMessage(context.ContextOuterClass.ServiceConfig.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(serviceConfig_);
-                                    serviceConfig_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 66:
-                            {
-                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-                                if (timestamp_ != null) {
-                                    subBuilder = timestamp_.toBuilder();
-                                }
-                                timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(timestamp_);
-                                    timestamp_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    serviceEndpointIds_ = java.util.Collections.unmodifiableList(serviceEndpointIds_);
-                }
-                if (((mutable_bitField0_ & 0x00000002) != 0)) {
-                    serviceConstraints_ = java.util.Collections.unmodifiableList(serviceConstraints_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Service_descriptor;
         }
@@ -28787,12 +27566,13 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-            return getServiceId();
+            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
         }
 
         public static final int NAME_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object name_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object name_ = "";
 
         /**
          * string name = 2;
@@ -28829,7 +27609,7 @@ public final class ContextOuterClass {
 
         public static final int SERVICE_TYPE_FIELD_NUMBER = 3;
 
-        private int serviceType_;
+        private int serviceType_ = 0;
 
         /**
          * .context.ServiceTypeEnum service_type = 3;
@@ -28846,13 +27626,13 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceTypeEnum getServiceType() {
-            @SuppressWarnings("deprecation")
-            context.ContextOuterClass.ServiceTypeEnum result = context.ContextOuterClass.ServiceTypeEnum.valueOf(serviceType_);
+            context.ContextOuterClass.ServiceTypeEnum result = context.ContextOuterClass.ServiceTypeEnum.forNumber(serviceType_);
             return result == null ? context.ContextOuterClass.ServiceTypeEnum.UNRECOGNIZED : result;
         }
 
         public static final int SERVICE_ENDPOINT_IDS_FIELD_NUMBER = 4;
 
+        @SuppressWarnings("serial")
         private java.util.List serviceEndpointIds_;
 
         /**
@@ -28897,6 +27677,7 @@ public final class ContextOuterClass {
 
         public static final int SERVICE_CONSTRAINTS_FIELD_NUMBER = 5;
 
+        @SuppressWarnings("serial")
         private java.util.List serviceConstraints_;
 
         /**
@@ -28966,7 +27747,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceStatusOrBuilder getServiceStatusOrBuilder() {
-            return getServiceStatus();
+            return serviceStatus_ == null ? context.ContextOuterClass.ServiceStatus.getDefaultInstance() : serviceStatus_;
         }
 
         public static final int SERVICE_CONFIG_FIELD_NUMBER = 7;
@@ -28996,7 +27777,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceConfigOrBuilder getServiceConfigOrBuilder() {
-            return getServiceConfig();
+            return serviceConfig_ == null ? context.ContextOuterClass.ServiceConfig.getDefaultInstance() : serviceConfig_;
         }
 
         public static final int TIMESTAMP_FIELD_NUMBER = 8;
@@ -29026,7 +27807,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-            return getTimestamp();
+            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -29047,7 +27828,7 @@ public final class ContextOuterClass {
             if (serviceId_ != null) {
                 output.writeMessage(1, getServiceId());
             }
-            if (!getNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
             }
             if (serviceType_ != context.ContextOuterClass.ServiceTypeEnum.SERVICETYPE_UNKNOWN.getNumber()) {
@@ -29068,7 +27849,7 @@ public final class ContextOuterClass {
             if (timestamp_ != null) {
                 output.writeMessage(8, getTimestamp());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -29080,7 +27861,7 @@ public final class ContextOuterClass {
             if (serviceId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getServiceId());
             }
-            if (!getNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
             }
             if (serviceType_ != context.ContextOuterClass.ServiceTypeEnum.SERVICETYPE_UNKNOWN.getNumber()) {
@@ -29101,7 +27882,7 @@ public final class ContextOuterClass {
             if (timestamp_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(8, getTimestamp());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -29147,7 +27928,7 @@ public final class ContextOuterClass {
                 if (!getTimestamp().equals(other.getTimestamp()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -29187,7 +27968,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
                 hash = (53 * hash) + getTimestamp().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -29281,60 +28062,50 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Service.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getServiceEndpointIdsFieldBuilder();
-                    getServiceConstraintsFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (serviceIdBuilder_ == null) {
-                    serviceId_ = null;
-                } else {
-                    serviceId_ = null;
+                bitField0_ = 0;
+                serviceId_ = null;
+                if (serviceIdBuilder_ != null) {
+                    serviceIdBuilder_.dispose();
                     serviceIdBuilder_ = null;
                 }
                 name_ = "";
                 serviceType_ = 0;
                 if (serviceEndpointIdsBuilder_ == null) {
                     serviceEndpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    serviceEndpointIds_ = null;
                     serviceEndpointIdsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000008);
                 if (serviceConstraintsBuilder_ == null) {
                     serviceConstraints_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000002);
                 } else {
+                    serviceConstraints_ = null;
                     serviceConstraintsBuilder_.clear();
                 }
-                if (serviceStatusBuilder_ == null) {
-                    serviceStatus_ = null;
-                } else {
-                    serviceStatus_ = null;
+                bitField0_ = (bitField0_ & ~0x00000010);
+                serviceStatus_ = null;
+                if (serviceStatusBuilder_ != null) {
+                    serviceStatusBuilder_.dispose();
                     serviceStatusBuilder_ = null;
                 }
-                if (serviceConfigBuilder_ == null) {
-                    serviceConfig_ = null;
-                } else {
-                    serviceConfig_ = null;
+                serviceConfig_ = null;
+                if (serviceConfigBuilder_ != null) {
+                    serviceConfigBuilder_.dispose();
                     serviceConfigBuilder_ = null;
                 }
-                if (timestampBuilder_ == null) {
-                    timestamp_ = null;
-                } else {
-                    timestamp_ = null;
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
                     timestampBuilder_ = null;
                 }
                 return this;
@@ -29362,79 +28133,55 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Service buildPartial() {
                 context.ContextOuterClass.Service result = new context.ContextOuterClass.Service(this);
-                int from_bitField0_ = bitField0_;
-                if (serviceIdBuilder_ == null) {
-                    result.serviceId_ = serviceId_;
-                } else {
-                    result.serviceId_ = serviceIdBuilder_.build();
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.name_ = name_;
-                result.serviceType_ = serviceType_;
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.Service result) {
                 if (serviceEndpointIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0)) {
+                    if (((bitField0_ & 0x00000008) != 0)) {
                         serviceEndpointIds_ = java.util.Collections.unmodifiableList(serviceEndpointIds_);
-                        bitField0_ = (bitField0_ & ~0x00000001);
+                        bitField0_ = (bitField0_ & ~0x00000008);
                     }
                     result.serviceEndpointIds_ = serviceEndpointIds_;
                 } else {
                     result.serviceEndpointIds_ = serviceEndpointIdsBuilder_.build();
                 }
                 if (serviceConstraintsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0)) {
+                    if (((bitField0_ & 0x00000010) != 0)) {
                         serviceConstraints_ = java.util.Collections.unmodifiableList(serviceConstraints_);
-                        bitField0_ = (bitField0_ & ~0x00000002);
+                        bitField0_ = (bitField0_ & ~0x00000010);
                     }
                     result.serviceConstraints_ = serviceConstraints_;
                 } else {
                     result.serviceConstraints_ = serviceConstraintsBuilder_.build();
                 }
-                if (serviceStatusBuilder_ == null) {
-                    result.serviceStatus_ = serviceStatus_;
-                } else {
-                    result.serviceStatus_ = serviceStatusBuilder_.build();
+            }
+
+            private void buildPartial0(context.ContextOuterClass.Service result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.serviceId_ = serviceIdBuilder_ == null ? serviceId_ : serviceIdBuilder_.build();
                 }
-                if (serviceConfigBuilder_ == null) {
-                    result.serviceConfig_ = serviceConfig_;
-                } else {
-                    result.serviceConfig_ = serviceConfigBuilder_.build();
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.name_ = name_;
                 }
-                if (timestampBuilder_ == null) {
-                    result.timestamp_ = timestamp_;
-                } else {
-                    result.timestamp_ = timestampBuilder_.build();
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.serviceType_ = serviceType_;
+                }
+                if (((from_bitField0_ & 0x00000020) != 0)) {
+                    result.serviceStatus_ = serviceStatusBuilder_ == null ? serviceStatus_ : serviceStatusBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000040) != 0)) {
+                    result.serviceConfig_ = serviceConfigBuilder_ == null ? serviceConfig_ : serviceConfigBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000080) != 0)) {
+                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -29455,6 +28202,7 @@ public final class ContextOuterClass {
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (other.serviceType_ != 0) {
@@ -29464,7 +28212,7 @@ public final class ContextOuterClass {
                     if (!other.serviceEndpointIds_.isEmpty()) {
                         if (serviceEndpointIds_.isEmpty()) {
                             serviceEndpointIds_ = other.serviceEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000008);
                         } else {
                             ensureServiceEndpointIdsIsMutable();
                             serviceEndpointIds_.addAll(other.serviceEndpointIds_);
@@ -29477,7 +28225,7 @@ public final class ContextOuterClass {
                             serviceEndpointIdsBuilder_.dispose();
                             serviceEndpointIdsBuilder_ = null;
                             serviceEndpointIds_ = other.serviceEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000008);
                             serviceEndpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getServiceEndpointIdsFieldBuilder() : null;
                         } else {
                             serviceEndpointIdsBuilder_.addAllMessages(other.serviceEndpointIds_);
@@ -29488,7 +28236,7 @@ public final class ContextOuterClass {
                     if (!other.serviceConstraints_.isEmpty()) {
                         if (serviceConstraints_.isEmpty()) {
                             serviceConstraints_ = other.serviceConstraints_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000010);
                         } else {
                             ensureServiceConstraintsIsMutable();
                             serviceConstraints_.addAll(other.serviceConstraints_);
@@ -29501,7 +28249,7 @@ public final class ContextOuterClass {
                             serviceConstraintsBuilder_.dispose();
                             serviceConstraintsBuilder_ = null;
                             serviceConstraints_ = other.serviceConstraints_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000010);
                             serviceConstraintsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getServiceConstraintsFieldBuilder() : null;
                         } else {
                             serviceConstraintsBuilder_.addAllMessages(other.serviceConstraints_);
@@ -29517,7 +28265,7 @@ public final class ContextOuterClass {
                 if (other.hasTimestamp()) {
                     mergeTimestamp(other.getTimestamp());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -29529,17 +28277,101 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Service parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getServiceIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    name_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 24:
+                                {
+                                    serviceType_ = input.readEnum();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            case 34:
+                                {
+                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                    if (serviceEndpointIdsBuilder_ == null) {
+                                        ensureServiceEndpointIdsIsMutable();
+                                        serviceEndpointIds_.add(m);
+                                    } else {
+                                        serviceEndpointIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 34
+                            case 42:
+                                {
+                                    context.ContextOuterClass.Constraint m = input.readMessage(context.ContextOuterClass.Constraint.parser(), extensionRegistry);
+                                    if (serviceConstraintsBuilder_ == null) {
+                                        ensureServiceConstraintsIsMutable();
+                                        serviceConstraints_.add(m);
+                                    } else {
+                                        serviceConstraintsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 42
+                            case 50:
+                                {
+                                    input.readMessage(getServiceStatusFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000020;
+                                    break;
+                                }
+                            // case 50
+                            case 58:
+                                {
+                                    input.readMessage(getServiceConfigFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000040;
+                                    break;
+                                }
+                            // case 58
+                            case 66:
+                                {
+                                    input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000080;
+                                    break;
+                                }
+                            // case 66
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Service) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -29554,7 +28386,7 @@ public final class ContextOuterClass {
              * @return Whether the serviceId field is set.
              */
             public boolean hasServiceId() {
-                return serviceIdBuilder_ != null || serviceId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -29578,10 +28410,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     serviceId_ = value;
-                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -29591,10 +28424,11 @@ public final class ContextOuterClass {
             public Builder setServiceId(context.ContextOuterClass.ServiceId.Builder builderForValue) {
                 if (serviceIdBuilder_ == null) {
                     serviceId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -29603,15 +28437,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
                 if (serviceIdBuilder_ == null) {
-                    if (serviceId_ != null) {
-                        serviceId_ = context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && serviceId_ != null && serviceId_ != context.ContextOuterClass.ServiceId.getDefaultInstance()) {
+                        getServiceIdBuilder().mergeFrom(value);
                     } else {
                         serviceId_ = value;
                     }
-                    onChanged();
                 } else {
                     serviceIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -29619,13 +28454,13 @@ public final class ContextOuterClass {
              * .context.ServiceId service_id = 1;
              */
             public Builder clearServiceId() {
-                if (serviceIdBuilder_ == null) {
-                    serviceId_ = null;
-                    onChanged();
-                } else {
-                    serviceId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                serviceId_ = null;
+                if (serviceIdBuilder_ != null) {
+                    serviceIdBuilder_.dispose();
                     serviceIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -29633,6 +28468,7 @@ public final class ContextOuterClass {
              * .context.ServiceId service_id = 1;
              */
             public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getServiceIdFieldBuilder().getBuilder();
             }
@@ -29702,6 +28538,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 name_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -29712,6 +28549,7 @@ public final class ContextOuterClass {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -29727,6 +28565,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -29749,6 +28588,7 @@ public final class ContextOuterClass {
              */
             public Builder setServiceTypeValue(int value) {
                 serviceType_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -29759,8 +28599,7 @@ public final class ContextOuterClass {
              */
             @java.lang.Override
             public context.ContextOuterClass.ServiceTypeEnum getServiceType() {
-                @SuppressWarnings("deprecation")
-                context.ContextOuterClass.ServiceTypeEnum result = context.ContextOuterClass.ServiceTypeEnum.valueOf(serviceType_);
+                context.ContextOuterClass.ServiceTypeEnum result = context.ContextOuterClass.ServiceTypeEnum.forNumber(serviceType_);
                 return result == null ? context.ContextOuterClass.ServiceTypeEnum.UNRECOGNIZED : result;
             }
 
@@ -29773,6 +28612,7 @@ public final class ContextOuterClass {
                 if (value == null) {
                     throw new NullPointerException();
                 }
+                bitField0_ |= 0x00000004;
                 serviceType_ = value.getNumber();
                 onChanged();
                 return this;
@@ -29783,6 +28623,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearServiceType() {
+                bitField0_ = (bitField0_ & ~0x00000004);
                 serviceType_ = 0;
                 onChanged();
                 return this;
@@ -29791,9 +28632,9 @@ public final class ContextOuterClass {
             private java.util.List serviceEndpointIds_ = java.util.Collections.emptyList();
 
             private void ensureServiceEndpointIdsIsMutable() {
-                if (!((bitField0_ & 0x00000001) != 0)) {
+                if (!((bitField0_ & 0x00000008) != 0)) {
                     serviceEndpointIds_ = new java.util.ArrayList(serviceEndpointIds_);
-                    bitField0_ |= 0x00000001;
+                    bitField0_ |= 0x00000008;
                 }
             }
 
@@ -29945,7 +28786,7 @@ public final class ContextOuterClass {
             public Builder clearServiceEndpointIds() {
                 if (serviceEndpointIdsBuilder_ == null) {
                     serviceEndpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
+                    bitField0_ = (bitField0_ & ~0x00000008);
                     onChanged();
                 } else {
                     serviceEndpointIdsBuilder_.clear();
@@ -30019,7 +28860,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getServiceEndpointIdsFieldBuilder() {
                 if (serviceEndpointIdsBuilder_ == null) {
-                    serviceEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(serviceEndpointIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    serviceEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(serviceEndpointIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
                     serviceEndpointIds_ = null;
                 }
                 return serviceEndpointIdsBuilder_;
@@ -30028,9 +28869,9 @@ public final class ContextOuterClass {
             private java.util.List serviceConstraints_ = java.util.Collections.emptyList();
 
             private void ensureServiceConstraintsIsMutable() {
-                if (!((bitField0_ & 0x00000002) != 0)) {
+                if (!((bitField0_ & 0x00000010) != 0)) {
                     serviceConstraints_ = new java.util.ArrayList(serviceConstraints_);
-                    bitField0_ |= 0x00000002;
+                    bitField0_ |= 0x00000010;
                 }
             }
 
@@ -30182,7 +29023,7 @@ public final class ContextOuterClass {
             public Builder clearServiceConstraints() {
                 if (serviceConstraintsBuilder_ == null) {
                     serviceConstraints_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000002);
+                    bitField0_ = (bitField0_ & ~0x00000010);
                     onChanged();
                 } else {
                     serviceConstraintsBuilder_.clear();
@@ -30256,7 +29097,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getServiceConstraintsFieldBuilder() {
                 if (serviceConstraintsBuilder_ == null) {
-                    serviceConstraintsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(serviceConstraints_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
+                    serviceConstraintsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(serviceConstraints_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean());
                     serviceConstraints_ = null;
                 }
                 return serviceConstraintsBuilder_;
@@ -30271,7 +29112,7 @@ public final class ContextOuterClass {
              * @return Whether the serviceStatus field is set.
              */
             public boolean hasServiceStatus() {
-                return serviceStatusBuilder_ != null || serviceStatus_ != null;
+                return ((bitField0_ & 0x00000020) != 0);
             }
 
             /**
@@ -30295,10 +29136,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     serviceStatus_ = value;
-                    onChanged();
                 } else {
                     serviceStatusBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000020;
+                onChanged();
                 return this;
             }
 
@@ -30308,10 +29150,11 @@ public final class ContextOuterClass {
             public Builder setServiceStatus(context.ContextOuterClass.ServiceStatus.Builder builderForValue) {
                 if (serviceStatusBuilder_ == null) {
                     serviceStatus_ = builderForValue.build();
-                    onChanged();
                 } else {
                     serviceStatusBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000020;
+                onChanged();
                 return this;
             }
 
@@ -30320,15 +29163,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeServiceStatus(context.ContextOuterClass.ServiceStatus value) {
                 if (serviceStatusBuilder_ == null) {
-                    if (serviceStatus_ != null) {
-                        serviceStatus_ = context.ContextOuterClass.ServiceStatus.newBuilder(serviceStatus_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000020) != 0) && serviceStatus_ != null && serviceStatus_ != context.ContextOuterClass.ServiceStatus.getDefaultInstance()) {
+                        getServiceStatusBuilder().mergeFrom(value);
                     } else {
                         serviceStatus_ = value;
                     }
-                    onChanged();
                 } else {
                     serviceStatusBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000020;
+                onChanged();
                 return this;
             }
 
@@ -30336,13 +29180,13 @@ public final class ContextOuterClass {
              * .context.ServiceStatus service_status = 6;
              */
             public Builder clearServiceStatus() {
-                if (serviceStatusBuilder_ == null) {
-                    serviceStatus_ = null;
-                    onChanged();
-                } else {
-                    serviceStatus_ = null;
+                bitField0_ = (bitField0_ & ~0x00000020);
+                serviceStatus_ = null;
+                if (serviceStatusBuilder_ != null) {
+                    serviceStatusBuilder_.dispose();
                     serviceStatusBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -30350,6 +29194,7 @@ public final class ContextOuterClass {
              * .context.ServiceStatus service_status = 6;
              */
             public context.ContextOuterClass.ServiceStatus.Builder getServiceStatusBuilder() {
+                bitField0_ |= 0x00000020;
                 onChanged();
                 return getServiceStatusFieldBuilder().getBuilder();
             }
@@ -30385,7 +29230,7 @@ public final class ContextOuterClass {
              * @return Whether the serviceConfig field is set.
              */
             public boolean hasServiceConfig() {
-                return serviceConfigBuilder_ != null || serviceConfig_ != null;
+                return ((bitField0_ & 0x00000040) != 0);
             }
 
             /**
@@ -30409,10 +29254,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     serviceConfig_ = value;
-                    onChanged();
                 } else {
                     serviceConfigBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000040;
+                onChanged();
                 return this;
             }
 
@@ -30422,10 +29268,11 @@ public final class ContextOuterClass {
             public Builder setServiceConfig(context.ContextOuterClass.ServiceConfig.Builder builderForValue) {
                 if (serviceConfigBuilder_ == null) {
                     serviceConfig_ = builderForValue.build();
-                    onChanged();
                 } else {
                     serviceConfigBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000040;
+                onChanged();
                 return this;
             }
 
@@ -30434,15 +29281,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeServiceConfig(context.ContextOuterClass.ServiceConfig value) {
                 if (serviceConfigBuilder_ == null) {
-                    if (serviceConfig_ != null) {
-                        serviceConfig_ = context.ContextOuterClass.ServiceConfig.newBuilder(serviceConfig_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000040) != 0) && serviceConfig_ != null && serviceConfig_ != context.ContextOuterClass.ServiceConfig.getDefaultInstance()) {
+                        getServiceConfigBuilder().mergeFrom(value);
                     } else {
                         serviceConfig_ = value;
                     }
-                    onChanged();
                 } else {
                     serviceConfigBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000040;
+                onChanged();
                 return this;
             }
 
@@ -30450,13 +29298,13 @@ public final class ContextOuterClass {
              * .context.ServiceConfig service_config = 7;
              */
             public Builder clearServiceConfig() {
-                if (serviceConfigBuilder_ == null) {
-                    serviceConfig_ = null;
-                    onChanged();
-                } else {
-                    serviceConfig_ = null;
+                bitField0_ = (bitField0_ & ~0x00000040);
+                serviceConfig_ = null;
+                if (serviceConfigBuilder_ != null) {
+                    serviceConfigBuilder_.dispose();
                     serviceConfigBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -30464,6 +29312,7 @@ public final class ContextOuterClass {
              * .context.ServiceConfig service_config = 7;
              */
             public context.ContextOuterClass.ServiceConfig.Builder getServiceConfigBuilder() {
+                bitField0_ |= 0x00000040;
                 onChanged();
                 return getServiceConfigFieldBuilder().getBuilder();
             }
@@ -30499,7 +29348,7 @@ public final class ContextOuterClass {
              * @return Whether the timestamp field is set.
              */
             public boolean hasTimestamp() {
-                return timestampBuilder_ != null || timestamp_ != null;
+                return ((bitField0_ & 0x00000080) != 0);
             }
 
             /**
@@ -30523,10 +29372,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     timestamp_ = value;
-                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000080;
+                onChanged();
                 return this;
             }
 
@@ -30536,10 +29386,11 @@ public final class ContextOuterClass {
             public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (timestampBuilder_ == null) {
                     timestamp_ = builderForValue.build();
-                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000080;
+                onChanged();
                 return this;
             }
 
@@ -30548,15 +29399,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (timestampBuilder_ == null) {
-                    if (timestamp_ != null) {
-                        timestamp_ = context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000080) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
+                        getTimestampBuilder().mergeFrom(value);
                     } else {
                         timestamp_ = value;
                     }
-                    onChanged();
                 } else {
                     timestampBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000080;
+                onChanged();
                 return this;
             }
 
@@ -30564,13 +29416,13 @@ public final class ContextOuterClass {
              * .context.Timestamp timestamp = 8;
              */
             public Builder clearTimestamp() {
-                if (timestampBuilder_ == null) {
-                    timestamp_ = null;
-                    onChanged();
-                } else {
-                    timestamp_ = null;
+                bitField0_ = (bitField0_ & ~0x00000080);
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
                     timestampBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -30578,6 +29430,7 @@ public final class ContextOuterClass {
              * .context.Timestamp timestamp = 8;
              */
             public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
+                bitField0_ |= 0x00000080;
                 onChanged();
                 return getTimestampFieldBuilder().getBuilder();
             }
@@ -30631,7 +29484,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Service parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Service(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -30689,50 +29552,6 @@ public final class ContextOuterClass {
             return new ServiceStatus();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ServiceStatus(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 8:
-                            {
-                                int rawValue = input.readEnum();
-                                serviceStatus_ = rawValue;
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ServiceStatus_descriptor;
         }
@@ -30744,7 +29563,7 @@ public final class ContextOuterClass {
 
         public static final int SERVICE_STATUS_FIELD_NUMBER = 1;
 
-        private int serviceStatus_;
+        private int serviceStatus_ = 0;
 
         /**
          * .context.ServiceStatusEnum service_status = 1;
@@ -30761,8 +29580,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceStatusEnum getServiceStatus() {
-            @SuppressWarnings("deprecation")
-            context.ContextOuterClass.ServiceStatusEnum result = context.ContextOuterClass.ServiceStatusEnum.valueOf(serviceStatus_);
+            context.ContextOuterClass.ServiceStatusEnum result = context.ContextOuterClass.ServiceStatusEnum.forNumber(serviceStatus_);
             return result == null ? context.ContextOuterClass.ServiceStatusEnum.UNRECOGNIZED : result;
         }
 
@@ -30784,7 +29602,7 @@ public final class ContextOuterClass {
             if (serviceStatus_ != context.ContextOuterClass.ServiceStatusEnum.SERVICESTATUS_UNDEFINED.getNumber()) {
                 output.writeEnum(1, serviceStatus_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -30796,7 +29614,7 @@ public final class ContextOuterClass {
             if (serviceStatus_ != context.ContextOuterClass.ServiceStatusEnum.SERVICESTATUS_UNDEFINED.getNumber()) {
                 size += com.google.protobuf.CodedOutputStream.computeEnumSize(1, serviceStatus_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -30812,7 +29630,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ServiceStatus other = (context.ContextOuterClass.ServiceStatus) obj;
             if (serviceStatus_ != other.serviceStatus_)
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -30826,7 +29644,7 @@ public final class ContextOuterClass {
             hash = (19 * hash) + getDescriptor().hashCode();
             hash = (37 * hash) + SERVICE_STATUS_FIELD_NUMBER;
             hash = (53 * hash) + serviceStatus_;
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -30920,22 +29738,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ServiceStatus.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 serviceStatus_ = 0;
                 return this;
             }
@@ -30962,39 +29774,18 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ServiceStatus buildPartial() {
                 context.ContextOuterClass.ServiceStatus result = new context.ContextOuterClass.ServiceStatus(this);
-                result.serviceStatus_ = serviceStatus_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ServiceStatus result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.serviceStatus_ = serviceStatus_;
+                }
             }
 
             @java.lang.Override
@@ -31013,7 +29804,7 @@ public final class ContextOuterClass {
                 if (other.serviceStatus_ != 0) {
                     setServiceStatusValue(other.getServiceStatusValue());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -31025,20 +29816,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ServiceStatus parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 8:
+                                {
+                                    serviceStatus_ = input.readEnum();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 8
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ServiceStatus) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private int serviceStatus_ = 0;
 
             /**
@@ -31057,6 +29875,7 @@ public final class ContextOuterClass {
              */
             public Builder setServiceStatusValue(int value) {
                 serviceStatus_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -31067,8 +29886,7 @@ public final class ContextOuterClass {
              */
             @java.lang.Override
             public context.ContextOuterClass.ServiceStatusEnum getServiceStatus() {
-                @SuppressWarnings("deprecation")
-                context.ContextOuterClass.ServiceStatusEnum result = context.ContextOuterClass.ServiceStatusEnum.valueOf(serviceStatus_);
+                context.ContextOuterClass.ServiceStatusEnum result = context.ContextOuterClass.ServiceStatusEnum.forNumber(serviceStatus_);
                 return result == null ? context.ContextOuterClass.ServiceStatusEnum.UNRECOGNIZED : result;
             }
 
@@ -31081,6 +29899,7 @@ public final class ContextOuterClass {
                 if (value == null) {
                     throw new NullPointerException();
                 }
+                bitField0_ |= 0x00000001;
                 serviceStatus_ = value.getNumber();
                 onChanged();
                 return this;
@@ -31091,6 +29910,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearServiceStatus() {
+                bitField0_ = (bitField0_ & ~0x00000001);
                 serviceStatus_ = 0;
                 onChanged();
                 return this;
@@ -31123,7 +29943,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ServiceStatus parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ServiceStatus(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -31194,57 +30024,6 @@ public final class ContextOuterClass {
             return new ServiceConfig();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ServiceConfig(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    configRules_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                configRules_.add(input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    configRules_ = java.util.Collections.unmodifiableList(configRules_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ServiceConfig_descriptor;
         }
@@ -31256,6 +30035,7 @@ public final class ContextOuterClass {
 
         public static final int CONFIG_RULES_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List configRules_;
 
         /**
@@ -31316,7 +30096,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < configRules_.size(); i++) {
                 output.writeMessage(1, configRules_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -31328,7 +30108,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < configRules_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, configRules_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -31344,7 +30124,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ServiceConfig other = (context.ContextOuterClass.ServiceConfig) obj;
             if (!getConfigRulesList().equals(other.getConfigRulesList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -31360,7 +30140,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONFIG_RULES_FIELD_NUMBER;
                 hash = (53 * hash) + getConfigRulesList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -31454,29 +30234,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ServiceConfig.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getConfigRulesFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (configRulesBuilder_ == null) {
                     configRules_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    configRules_ = null;
                     configRulesBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -31502,7 +30276,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ServiceConfig buildPartial() {
                 context.ContextOuterClass.ServiceConfig result = new context.ContextOuterClass.ServiceConfig(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.ServiceConfig result) {
                 if (configRulesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         configRules_ = java.util.Collections.unmodifiableList(configRules_);
@@ -31512,38 +30294,10 @@ public final class ContextOuterClass {
                 } else {
                     result.configRules_ = configRulesBuilder_.build();
                 }
-                onBuilt();
-                return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ServiceConfig result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -31583,7 +30337,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -31595,17 +30349,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ServiceConfig parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.ConfigRule m = input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry);
+                                    if (configRulesBuilder_ == null) {
+                                        ensureConfigRulesIsMutable();
+                                        configRules_.add(m);
+                                    } else {
+                                        configRulesBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ServiceConfig) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -31875,7 +30659,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ServiceConfig parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ServiceConfig(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -31946,57 +30740,6 @@ public final class ContextOuterClass {
             return new ServiceIdList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ServiceIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    serviceIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                serviceIds_.add(input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ServiceIdList_descriptor;
         }
@@ -32008,6 +30751,7 @@ public final class ContextOuterClass {
 
         public static final int SERVICE_IDS_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List serviceIds_;
 
         /**
@@ -32068,7 +30812,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < serviceIds_.size(); i++) {
                 output.writeMessage(1, serviceIds_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -32080,7 +30824,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < serviceIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, serviceIds_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -32096,7 +30840,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ServiceIdList other = (context.ContextOuterClass.ServiceIdList) obj;
             if (!getServiceIdsList().equals(other.getServiceIdsList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -32112,7 +30856,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SERVICE_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getServiceIdsList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -32206,29 +30950,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ServiceIdList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getServiceIdsFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (serviceIdsBuilder_ == null) {
                     serviceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    serviceIds_ = null;
                     serviceIdsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -32254,7 +30992,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ServiceIdList buildPartial() {
                 context.ContextOuterClass.ServiceIdList result = new context.ContextOuterClass.ServiceIdList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.ServiceIdList result) {
                 if (serviceIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_);
@@ -32264,38 +31010,10 @@ public final class ContextOuterClass {
                 } else {
                     result.serviceIds_ = serviceIdsBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
             }
 
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ServiceIdList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -32335,7 +31053,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -32347,17 +31065,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ServiceIdList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.ServiceId m = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
+                                    if (serviceIdsBuilder_ == null) {
+                                        ensureServiceIdsIsMutable();
+                                        serviceIds_.add(m);
+                                    } else {
+                                        serviceIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ServiceIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -32627,7 +31375,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ServiceIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ServiceIdList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -32698,57 +31456,6 @@ public final class ContextOuterClass {
             return new ServiceList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ServiceList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    services_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                services_.add(input.readMessage(context.ContextOuterClass.Service.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    services_ = java.util.Collections.unmodifiableList(services_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ServiceList_descriptor;
         }
@@ -32760,6 +31467,7 @@ public final class ContextOuterClass {
 
         public static final int SERVICES_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List services_;
 
         /**
@@ -32820,7 +31528,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < services_.size(); i++) {
                 output.writeMessage(1, services_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -32832,7 +31540,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < services_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, services_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -32848,7 +31556,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ServiceList other = (context.ContextOuterClass.ServiceList) obj;
             if (!getServicesList().equals(other.getServicesList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -32864,7 +31572,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SERVICES_FIELD_NUMBER;
                 hash = (53 * hash) + getServicesList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -32958,29 +31666,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ServiceList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getServicesFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (servicesBuilder_ == null) {
                     services_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    services_ = null;
                     servicesBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -33006,7 +31708,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ServiceList buildPartial() {
                 context.ContextOuterClass.ServiceList result = new context.ContextOuterClass.ServiceList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.ServiceList result) {
                 if (servicesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         services_ = java.util.Collections.unmodifiableList(services_);
@@ -33016,38 +31726,10 @@ public final class ContextOuterClass {
                 } else {
                     result.services_ = servicesBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
             }
 
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ServiceList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -33087,7 +31769,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -33099,17 +31781,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ServiceList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.Service m = input.readMessage(context.ContextOuterClass.Service.parser(), extensionRegistry);
+                                    if (servicesBuilder_ == null) {
+                                        ensureServicesIsMutable();
+                                        services_.add(m);
+                                    } else {
+                                        servicesBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ServiceList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -33379,7 +32091,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ServiceList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ServiceList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -33459,72 +32181,6 @@ public final class ContextOuterClass {
             return new ServiceFilter();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ServiceFilter(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.ServiceIdList.Builder subBuilder = null;
-                                if (serviceIds_ != null) {
-                                    subBuilder = serviceIds_.toBuilder();
-                                }
-                                serviceIds_ = input.readMessage(context.ContextOuterClass.ServiceIdList.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(serviceIds_);
-                                    serviceIds_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 16:
-                            {
-                                includeEndpointIds_ = input.readBool();
-                                break;
-                            }
-                        case 24:
-                            {
-                                includeConstraints_ = input.readBool();
-                                break;
-                            }
-                        case 32:
-                            {
-                                includeConfigRules_ = input.readBool();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ServiceFilter_descriptor;
         }
@@ -33561,12 +32217,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceIdListOrBuilder getServiceIdsOrBuilder() {
-            return getServiceIds();
+            return serviceIds_ == null ? context.ContextOuterClass.ServiceIdList.getDefaultInstance() : serviceIds_;
         }
 
         public static final int INCLUDE_ENDPOINT_IDS_FIELD_NUMBER = 2;
 
-        private boolean includeEndpointIds_;
+        private boolean includeEndpointIds_ = false;
 
         /**
          * bool include_endpoint_ids = 2;
@@ -33579,7 +32235,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_CONSTRAINTS_FIELD_NUMBER = 3;
 
-        private boolean includeConstraints_;
+        private boolean includeConstraints_ = false;
 
         /**
          * bool include_constraints = 3;
@@ -33592,7 +32248,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_CONFIG_RULES_FIELD_NUMBER = 4;
 
-        private boolean includeConfigRules_;
+        private boolean includeConfigRules_ = false;
 
         /**
          * bool include_config_rules = 4;
@@ -33630,7 +32286,7 @@ public final class ContextOuterClass {
             if (includeConfigRules_ != false) {
                 output.writeBool(4, includeConfigRules_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -33651,7 +32307,7 @@ public final class ContextOuterClass {
             if (includeConfigRules_ != false) {
                 size += com.google.protobuf.CodedOutputStream.computeBoolSize(4, includeConfigRules_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -33677,7 +32333,7 @@ public final class ContextOuterClass {
                 return false;
             if (getIncludeConfigRules() != other.getIncludeConfigRules())
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -33699,7 +32355,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeConstraints());
             hash = (37 * hash) + INCLUDE_CONFIG_RULES_FIELD_NUMBER;
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeConfigRules());
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -33793,26 +32449,19 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ServiceFilter.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (serviceIdsBuilder_ == null) {
-                    serviceIds_ = null;
-                } else {
-                    serviceIds_ = null;
+                bitField0_ = 0;
+                serviceIds_ = null;
+                if (serviceIdsBuilder_ != null) {
+                    serviceIdsBuilder_.dispose();
                     serviceIdsBuilder_ = null;
                 }
                 includeEndpointIds_ = false;
@@ -33843,46 +32492,27 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ServiceFilter buildPartial() {
                 context.ContextOuterClass.ServiceFilter result = new context.ContextOuterClass.ServiceFilter(this);
-                if (serviceIdsBuilder_ == null) {
-                    result.serviceIds_ = serviceIds_;
-                } else {
-                    result.serviceIds_ = serviceIdsBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.includeEndpointIds_ = includeEndpointIds_;
-                result.includeConstraints_ = includeConstraints_;
-                result.includeConfigRules_ = includeConfigRules_;
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ServiceFilter result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.serviceIds_ = serviceIdsBuilder_ == null ? serviceIds_ : serviceIdsBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.includeEndpointIds_ = includeEndpointIds_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.includeConstraints_ = includeConstraints_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.includeConfigRules_ = includeConfigRules_;
+                }
             }
 
             @java.lang.Override
@@ -33910,7 +32540,7 @@ public final class ContextOuterClass {
                 if (other.getIncludeConfigRules() != false) {
                     setIncludeConfigRules(other.getIncludeConfigRules());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -33922,20 +32552,68 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ServiceFilter parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getServiceIdsFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 16:
+                                {
+                                    includeEndpointIds_ = input.readBool();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 16
+                            case 24:
+                                {
+                                    includeConstraints_ = input.readBool();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            case 32:
+                                {
+                                    includeConfigRules_ = input.readBool();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 32
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ServiceFilter) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.ServiceIdList serviceIds_;
 
             private com.google.protobuf.SingleFieldBuilderV3 serviceIdsBuilder_;
@@ -33945,7 +32623,7 @@ public final class ContextOuterClass {
              * @return Whether the serviceIds field is set.
              */
             public boolean hasServiceIds() {
-                return serviceIdsBuilder_ != null || serviceIds_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -33969,10 +32647,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     serviceIds_ = value;
-                    onChanged();
                 } else {
                     serviceIdsBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -33982,10 +32661,11 @@ public final class ContextOuterClass {
             public Builder setServiceIds(context.ContextOuterClass.ServiceIdList.Builder builderForValue) {
                 if (serviceIdsBuilder_ == null) {
                     serviceIds_ = builderForValue.build();
-                    onChanged();
                 } else {
                     serviceIdsBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -33994,15 +32674,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeServiceIds(context.ContextOuterClass.ServiceIdList value) {
                 if (serviceIdsBuilder_ == null) {
-                    if (serviceIds_ != null) {
-                        serviceIds_ = context.ContextOuterClass.ServiceIdList.newBuilder(serviceIds_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && serviceIds_ != null && serviceIds_ != context.ContextOuterClass.ServiceIdList.getDefaultInstance()) {
+                        getServiceIdsBuilder().mergeFrom(value);
                     } else {
                         serviceIds_ = value;
                     }
-                    onChanged();
                 } else {
                     serviceIdsBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -34010,13 +32691,13 @@ public final class ContextOuterClass {
              * .context.ServiceIdList service_ids = 1;
              */
             public Builder clearServiceIds() {
-                if (serviceIdsBuilder_ == null) {
-                    serviceIds_ = null;
-                    onChanged();
-                } else {
-                    serviceIds_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                serviceIds_ = null;
+                if (serviceIdsBuilder_ != null) {
+                    serviceIdsBuilder_.dispose();
                     serviceIdsBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -34024,6 +32705,7 @@ public final class ContextOuterClass {
              * .context.ServiceIdList service_ids = 1;
              */
             public context.ContextOuterClass.ServiceIdList.Builder getServiceIdsBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getServiceIdsFieldBuilder().getBuilder();
             }
@@ -34068,6 +32750,7 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeEndpointIds(boolean value) {
                 includeEndpointIds_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -34077,6 +32760,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeEndpointIds() {
+                bitField0_ = (bitField0_ & ~0x00000002);
                 includeEndpointIds_ = false;
                 onChanged();
                 return this;
@@ -34100,6 +32784,7 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeConstraints(boolean value) {
                 includeConstraints_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -34109,6 +32794,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeConstraints() {
+                bitField0_ = (bitField0_ & ~0x00000004);
                 includeConstraints_ = false;
                 onChanged();
                 return this;
@@ -34132,6 +32818,7 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeConfigRules(boolean value) {
                 includeConfigRules_ = value;
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -34141,6 +32828,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeConfigRules() {
+                bitField0_ = (bitField0_ & ~0x00000008);
                 includeConfigRules_ = false;
                 onChanged();
                 return this;
@@ -34173,7 +32861,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ServiceFilter parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ServiceFilter(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -34252,70 +32950,6 @@ public final class ContextOuterClass {
             return new ServiceEvent();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ServiceEvent(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Event.Builder subBuilder = null;
-                                if (event_ != null) {
-                                    subBuilder = event_.toBuilder();
-                                }
-                                event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(event_);
-                                    event_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.ServiceId.Builder subBuilder = null;
-                                if (serviceId_ != null) {
-                                    subBuilder = serviceId_.toBuilder();
-                                }
-                                serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(serviceId_);
-                                    serviceId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ServiceEvent_descriptor;
         }
@@ -34352,7 +32986,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-            return getEvent();
+            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
         }
 
         public static final int SERVICE_ID_FIELD_NUMBER = 2;
@@ -34382,7 +33016,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-            return getServiceId();
+            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -34406,7 +33040,7 @@ public final class ContextOuterClass {
             if (serviceId_ != null) {
                 output.writeMessage(2, getServiceId());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -34421,7 +33055,7 @@ public final class ContextOuterClass {
             if (serviceId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getServiceId());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -34447,7 +33081,7 @@ public final class ContextOuterClass {
                 if (!getServiceId().equals(other.getServiceId()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -34467,7 +33101,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SERVICE_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getServiceId().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -34561,32 +33195,24 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ServiceEvent.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (eventBuilder_ == null) {
-                    event_ = null;
-                } else {
-                    event_ = null;
+                bitField0_ = 0;
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
                     eventBuilder_ = null;
                 }
-                if (serviceIdBuilder_ == null) {
-                    serviceId_ = null;
-                } else {
-                    serviceId_ = null;
+                serviceId_ = null;
+                if (serviceIdBuilder_ != null) {
+                    serviceIdBuilder_.dispose();
                     serviceIdBuilder_ = null;
                 }
                 return this;
@@ -34614,48 +33240,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ServiceEvent buildPartial() {
                 context.ContextOuterClass.ServiceEvent result = new context.ContextOuterClass.ServiceEvent(this);
-                if (eventBuilder_ == null) {
-                    result.event_ = event_;
-                } else {
-                    result.event_ = eventBuilder_.build();
-                }
-                if (serviceIdBuilder_ == null) {
-                    result.serviceId_ = serviceId_;
-                } else {
-                    result.serviceId_ = serviceIdBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ServiceEvent result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.serviceId_ = serviceIdBuilder_ == null ? serviceId_ : serviceIdBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -34677,7 +33276,7 @@ public final class ContextOuterClass {
                 if (other.hasServiceId()) {
                     mergeServiceId(other.getServiceId());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -34689,20 +33288,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ServiceEvent parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getServiceIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ServiceEvent) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.Event event_;
 
             private com.google.protobuf.SingleFieldBuilderV3 eventBuilder_;
@@ -34712,7 +33345,7 @@ public final class ContextOuterClass {
              * @return Whether the event field is set.
              */
             public boolean hasEvent() {
-                return eventBuilder_ != null || event_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -34736,10 +33369,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     event_ = value;
-                    onChanged();
                 } else {
                     eventBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -34749,10 +33383,11 @@ public final class ContextOuterClass {
             public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                 if (eventBuilder_ == null) {
                     event_ = builderForValue.build();
-                    onChanged();
                 } else {
                     eventBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -34761,15 +33396,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeEvent(context.ContextOuterClass.Event value) {
                 if (eventBuilder_ == null) {
-                    if (event_ != null) {
-                        event_ = context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
+                        getEventBuilder().mergeFrom(value);
                     } else {
                         event_ = value;
                     }
-                    onChanged();
                 } else {
                     eventBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -34777,13 +33413,13 @@ public final class ContextOuterClass {
              * .context.Event event = 1;
              */
             public Builder clearEvent() {
-                if (eventBuilder_ == null) {
-                    event_ = null;
-                    onChanged();
-                } else {
-                    event_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
                     eventBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -34791,6 +33427,7 @@ public final class ContextOuterClass {
              * .context.Event event = 1;
              */
             public context.ContextOuterClass.Event.Builder getEventBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEventFieldBuilder().getBuilder();
             }
@@ -34826,7 +33463,7 @@ public final class ContextOuterClass {
              * @return Whether the serviceId field is set.
              */
             public boolean hasServiceId() {
-                return serviceIdBuilder_ != null || serviceId_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -34850,10 +33487,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     serviceId_ = value;
-                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -34863,10 +33501,11 @@ public final class ContextOuterClass {
             public Builder setServiceId(context.ContextOuterClass.ServiceId.Builder builderForValue) {
                 if (serviceIdBuilder_ == null) {
                     serviceId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -34875,15 +33514,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
                 if (serviceIdBuilder_ == null) {
-                    if (serviceId_ != null) {
-                        serviceId_ = context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && serviceId_ != null && serviceId_ != context.ContextOuterClass.ServiceId.getDefaultInstance()) {
+                        getServiceIdBuilder().mergeFrom(value);
                     } else {
                         serviceId_ = value;
                     }
-                    onChanged();
                 } else {
                     serviceIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -34891,13 +33531,13 @@ public final class ContextOuterClass {
              * .context.ServiceId service_id = 2;
              */
             public Builder clearServiceId() {
-                if (serviceIdBuilder_ == null) {
-                    serviceId_ = null;
-                    onChanged();
-                } else {
-                    serviceId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                serviceId_ = null;
+                if (serviceIdBuilder_ != null) {
+                    serviceIdBuilder_.dispose();
                     serviceIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -34905,6 +33545,7 @@ public final class ContextOuterClass {
              * .context.ServiceId service_id = 2;
              */
             public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getServiceIdFieldBuilder().getBuilder();
             }
@@ -34958,7 +33599,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ServiceEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ServiceEvent(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -35041,70 +33692,6 @@ public final class ContextOuterClass {
             return new SliceId();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private SliceId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.ContextId.Builder subBuilder = null;
-                                if (contextId_ != null) {
-                                    subBuilder = contextId_.toBuilder();
-                                }
-                                contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(contextId_);
-                                    contextId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
-                                if (sliceUuid_ != null) {
-                                    subBuilder = sliceUuid_.toBuilder();
-                                }
-                                sliceUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(sliceUuid_);
-                                    sliceUuid_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceId_descriptor;
         }
@@ -35141,7 +33728,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-            return getContextId();
+            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
         }
 
         public static final int SLICE_UUID_FIELD_NUMBER = 2;
@@ -35171,7 +33758,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getSliceUuidOrBuilder() {
-            return getSliceUuid();
+            return sliceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : sliceUuid_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -35195,7 +33782,7 @@ public final class ContextOuterClass {
             if (sliceUuid_ != null) {
                 output.writeMessage(2, getSliceUuid());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -35210,7 +33797,7 @@ public final class ContextOuterClass {
             if (sliceUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getSliceUuid());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -35236,7 +33823,7 @@ public final class ContextOuterClass {
                 if (!getSliceUuid().equals(other.getSliceUuid()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -35256,7 +33843,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SLICE_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getSliceUuid().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -35354,32 +33941,24 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceId.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (contextIdBuilder_ == null) {
-                    contextId_ = null;
-                } else {
-                    contextId_ = null;
+                bitField0_ = 0;
+                contextId_ = null;
+                if (contextIdBuilder_ != null) {
+                    contextIdBuilder_.dispose();
                     contextIdBuilder_ = null;
                 }
-                if (sliceUuidBuilder_ == null) {
-                    sliceUuid_ = null;
-                } else {
-                    sliceUuid_ = null;
+                sliceUuid_ = null;
+                if (sliceUuidBuilder_ != null) {
+                    sliceUuidBuilder_.dispose();
                     sliceUuidBuilder_ = null;
                 }
                 return this;
@@ -35407,48 +33986,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceId buildPartial() {
                 context.ContextOuterClass.SliceId result = new context.ContextOuterClass.SliceId(this);
-                if (contextIdBuilder_ == null) {
-                    result.contextId_ = contextId_;
-                } else {
-                    result.contextId_ = contextIdBuilder_.build();
-                }
-                if (sliceUuidBuilder_ == null) {
-                    result.sliceUuid_ = sliceUuid_;
-                } else {
-                    result.sliceUuid_ = sliceUuidBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.SliceId result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.sliceUuid_ = sliceUuidBuilder_ == null ? sliceUuid_ : sliceUuidBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -35470,7 +34022,7 @@ public final class ContextOuterClass {
                 if (other.hasSliceUuid()) {
                     mergeSliceUuid(other.getSliceUuid());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -35482,20 +34034,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.SliceId parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getSliceUuidFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.SliceId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.ContextId contextId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 contextIdBuilder_;
@@ -35505,7 +34091,7 @@ public final class ContextOuterClass {
              * @return Whether the contextId field is set.
              */
             public boolean hasContextId() {
-                return contextIdBuilder_ != null || contextId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -35529,10 +34115,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     contextId_ = value;
-                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -35542,10 +34129,11 @@ public final class ContextOuterClass {
             public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
                 if (contextIdBuilder_ == null) {
                     contextId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -35554,15 +34142,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
                 if (contextIdBuilder_ == null) {
-                    if (contextId_ != null) {
-                        contextId_ = context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
+                        getContextIdBuilder().mergeFrom(value);
                     } else {
                         contextId_ = value;
                     }
-                    onChanged();
                 } else {
                     contextIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -35570,13 +34159,13 @@ public final class ContextOuterClass {
              * .context.ContextId context_id = 1;
              */
             public Builder clearContextId() {
-                if (contextIdBuilder_ == null) {
-                    contextId_ = null;
-                    onChanged();
-                } else {
-                    contextId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                contextId_ = null;
+                if (contextIdBuilder_ != null) {
+                    contextIdBuilder_.dispose();
                     contextIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -35584,6 +34173,7 @@ public final class ContextOuterClass {
              * .context.ContextId context_id = 1;
              */
             public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getContextIdFieldBuilder().getBuilder();
             }
@@ -35619,7 +34209,7 @@ public final class ContextOuterClass {
              * @return Whether the sliceUuid field is set.
              */
             public boolean hasSliceUuid() {
-                return sliceUuidBuilder_ != null || sliceUuid_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -35643,10 +34233,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     sliceUuid_ = value;
-                    onChanged();
                 } else {
                     sliceUuidBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -35656,10 +34247,11 @@ public final class ContextOuterClass {
             public Builder setSliceUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (sliceUuidBuilder_ == null) {
                     sliceUuid_ = builderForValue.build();
-                    onChanged();
                 } else {
                     sliceUuidBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -35668,15 +34260,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeSliceUuid(context.ContextOuterClass.Uuid value) {
                 if (sliceUuidBuilder_ == null) {
-                    if (sliceUuid_ != null) {
-                        sliceUuid_ = context.ContextOuterClass.Uuid.newBuilder(sliceUuid_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && sliceUuid_ != null && sliceUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getSliceUuidBuilder().mergeFrom(value);
                     } else {
                         sliceUuid_ = value;
                     }
-                    onChanged();
                 } else {
                     sliceUuidBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -35684,13 +34277,13 @@ public final class ContextOuterClass {
              * .context.Uuid slice_uuid = 2;
              */
             public Builder clearSliceUuid() {
-                if (sliceUuidBuilder_ == null) {
-                    sliceUuid_ = null;
-                    onChanged();
-                } else {
-                    sliceUuid_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                sliceUuid_ = null;
+                if (sliceUuidBuilder_ != null) {
+                    sliceUuidBuilder_.dispose();
                     sliceUuidBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -35698,6 +34291,7 @@ public final class ContextOuterClass {
              * .context.Uuid slice_uuid = 2;
              */
             public context.ContextOuterClass.Uuid.Builder getSliceUuidBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getSliceUuidFieldBuilder().getBuilder();
             }
@@ -35751,7 +34345,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new SliceId(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -35998,164 +34602,6 @@ public final class ContextOuterClass {
             return new Slice();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Slice(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.SliceId.Builder subBuilder = null;
-                                if (sliceId_ != null) {
-                                    subBuilder = sliceId_.toBuilder();
-                                }
-                                sliceId_ = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(sliceId_);
-                                    sliceId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                name_ = s;
-                                break;
-                            }
-                        case 26:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    sliceEndpointIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                sliceEndpointIds_.add(input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
-                                break;
-                            }
-                        case 34:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
-                                    sliceConstraints_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000002;
-                                }
-                                sliceConstraints_.add(input.readMessage(context.ContextOuterClass.Constraint.parser(), extensionRegistry));
-                                break;
-                            }
-                        case 42:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000004) != 0)) {
-                                    sliceServiceIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000004;
-                                }
-                                sliceServiceIds_.add(input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry));
-                                break;
-                            }
-                        case 50:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000008) != 0)) {
-                                    sliceSubsliceIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000008;
-                                }
-                                sliceSubsliceIds_.add(input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry));
-                                break;
-                            }
-                        case 58:
-                            {
-                                context.ContextOuterClass.SliceStatus.Builder subBuilder = null;
-                                if (sliceStatus_ != null) {
-                                    subBuilder = sliceStatus_.toBuilder();
-                                }
-                                sliceStatus_ = input.readMessage(context.ContextOuterClass.SliceStatus.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(sliceStatus_);
-                                    sliceStatus_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 66:
-                            {
-                                context.ContextOuterClass.SliceConfig.Builder subBuilder = null;
-                                if (sliceConfig_ != null) {
-                                    subBuilder = sliceConfig_.toBuilder();
-                                }
-                                sliceConfig_ = input.readMessage(context.ContextOuterClass.SliceConfig.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(sliceConfig_);
-                                    sliceConfig_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 74:
-                            {
-                                context.ContextOuterClass.SliceOwner.Builder subBuilder = null;
-                                if (sliceOwner_ != null) {
-                                    subBuilder = sliceOwner_.toBuilder();
-                                }
-                                sliceOwner_ = input.readMessage(context.ContextOuterClass.SliceOwner.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(sliceOwner_);
-                                    sliceOwner_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 82:
-                            {
-                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-                                if (timestamp_ != null) {
-                                    subBuilder = timestamp_.toBuilder();
-                                }
-                                timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(timestamp_);
-                                    timestamp_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    sliceEndpointIds_ = java.util.Collections.unmodifiableList(sliceEndpointIds_);
-                }
-                if (((mutable_bitField0_ & 0x00000002) != 0)) {
-                    sliceConstraints_ = java.util.Collections.unmodifiableList(sliceConstraints_);
-                }
-                if (((mutable_bitField0_ & 0x00000004) != 0)) {
-                    sliceServiceIds_ = java.util.Collections.unmodifiableList(sliceServiceIds_);
-                }
-                if (((mutable_bitField0_ & 0x00000008) != 0)) {
-                    sliceSubsliceIds_ = java.util.Collections.unmodifiableList(sliceSubsliceIds_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Slice_descriptor;
         }
@@ -36192,12 +34638,13 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
-            return getSliceId();
+            return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
         }
 
         public static final int NAME_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object name_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object name_ = "";
 
         /**
          * string name = 2;
@@ -36234,6 +34681,7 @@ public final class ContextOuterClass {
 
         public static final int SLICE_ENDPOINT_IDS_FIELD_NUMBER = 3;
 
+        @SuppressWarnings("serial")
         private java.util.List sliceEndpointIds_;
 
         /**
@@ -36278,6 +34726,7 @@ public final class ContextOuterClass {
 
         public static final int SLICE_CONSTRAINTS_FIELD_NUMBER = 4;
 
+        @SuppressWarnings("serial")
         private java.util.List sliceConstraints_;
 
         /**
@@ -36322,6 +34771,7 @@ public final class ContextOuterClass {
 
         public static final int SLICE_SERVICE_IDS_FIELD_NUMBER = 5;
 
+        @SuppressWarnings("serial")
         private java.util.List sliceServiceIds_;
 
         /**
@@ -36366,6 +34816,7 @@ public final class ContextOuterClass {
 
         public static final int SLICE_SUBSLICE_IDS_FIELD_NUMBER = 6;
 
+        @SuppressWarnings("serial")
         private java.util.List sliceSubsliceIds_;
 
         /**
@@ -36435,7 +34886,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceStatusOrBuilder getSliceStatusOrBuilder() {
-            return getSliceStatus();
+            return sliceStatus_ == null ? context.ContextOuterClass.SliceStatus.getDefaultInstance() : sliceStatus_;
         }
 
         public static final int SLICE_CONFIG_FIELD_NUMBER = 8;
@@ -36465,7 +34916,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceConfigOrBuilder getSliceConfigOrBuilder() {
-            return getSliceConfig();
+            return sliceConfig_ == null ? context.ContextOuterClass.SliceConfig.getDefaultInstance() : sliceConfig_;
         }
 
         public static final int SLICE_OWNER_FIELD_NUMBER = 9;
@@ -36495,7 +34946,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceOwnerOrBuilder getSliceOwnerOrBuilder() {
-            return getSliceOwner();
+            return sliceOwner_ == null ? context.ContextOuterClass.SliceOwner.getDefaultInstance() : sliceOwner_;
         }
 
         public static final int TIMESTAMP_FIELD_NUMBER = 10;
@@ -36525,7 +34976,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-            return getTimestamp();
+            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -36546,7 +34997,7 @@ public final class ContextOuterClass {
             if (sliceId_ != null) {
                 output.writeMessage(1, getSliceId());
             }
-            if (!getNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
             }
             for (int i = 0; i < sliceEndpointIds_.size(); i++) {
@@ -36573,7 +35024,7 @@ public final class ContextOuterClass {
             if (timestamp_ != null) {
                 output.writeMessage(10, getTimestamp());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -36585,7 +35036,7 @@ public final class ContextOuterClass {
             if (sliceId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getSliceId());
             }
-            if (!getNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
             }
             for (int i = 0; i < sliceEndpointIds_.size(); i++) {
@@ -36612,7 +35063,7 @@ public final class ContextOuterClass {
             if (timestamp_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(10, getTimestamp());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -36666,7 +35117,7 @@ public final class ContextOuterClass {
                 if (!getTimestamp().equals(other.getTimestamp()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -36716,7 +35167,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
                 hash = (53 * hash) + getTimestamp().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -36810,79 +35261,68 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Slice.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getSliceEndpointIdsFieldBuilder();
-                    getSliceConstraintsFieldBuilder();
-                    getSliceServiceIdsFieldBuilder();
-                    getSliceSubsliceIdsFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (sliceIdBuilder_ == null) {
-                    sliceId_ = null;
-                } else {
-                    sliceId_ = null;
+                bitField0_ = 0;
+                sliceId_ = null;
+                if (sliceIdBuilder_ != null) {
+                    sliceIdBuilder_.dispose();
                     sliceIdBuilder_ = null;
                 }
                 name_ = "";
                 if (sliceEndpointIdsBuilder_ == null) {
                     sliceEndpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    sliceEndpointIds_ = null;
                     sliceEndpointIdsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000004);
                 if (sliceConstraintsBuilder_ == null) {
                     sliceConstraints_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000002);
                 } else {
+                    sliceConstraints_ = null;
                     sliceConstraintsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000008);
                 if (sliceServiceIdsBuilder_ == null) {
                     sliceServiceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000004);
                 } else {
+                    sliceServiceIds_ = null;
                     sliceServiceIdsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000010);
                 if (sliceSubsliceIdsBuilder_ == null) {
                     sliceSubsliceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000008);
                 } else {
+                    sliceSubsliceIds_ = null;
                     sliceSubsliceIdsBuilder_.clear();
                 }
-                if (sliceStatusBuilder_ == null) {
-                    sliceStatus_ = null;
-                } else {
-                    sliceStatus_ = null;
+                bitField0_ = (bitField0_ & ~0x00000020);
+                sliceStatus_ = null;
+                if (sliceStatusBuilder_ != null) {
+                    sliceStatusBuilder_.dispose();
                     sliceStatusBuilder_ = null;
                 }
-                if (sliceConfigBuilder_ == null) {
-                    sliceConfig_ = null;
-                } else {
-                    sliceConfig_ = null;
+                sliceConfig_ = null;
+                if (sliceConfigBuilder_ != null) {
+                    sliceConfigBuilder_.dispose();
                     sliceConfigBuilder_ = null;
                 }
-                if (sliceOwnerBuilder_ == null) {
-                    sliceOwner_ = null;
-                } else {
-                    sliceOwner_ = null;
+                sliceOwner_ = null;
+                if (sliceOwnerBuilder_ != null) {
+                    sliceOwnerBuilder_.dispose();
                     sliceOwnerBuilder_ = null;
                 }
-                if (timestampBuilder_ == null) {
-                    timestamp_ = null;
-                } else {
-                    timestamp_ = null;
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
                     timestampBuilder_ = null;
                 }
                 return this;
@@ -36910,101 +35350,73 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Slice buildPartial() {
                 context.ContextOuterClass.Slice result = new context.ContextOuterClass.Slice(this);
-                int from_bitField0_ = bitField0_;
-                if (sliceIdBuilder_ == null) {
-                    result.sliceId_ = sliceId_;
-                } else {
-                    result.sliceId_ = sliceIdBuilder_.build();
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.name_ = name_;
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.Slice result) {
                 if (sliceEndpointIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0)) {
+                    if (((bitField0_ & 0x00000004) != 0)) {
                         sliceEndpointIds_ = java.util.Collections.unmodifiableList(sliceEndpointIds_);
-                        bitField0_ = (bitField0_ & ~0x00000001);
+                        bitField0_ = (bitField0_ & ~0x00000004);
                     }
                     result.sliceEndpointIds_ = sliceEndpointIds_;
                 } else {
                     result.sliceEndpointIds_ = sliceEndpointIdsBuilder_.build();
                 }
                 if (sliceConstraintsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0)) {
+                    if (((bitField0_ & 0x00000008) != 0)) {
                         sliceConstraints_ = java.util.Collections.unmodifiableList(sliceConstraints_);
-                        bitField0_ = (bitField0_ & ~0x00000002);
+                        bitField0_ = (bitField0_ & ~0x00000008);
                     }
                     result.sliceConstraints_ = sliceConstraints_;
                 } else {
                     result.sliceConstraints_ = sliceConstraintsBuilder_.build();
                 }
                 if (sliceServiceIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0)) {
+                    if (((bitField0_ & 0x00000010) != 0)) {
                         sliceServiceIds_ = java.util.Collections.unmodifiableList(sliceServiceIds_);
-                        bitField0_ = (bitField0_ & ~0x00000004);
+                        bitField0_ = (bitField0_ & ~0x00000010);
                     }
                     result.sliceServiceIds_ = sliceServiceIds_;
                 } else {
                     result.sliceServiceIds_ = sliceServiceIdsBuilder_.build();
                 }
                 if (sliceSubsliceIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000008) != 0)) {
+                    if (((bitField0_ & 0x00000020) != 0)) {
                         sliceSubsliceIds_ = java.util.Collections.unmodifiableList(sliceSubsliceIds_);
-                        bitField0_ = (bitField0_ & ~0x00000008);
+                        bitField0_ = (bitField0_ & ~0x00000020);
                     }
                     result.sliceSubsliceIds_ = sliceSubsliceIds_;
                 } else {
                     result.sliceSubsliceIds_ = sliceSubsliceIdsBuilder_.build();
                 }
-                if (sliceStatusBuilder_ == null) {
-                    result.sliceStatus_ = sliceStatus_;
-                } else {
-                    result.sliceStatus_ = sliceStatusBuilder_.build();
+            }
+
+            private void buildPartial0(context.ContextOuterClass.Slice result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.sliceId_ = sliceIdBuilder_ == null ? sliceId_ : sliceIdBuilder_.build();
                 }
-                if (sliceConfigBuilder_ == null) {
-                    result.sliceConfig_ = sliceConfig_;
-                } else {
-                    result.sliceConfig_ = sliceConfigBuilder_.build();
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.name_ = name_;
                 }
-                if (sliceOwnerBuilder_ == null) {
-                    result.sliceOwner_ = sliceOwner_;
-                } else {
-                    result.sliceOwner_ = sliceOwnerBuilder_.build();
+                if (((from_bitField0_ & 0x00000040) != 0)) {
+                    result.sliceStatus_ = sliceStatusBuilder_ == null ? sliceStatus_ : sliceStatusBuilder_.build();
                 }
-                if (timestampBuilder_ == null) {
-                    result.timestamp_ = timestamp_;
-                } else {
-                    result.timestamp_ = timestampBuilder_.build();
+                if (((from_bitField0_ & 0x00000080) != 0)) {
+                    result.sliceConfig_ = sliceConfigBuilder_ == null ? sliceConfig_ : sliceConfigBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000100) != 0)) {
+                    result.sliceOwner_ = sliceOwnerBuilder_ == null ? sliceOwner_ : sliceOwnerBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000200) != 0)) {
+                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -37025,13 +35437,14 @@ public final class ContextOuterClass {
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (sliceEndpointIdsBuilder_ == null) {
                     if (!other.sliceEndpointIds_.isEmpty()) {
                         if (sliceEndpointIds_.isEmpty()) {
                             sliceEndpointIds_ = other.sliceEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                         } else {
                             ensureSliceEndpointIdsIsMutable();
                             sliceEndpointIds_.addAll(other.sliceEndpointIds_);
@@ -37044,7 +35457,7 @@ public final class ContextOuterClass {
                             sliceEndpointIdsBuilder_.dispose();
                             sliceEndpointIdsBuilder_ = null;
                             sliceEndpointIds_ = other.sliceEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                             sliceEndpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceEndpointIdsFieldBuilder() : null;
                         } else {
                             sliceEndpointIdsBuilder_.addAllMessages(other.sliceEndpointIds_);
@@ -37055,7 +35468,7 @@ public final class ContextOuterClass {
                     if (!other.sliceConstraints_.isEmpty()) {
                         if (sliceConstraints_.isEmpty()) {
                             sliceConstraints_ = other.sliceConstraints_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000008);
                         } else {
                             ensureSliceConstraintsIsMutable();
                             sliceConstraints_.addAll(other.sliceConstraints_);
@@ -37068,7 +35481,7 @@ public final class ContextOuterClass {
                             sliceConstraintsBuilder_.dispose();
                             sliceConstraintsBuilder_ = null;
                             sliceConstraints_ = other.sliceConstraints_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000008);
                             sliceConstraintsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceConstraintsFieldBuilder() : null;
                         } else {
                             sliceConstraintsBuilder_.addAllMessages(other.sliceConstraints_);
@@ -37079,7 +35492,7 @@ public final class ContextOuterClass {
                     if (!other.sliceServiceIds_.isEmpty()) {
                         if (sliceServiceIds_.isEmpty()) {
                             sliceServiceIds_ = other.sliceServiceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000010);
                         } else {
                             ensureSliceServiceIdsIsMutable();
                             sliceServiceIds_.addAll(other.sliceServiceIds_);
@@ -37092,7 +35505,7 @@ public final class ContextOuterClass {
                             sliceServiceIdsBuilder_.dispose();
                             sliceServiceIdsBuilder_ = null;
                             sliceServiceIds_ = other.sliceServiceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000010);
                             sliceServiceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceServiceIdsFieldBuilder() : null;
                         } else {
                             sliceServiceIdsBuilder_.addAllMessages(other.sliceServiceIds_);
@@ -37103,7 +35516,7 @@ public final class ContextOuterClass {
                     if (!other.sliceSubsliceIds_.isEmpty()) {
                         if (sliceSubsliceIds_.isEmpty()) {
                             sliceSubsliceIds_ = other.sliceSubsliceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000020);
                         } else {
                             ensureSliceSubsliceIdsIsMutable();
                             sliceSubsliceIds_.addAll(other.sliceSubsliceIds_);
@@ -37116,7 +35529,7 @@ public final class ContextOuterClass {
                             sliceSubsliceIdsBuilder_.dispose();
                             sliceSubsliceIdsBuilder_ = null;
                             sliceSubsliceIds_ = other.sliceSubsliceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000020);
                             sliceSubsliceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceSubsliceIdsFieldBuilder() : null;
                         } else {
                             sliceSubsliceIdsBuilder_.addAllMessages(other.sliceSubsliceIds_);
@@ -37135,7 +35548,7 @@ public final class ContextOuterClass {
                 if (other.hasTimestamp()) {
                     mergeTimestamp(other.getTimestamp());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -37147,17 +35560,125 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Slice parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getSliceIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    name_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                    if (sliceEndpointIdsBuilder_ == null) {
+                                        ensureSliceEndpointIdsIsMutable();
+                                        sliceEndpointIds_.add(m);
+                                    } else {
+                                        sliceEndpointIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    context.ContextOuterClass.Constraint m = input.readMessage(context.ContextOuterClass.Constraint.parser(), extensionRegistry);
+                                    if (sliceConstraintsBuilder_ == null) {
+                                        ensureSliceConstraintsIsMutable();
+                                        sliceConstraints_.add(m);
+                                    } else {
+                                        sliceConstraintsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 34
+                            case 42:
+                                {
+                                    context.ContextOuterClass.ServiceId m = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
+                                    if (sliceServiceIdsBuilder_ == null) {
+                                        ensureSliceServiceIdsIsMutable();
+                                        sliceServiceIds_.add(m);
+                                    } else {
+                                        sliceServiceIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 42
+                            case 50:
+                                {
+                                    context.ContextOuterClass.SliceId m = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
+                                    if (sliceSubsliceIdsBuilder_ == null) {
+                                        ensureSliceSubsliceIdsIsMutable();
+                                        sliceSubsliceIds_.add(m);
+                                    } else {
+                                        sliceSubsliceIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 50
+                            case 58:
+                                {
+                                    input.readMessage(getSliceStatusFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000040;
+                                    break;
+                                }
+                            // case 58
+                            case 66:
+                                {
+                                    input.readMessage(getSliceConfigFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000080;
+                                    break;
+                                }
+                            // case 66
+                            case 74:
+                                {
+                                    input.readMessage(getSliceOwnerFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000100;
+                                    break;
+                                }
+                            // case 74
+                            case 82:
+                                {
+                                    input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000200;
+                                    break;
+                                }
+                            // case 82
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Slice) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -37172,7 +35693,7 @@ public final class ContextOuterClass {
              * @return Whether the sliceId field is set.
              */
             public boolean hasSliceId() {
-                return sliceIdBuilder_ != null || sliceId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -37196,10 +35717,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     sliceId_ = value;
-                    onChanged();
                 } else {
                     sliceIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -37209,10 +35731,11 @@ public final class ContextOuterClass {
             public Builder setSliceId(context.ContextOuterClass.SliceId.Builder builderForValue) {
                 if (sliceIdBuilder_ == null) {
                     sliceId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     sliceIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -37221,15 +35744,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeSliceId(context.ContextOuterClass.SliceId value) {
                 if (sliceIdBuilder_ == null) {
-                    if (sliceId_ != null) {
-                        sliceId_ = context.ContextOuterClass.SliceId.newBuilder(sliceId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && sliceId_ != null && sliceId_ != context.ContextOuterClass.SliceId.getDefaultInstance()) {
+                        getSliceIdBuilder().mergeFrom(value);
                     } else {
                         sliceId_ = value;
                     }
-                    onChanged();
                 } else {
                     sliceIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -37237,13 +35761,13 @@ public final class ContextOuterClass {
              * .context.SliceId slice_id = 1;
              */
             public Builder clearSliceId() {
-                if (sliceIdBuilder_ == null) {
-                    sliceId_ = null;
-                    onChanged();
-                } else {
-                    sliceId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                sliceId_ = null;
+                if (sliceIdBuilder_ != null) {
+                    sliceIdBuilder_.dispose();
                     sliceIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -37251,6 +35775,7 @@ public final class ContextOuterClass {
              * .context.SliceId slice_id = 1;
              */
             public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getSliceIdFieldBuilder().getBuilder();
             }
@@ -37320,6 +35845,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 name_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -37330,6 +35856,7 @@ public final class ContextOuterClass {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -37345,6 +35872,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -37352,9 +35880,9 @@ public final class ContextOuterClass {
             private java.util.List sliceEndpointIds_ = java.util.Collections.emptyList();
 
             private void ensureSliceEndpointIdsIsMutable() {
-                if (!((bitField0_ & 0x00000001) != 0)) {
+                if (!((bitField0_ & 0x00000004) != 0)) {
                     sliceEndpointIds_ = new java.util.ArrayList(sliceEndpointIds_);
-                    bitField0_ |= 0x00000001;
+                    bitField0_ |= 0x00000004;
                 }
             }
 
@@ -37506,7 +36034,7 @@ public final class ContextOuterClass {
             public Builder clearSliceEndpointIds() {
                 if (sliceEndpointIdsBuilder_ == null) {
                     sliceEndpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
+                    bitField0_ = (bitField0_ & ~0x00000004);
                     onChanged();
                 } else {
                     sliceEndpointIdsBuilder_.clear();
@@ -37580,7 +36108,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getSliceEndpointIdsFieldBuilder() {
                 if (sliceEndpointIdsBuilder_ == null) {
-                    sliceEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(sliceEndpointIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    sliceEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(sliceEndpointIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
                     sliceEndpointIds_ = null;
                 }
                 return sliceEndpointIdsBuilder_;
@@ -37589,9 +36117,9 @@ public final class ContextOuterClass {
             private java.util.List sliceConstraints_ = java.util.Collections.emptyList();
 
             private void ensureSliceConstraintsIsMutable() {
-                if (!((bitField0_ & 0x00000002) != 0)) {
+                if (!((bitField0_ & 0x00000008) != 0)) {
                     sliceConstraints_ = new java.util.ArrayList(sliceConstraints_);
-                    bitField0_ |= 0x00000002;
+                    bitField0_ |= 0x00000008;
                 }
             }
 
@@ -37743,7 +36271,7 @@ public final class ContextOuterClass {
             public Builder clearSliceConstraints() {
                 if (sliceConstraintsBuilder_ == null) {
                     sliceConstraints_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000002);
+                    bitField0_ = (bitField0_ & ~0x00000008);
                     onChanged();
                 } else {
                     sliceConstraintsBuilder_.clear();
@@ -37817,7 +36345,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getSliceConstraintsFieldBuilder() {
                 if (sliceConstraintsBuilder_ == null) {
-                    sliceConstraintsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(sliceConstraints_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
+                    sliceConstraintsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(sliceConstraints_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
                     sliceConstraints_ = null;
                 }
                 return sliceConstraintsBuilder_;
@@ -37826,9 +36354,9 @@ public final class ContextOuterClass {
             private java.util.List sliceServiceIds_ = java.util.Collections.emptyList();
 
             private void ensureSliceServiceIdsIsMutable() {
-                if (!((bitField0_ & 0x00000004) != 0)) {
+                if (!((bitField0_ & 0x00000010) != 0)) {
                     sliceServiceIds_ = new java.util.ArrayList(sliceServiceIds_);
-                    bitField0_ |= 0x00000004;
+                    bitField0_ |= 0x00000010;
                 }
             }
 
@@ -37980,7 +36508,7 @@ public final class ContextOuterClass {
             public Builder clearSliceServiceIds() {
                 if (sliceServiceIdsBuilder_ == null) {
                     sliceServiceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000004);
+                    bitField0_ = (bitField0_ & ~0x00000010);
                     onChanged();
                 } else {
                     sliceServiceIdsBuilder_.clear();
@@ -38054,7 +36582,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getSliceServiceIdsFieldBuilder() {
                 if (sliceServiceIdsBuilder_ == null) {
-                    sliceServiceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(sliceServiceIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
+                    sliceServiceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(sliceServiceIds_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean());
                     sliceServiceIds_ = null;
                 }
                 return sliceServiceIdsBuilder_;
@@ -38063,9 +36591,9 @@ public final class ContextOuterClass {
             private java.util.List sliceSubsliceIds_ = java.util.Collections.emptyList();
 
             private void ensureSliceSubsliceIdsIsMutable() {
-                if (!((bitField0_ & 0x00000008) != 0)) {
+                if (!((bitField0_ & 0x00000020) != 0)) {
                     sliceSubsliceIds_ = new java.util.ArrayList(sliceSubsliceIds_);
-                    bitField0_ |= 0x00000008;
+                    bitField0_ |= 0x00000020;
                 }
             }
 
@@ -38217,7 +36745,7 @@ public final class ContextOuterClass {
             public Builder clearSliceSubsliceIds() {
                 if (sliceSubsliceIdsBuilder_ == null) {
                     sliceSubsliceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000008);
+                    bitField0_ = (bitField0_ & ~0x00000020);
                     onChanged();
                 } else {
                     sliceSubsliceIdsBuilder_.clear();
@@ -38291,7 +36819,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getSliceSubsliceIdsFieldBuilder() {
                 if (sliceSubsliceIdsBuilder_ == null) {
-                    sliceSubsliceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(sliceSubsliceIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
+                    sliceSubsliceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(sliceSubsliceIds_, ((bitField0_ & 0x00000020) != 0), getParentForChildren(), isClean());
                     sliceSubsliceIds_ = null;
                 }
                 return sliceSubsliceIdsBuilder_;
@@ -38306,7 +36834,7 @@ public final class ContextOuterClass {
              * @return Whether the sliceStatus field is set.
              */
             public boolean hasSliceStatus() {
-                return sliceStatusBuilder_ != null || sliceStatus_ != null;
+                return ((bitField0_ & 0x00000040) != 0);
             }
 
             /**
@@ -38330,10 +36858,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     sliceStatus_ = value;
-                    onChanged();
                 } else {
                     sliceStatusBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000040;
+                onChanged();
                 return this;
             }
 
@@ -38343,10 +36872,11 @@ public final class ContextOuterClass {
             public Builder setSliceStatus(context.ContextOuterClass.SliceStatus.Builder builderForValue) {
                 if (sliceStatusBuilder_ == null) {
                     sliceStatus_ = builderForValue.build();
-                    onChanged();
                 } else {
                     sliceStatusBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000040;
+                onChanged();
                 return this;
             }
 
@@ -38355,15 +36885,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeSliceStatus(context.ContextOuterClass.SliceStatus value) {
                 if (sliceStatusBuilder_ == null) {
-                    if (sliceStatus_ != null) {
-                        sliceStatus_ = context.ContextOuterClass.SliceStatus.newBuilder(sliceStatus_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000040) != 0) && sliceStatus_ != null && sliceStatus_ != context.ContextOuterClass.SliceStatus.getDefaultInstance()) {
+                        getSliceStatusBuilder().mergeFrom(value);
                     } else {
                         sliceStatus_ = value;
                     }
-                    onChanged();
                 } else {
                     sliceStatusBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000040;
+                onChanged();
                 return this;
             }
 
@@ -38371,13 +36902,13 @@ public final class ContextOuterClass {
              * .context.SliceStatus slice_status = 7;
              */
             public Builder clearSliceStatus() {
-                if (sliceStatusBuilder_ == null) {
-                    sliceStatus_ = null;
-                    onChanged();
-                } else {
-                    sliceStatus_ = null;
+                bitField0_ = (bitField0_ & ~0x00000040);
+                sliceStatus_ = null;
+                if (sliceStatusBuilder_ != null) {
+                    sliceStatusBuilder_.dispose();
                     sliceStatusBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -38385,6 +36916,7 @@ public final class ContextOuterClass {
              * .context.SliceStatus slice_status = 7;
              */
             public context.ContextOuterClass.SliceStatus.Builder getSliceStatusBuilder() {
+                bitField0_ |= 0x00000040;
                 onChanged();
                 return getSliceStatusFieldBuilder().getBuilder();
             }
@@ -38420,7 +36952,7 @@ public final class ContextOuterClass {
              * @return Whether the sliceConfig field is set.
              */
             public boolean hasSliceConfig() {
-                return sliceConfigBuilder_ != null || sliceConfig_ != null;
+                return ((bitField0_ & 0x00000080) != 0);
             }
 
             /**
@@ -38444,10 +36976,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     sliceConfig_ = value;
-                    onChanged();
                 } else {
                     sliceConfigBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000080;
+                onChanged();
                 return this;
             }
 
@@ -38457,10 +36990,11 @@ public final class ContextOuterClass {
             public Builder setSliceConfig(context.ContextOuterClass.SliceConfig.Builder builderForValue) {
                 if (sliceConfigBuilder_ == null) {
                     sliceConfig_ = builderForValue.build();
-                    onChanged();
                 } else {
                     sliceConfigBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000080;
+                onChanged();
                 return this;
             }
 
@@ -38469,15 +37003,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeSliceConfig(context.ContextOuterClass.SliceConfig value) {
                 if (sliceConfigBuilder_ == null) {
-                    if (sliceConfig_ != null) {
-                        sliceConfig_ = context.ContextOuterClass.SliceConfig.newBuilder(sliceConfig_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000080) != 0) && sliceConfig_ != null && sliceConfig_ != context.ContextOuterClass.SliceConfig.getDefaultInstance()) {
+                        getSliceConfigBuilder().mergeFrom(value);
                     } else {
                         sliceConfig_ = value;
                     }
-                    onChanged();
                 } else {
                     sliceConfigBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000080;
+                onChanged();
                 return this;
             }
 
@@ -38485,13 +37020,13 @@ public final class ContextOuterClass {
              * .context.SliceConfig slice_config = 8;
              */
             public Builder clearSliceConfig() {
-                if (sliceConfigBuilder_ == null) {
-                    sliceConfig_ = null;
-                    onChanged();
-                } else {
-                    sliceConfig_ = null;
+                bitField0_ = (bitField0_ & ~0x00000080);
+                sliceConfig_ = null;
+                if (sliceConfigBuilder_ != null) {
+                    sliceConfigBuilder_.dispose();
                     sliceConfigBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -38499,6 +37034,7 @@ public final class ContextOuterClass {
              * .context.SliceConfig slice_config = 8;
              */
             public context.ContextOuterClass.SliceConfig.Builder getSliceConfigBuilder() {
+                bitField0_ |= 0x00000080;
                 onChanged();
                 return getSliceConfigFieldBuilder().getBuilder();
             }
@@ -38534,7 +37070,7 @@ public final class ContextOuterClass {
              * @return Whether the sliceOwner field is set.
              */
             public boolean hasSliceOwner() {
-                return sliceOwnerBuilder_ != null || sliceOwner_ != null;
+                return ((bitField0_ & 0x00000100) != 0);
             }
 
             /**
@@ -38558,10 +37094,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     sliceOwner_ = value;
-                    onChanged();
                 } else {
                     sliceOwnerBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000100;
+                onChanged();
                 return this;
             }
 
@@ -38571,10 +37108,11 @@ public final class ContextOuterClass {
             public Builder setSliceOwner(context.ContextOuterClass.SliceOwner.Builder builderForValue) {
                 if (sliceOwnerBuilder_ == null) {
                     sliceOwner_ = builderForValue.build();
-                    onChanged();
                 } else {
                     sliceOwnerBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000100;
+                onChanged();
                 return this;
             }
 
@@ -38583,15 +37121,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeSliceOwner(context.ContextOuterClass.SliceOwner value) {
                 if (sliceOwnerBuilder_ == null) {
-                    if (sliceOwner_ != null) {
-                        sliceOwner_ = context.ContextOuterClass.SliceOwner.newBuilder(sliceOwner_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000100) != 0) && sliceOwner_ != null && sliceOwner_ != context.ContextOuterClass.SliceOwner.getDefaultInstance()) {
+                        getSliceOwnerBuilder().mergeFrom(value);
                     } else {
                         sliceOwner_ = value;
                     }
-                    onChanged();
                 } else {
                     sliceOwnerBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000100;
+                onChanged();
                 return this;
             }
 
@@ -38599,13 +37138,13 @@ public final class ContextOuterClass {
              * .context.SliceOwner slice_owner = 9;
              */
             public Builder clearSliceOwner() {
-                if (sliceOwnerBuilder_ == null) {
-                    sliceOwner_ = null;
-                    onChanged();
-                } else {
-                    sliceOwner_ = null;
+                bitField0_ = (bitField0_ & ~0x00000100);
+                sliceOwner_ = null;
+                if (sliceOwnerBuilder_ != null) {
+                    sliceOwnerBuilder_.dispose();
                     sliceOwnerBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -38613,6 +37152,7 @@ public final class ContextOuterClass {
              * .context.SliceOwner slice_owner = 9;
              */
             public context.ContextOuterClass.SliceOwner.Builder getSliceOwnerBuilder() {
+                bitField0_ |= 0x00000100;
                 onChanged();
                 return getSliceOwnerFieldBuilder().getBuilder();
             }
@@ -38648,7 +37188,7 @@ public final class ContextOuterClass {
              * @return Whether the timestamp field is set.
              */
             public boolean hasTimestamp() {
-                return timestampBuilder_ != null || timestamp_ != null;
+                return ((bitField0_ & 0x00000200) != 0);
             }
 
             /**
@@ -38672,10 +37212,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     timestamp_ = value;
-                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000200;
+                onChanged();
                 return this;
             }
 
@@ -38685,10 +37226,11 @@ public final class ContextOuterClass {
             public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (timestampBuilder_ == null) {
                     timestamp_ = builderForValue.build();
-                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000200;
+                onChanged();
                 return this;
             }
 
@@ -38697,15 +37239,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (timestampBuilder_ == null) {
-                    if (timestamp_ != null) {
-                        timestamp_ = context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000200) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
+                        getTimestampBuilder().mergeFrom(value);
                     } else {
                         timestamp_ = value;
                     }
-                    onChanged();
                 } else {
                     timestampBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000200;
+                onChanged();
                 return this;
             }
 
@@ -38713,13 +37256,13 @@ public final class ContextOuterClass {
              * .context.Timestamp timestamp = 10;
              */
             public Builder clearTimestamp() {
-                if (timestampBuilder_ == null) {
-                    timestamp_ = null;
-                    onChanged();
-                } else {
-                    timestamp_ = null;
+                bitField0_ = (bitField0_ & ~0x00000200);
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
                     timestampBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -38727,6 +37270,7 @@ public final class ContextOuterClass {
              * .context.Timestamp timestamp = 10;
              */
             public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
+                bitField0_ |= 0x00000200;
                 onChanged();
                 return getTimestampFieldBuilder().getBuilder();
             }
@@ -38780,7 +37324,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Slice parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Slice(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -38855,63 +37409,6 @@ public final class ContextOuterClass {
             return new SliceOwner();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private SliceOwner(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
-                                if (ownerUuid_ != null) {
-                                    subBuilder = ownerUuid_.toBuilder();
-                                }
-                                ownerUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(ownerUuid_);
-                                    ownerUuid_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                ownerString_ = s;
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceOwner_descriptor;
         }
@@ -38948,12 +37445,13 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getOwnerUuidOrBuilder() {
-            return getOwnerUuid();
+            return ownerUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : ownerUuid_;
         }
 
         public static final int OWNER_STRING_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object ownerString_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object ownerString_ = "";
 
         /**
          * string owner_string = 2;
@@ -39006,10 +37504,10 @@ public final class ContextOuterClass {
             if (ownerUuid_ != null) {
                 output.writeMessage(1, getOwnerUuid());
             }
-            if (!getOwnerStringBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ownerString_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, ownerString_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -39021,10 +37519,10 @@ public final class ContextOuterClass {
             if (ownerUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getOwnerUuid());
             }
-            if (!getOwnerStringBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ownerString_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, ownerString_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -39046,7 +37544,7 @@ public final class ContextOuterClass {
             }
             if (!getOwnerString().equals(other.getOwnerString()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -39064,7 +37562,7 @@ public final class ContextOuterClass {
             }
             hash = (37 * hash) + OWNER_STRING_FIELD_NUMBER;
             hash = (53 * hash) + getOwnerString().hashCode();
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -39158,26 +37656,19 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceOwner.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (ownerUuidBuilder_ == null) {
-                    ownerUuid_ = null;
-                } else {
-                    ownerUuid_ = null;
+                bitField0_ = 0;
+                ownerUuid_ = null;
+                if (ownerUuidBuilder_ != null) {
+                    ownerUuidBuilder_.dispose();
                     ownerUuidBuilder_ = null;
                 }
                 ownerString_ = "";
@@ -39206,44 +37697,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceOwner buildPartial() {
                 context.ContextOuterClass.SliceOwner result = new context.ContextOuterClass.SliceOwner(this);
-                if (ownerUuidBuilder_ == null) {
-                    result.ownerUuid_ = ownerUuid_;
-                } else {
-                    result.ownerUuid_ = ownerUuidBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.ownerString_ = ownerString_;
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.SliceOwner result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.ownerUuid_ = ownerUuidBuilder_ == null ? ownerUuid_ : ownerUuidBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.ownerString_ = ownerString_;
+                }
             }
 
             @java.lang.Override
@@ -39264,9 +37732,10 @@ public final class ContextOuterClass {
                 }
                 if (!other.getOwnerString().isEmpty()) {
                     ownerString_ = other.ownerString_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -39278,20 +37747,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.SliceOwner parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getOwnerUuidFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    ownerString_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.SliceOwner) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.Uuid ownerUuid_;
 
             private com.google.protobuf.SingleFieldBuilderV3 ownerUuidBuilder_;
@@ -39301,7 +37804,7 @@ public final class ContextOuterClass {
              * @return Whether the ownerUuid field is set.
              */
             public boolean hasOwnerUuid() {
-                return ownerUuidBuilder_ != null || ownerUuid_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -39325,10 +37828,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     ownerUuid_ = value;
-                    onChanged();
                 } else {
                     ownerUuidBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -39338,10 +37842,11 @@ public final class ContextOuterClass {
             public Builder setOwnerUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (ownerUuidBuilder_ == null) {
                     ownerUuid_ = builderForValue.build();
-                    onChanged();
                 } else {
                     ownerUuidBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -39350,15 +37855,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeOwnerUuid(context.ContextOuterClass.Uuid value) {
                 if (ownerUuidBuilder_ == null) {
-                    if (ownerUuid_ != null) {
-                        ownerUuid_ = context.ContextOuterClass.Uuid.newBuilder(ownerUuid_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && ownerUuid_ != null && ownerUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getOwnerUuidBuilder().mergeFrom(value);
                     } else {
                         ownerUuid_ = value;
                     }
-                    onChanged();
                 } else {
                     ownerUuidBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -39366,13 +37872,13 @@ public final class ContextOuterClass {
              * .context.Uuid owner_uuid = 1;
              */
             public Builder clearOwnerUuid() {
-                if (ownerUuidBuilder_ == null) {
-                    ownerUuid_ = null;
-                    onChanged();
-                } else {
-                    ownerUuid_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                ownerUuid_ = null;
+                if (ownerUuidBuilder_ != null) {
+                    ownerUuidBuilder_.dispose();
                     ownerUuidBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -39380,6 +37886,7 @@ public final class ContextOuterClass {
              * .context.Uuid owner_uuid = 1;
              */
             public context.ContextOuterClass.Uuid.Builder getOwnerUuidBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getOwnerUuidFieldBuilder().getBuilder();
             }
@@ -39449,6 +37956,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 ownerString_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -39459,6 +37967,7 @@ public final class ContextOuterClass {
              */
             public Builder clearOwnerString() {
                 ownerString_ = getDefaultInstance().getOwnerString();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -39474,6 +37983,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 ownerString_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -39505,7 +38015,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceOwner parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new SliceOwner(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -39563,50 +38083,6 @@ public final class ContextOuterClass {
             return new SliceStatus();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private SliceStatus(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 8:
-                            {
-                                int rawValue = input.readEnum();
-                                sliceStatus_ = rawValue;
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceStatus_descriptor;
         }
@@ -39618,7 +38094,7 @@ public final class ContextOuterClass {
 
         public static final int SLICE_STATUS_FIELD_NUMBER = 1;
 
-        private int sliceStatus_;
+        private int sliceStatus_ = 0;
 
         /**
          * .context.SliceStatusEnum slice_status = 1;
@@ -39635,8 +38111,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceStatusEnum getSliceStatus() {
-            @SuppressWarnings("deprecation")
-            context.ContextOuterClass.SliceStatusEnum result = context.ContextOuterClass.SliceStatusEnum.valueOf(sliceStatus_);
+            context.ContextOuterClass.SliceStatusEnum result = context.ContextOuterClass.SliceStatusEnum.forNumber(sliceStatus_);
             return result == null ? context.ContextOuterClass.SliceStatusEnum.UNRECOGNIZED : result;
         }
 
@@ -39658,7 +38133,7 @@ public final class ContextOuterClass {
             if (sliceStatus_ != context.ContextOuterClass.SliceStatusEnum.SLICESTATUS_UNDEFINED.getNumber()) {
                 output.writeEnum(1, sliceStatus_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -39670,7 +38145,7 @@ public final class ContextOuterClass {
             if (sliceStatus_ != context.ContextOuterClass.SliceStatusEnum.SLICESTATUS_UNDEFINED.getNumber()) {
                 size += com.google.protobuf.CodedOutputStream.computeEnumSize(1, sliceStatus_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -39686,7 +38161,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.SliceStatus other = (context.ContextOuterClass.SliceStatus) obj;
             if (sliceStatus_ != other.sliceStatus_)
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -39700,7 +38175,7 @@ public final class ContextOuterClass {
             hash = (19 * hash) + getDescriptor().hashCode();
             hash = (37 * hash) + SLICE_STATUS_FIELD_NUMBER;
             hash = (53 * hash) + sliceStatus_;
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -39794,22 +38269,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceStatus.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 sliceStatus_ = 0;
                 return this;
             }
@@ -39836,39 +38305,18 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceStatus buildPartial() {
                 context.ContextOuterClass.SliceStatus result = new context.ContextOuterClass.SliceStatus(this);
-                result.sliceStatus_ = sliceStatus_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.SliceStatus result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.sliceStatus_ = sliceStatus_;
+                }
             }
 
             @java.lang.Override
@@ -39887,7 +38335,7 @@ public final class ContextOuterClass {
                 if (other.sliceStatus_ != 0) {
                     setSliceStatusValue(other.getSliceStatusValue());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -39899,20 +38347,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.SliceStatus parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 8:
+                                {
+                                    sliceStatus_ = input.readEnum();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 8
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.SliceStatus) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private int sliceStatus_ = 0;
 
             /**
@@ -39931,6 +38406,7 @@ public final class ContextOuterClass {
              */
             public Builder setSliceStatusValue(int value) {
                 sliceStatus_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -39941,8 +38417,7 @@ public final class ContextOuterClass {
              */
             @java.lang.Override
             public context.ContextOuterClass.SliceStatusEnum getSliceStatus() {
-                @SuppressWarnings("deprecation")
-                context.ContextOuterClass.SliceStatusEnum result = context.ContextOuterClass.SliceStatusEnum.valueOf(sliceStatus_);
+                context.ContextOuterClass.SliceStatusEnum result = context.ContextOuterClass.SliceStatusEnum.forNumber(sliceStatus_);
                 return result == null ? context.ContextOuterClass.SliceStatusEnum.UNRECOGNIZED : result;
             }
 
@@ -39955,6 +38430,7 @@ public final class ContextOuterClass {
                 if (value == null) {
                     throw new NullPointerException();
                 }
+                bitField0_ |= 0x00000001;
                 sliceStatus_ = value.getNumber();
                 onChanged();
                 return this;
@@ -39965,6 +38441,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearSliceStatus() {
+                bitField0_ = (bitField0_ & ~0x00000001);
                 sliceStatus_ = 0;
                 onChanged();
                 return this;
@@ -39997,7 +38474,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceStatus parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new SliceStatus(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -40068,57 +38555,6 @@ public final class ContextOuterClass {
             return new SliceConfig();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private SliceConfig(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    configRules_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                configRules_.add(input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    configRules_ = java.util.Collections.unmodifiableList(configRules_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceConfig_descriptor;
         }
@@ -40130,6 +38566,7 @@ public final class ContextOuterClass {
 
         public static final int CONFIG_RULES_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List configRules_;
 
         /**
@@ -40190,7 +38627,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < configRules_.size(); i++) {
                 output.writeMessage(1, configRules_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -40202,7 +38639,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < configRules_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, configRules_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -40218,7 +38655,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.SliceConfig other = (context.ContextOuterClass.SliceConfig) obj;
             if (!getConfigRulesList().equals(other.getConfigRulesList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -40234,7 +38671,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONFIG_RULES_FIELD_NUMBER;
                 hash = (53 * hash) + getConfigRulesList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -40328,29 +38765,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceConfig.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getConfigRulesFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (configRulesBuilder_ == null) {
                     configRules_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    configRules_ = null;
                     configRulesBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -40376,7 +38807,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceConfig buildPartial() {
                 context.ContextOuterClass.SliceConfig result = new context.ContextOuterClass.SliceConfig(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.SliceConfig result) {
                 if (configRulesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         configRules_ = java.util.Collections.unmodifiableList(configRules_);
@@ -40386,38 +38825,10 @@ public final class ContextOuterClass {
                 } else {
                     result.configRules_ = configRulesBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
             }
 
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.SliceConfig result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -40457,7 +38868,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -40469,17 +38880,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.SliceConfig parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.ConfigRule m = input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry);
+                                    if (configRulesBuilder_ == null) {
+                                        ensureConfigRulesIsMutable();
+                                        configRules_.add(m);
+                                    } else {
+                                        configRulesBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.SliceConfig) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -40749,7 +39190,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceConfig parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new SliceConfig(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -40820,57 +39271,6 @@ public final class ContextOuterClass {
             return new SliceIdList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private SliceIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    sliceIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                sliceIds_.add(input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceIdList_descriptor;
         }
@@ -40882,6 +39282,7 @@ public final class ContextOuterClass {
 
         public static final int SLICE_IDS_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List sliceIds_;
 
         /**
@@ -40942,7 +39343,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < sliceIds_.size(); i++) {
                 output.writeMessage(1, sliceIds_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -40954,7 +39355,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < sliceIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, sliceIds_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -40970,7 +39371,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.SliceIdList other = (context.ContextOuterClass.SliceIdList) obj;
             if (!getSliceIdsList().equals(other.getSliceIdsList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -40986,7 +39387,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SLICE_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getSliceIdsList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -41080,29 +39481,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceIdList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getSliceIdsFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (sliceIdsBuilder_ == null) {
                     sliceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    sliceIds_ = null;
                     sliceIdsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -41128,7 +39523,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceIdList buildPartial() {
                 context.ContextOuterClass.SliceIdList result = new context.ContextOuterClass.SliceIdList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.SliceIdList result) {
                 if (sliceIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
@@ -41138,38 +39541,10 @@ public final class ContextOuterClass {
                 } else {
                     result.sliceIds_ = sliceIdsBuilder_.build();
                 }
-                onBuilt();
-                return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.SliceIdList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -41209,7 +39584,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -41221,17 +39596,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.SliceIdList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.SliceId m = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
+                                    if (sliceIdsBuilder_ == null) {
+                                        ensureSliceIdsIsMutable();
+                                        sliceIds_.add(m);
+                                    } else {
+                                        sliceIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.SliceIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -41501,7 +39906,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new SliceIdList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -41572,57 +39987,6 @@ public final class ContextOuterClass {
             return new SliceList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private SliceList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    slices_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                slices_.add(input.readMessage(context.ContextOuterClass.Slice.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    slices_ = java.util.Collections.unmodifiableList(slices_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceList_descriptor;
         }
@@ -41634,6 +39998,7 @@ public final class ContextOuterClass {
 
         public static final int SLICES_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List slices_;
 
         /**
@@ -41694,7 +40059,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < slices_.size(); i++) {
                 output.writeMessage(1, slices_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -41706,7 +40071,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < slices_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, slices_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -41722,7 +40087,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.SliceList other = (context.ContextOuterClass.SliceList) obj;
             if (!getSlicesList().equals(other.getSlicesList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -41738,7 +40103,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SLICES_FIELD_NUMBER;
                 hash = (53 * hash) + getSlicesList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -41832,29 +40197,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getSlicesFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (slicesBuilder_ == null) {
                     slices_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    slices_ = null;
                     slicesBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -41880,7 +40239,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceList buildPartial() {
                 context.ContextOuterClass.SliceList result = new context.ContextOuterClass.SliceList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.SliceList result) {
                 if (slicesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         slices_ = java.util.Collections.unmodifiableList(slices_);
@@ -41890,38 +40257,10 @@ public final class ContextOuterClass {
                 } else {
                     result.slices_ = slicesBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
             }
 
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.SliceList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -41961,7 +40300,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -41973,17 +40312,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.SliceList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.Slice m = input.readMessage(context.ContextOuterClass.Slice.parser(), extensionRegistry);
+                                    if (slicesBuilder_ == null) {
+                                        ensureSlicesIsMutable();
+                                        slices_.add(m);
+                                    } else {
+                                        slicesBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.SliceList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -42253,7 +40622,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new SliceList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -42345,82 +40724,6 @@ public final class ContextOuterClass {
             return new SliceFilter();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private SliceFilter(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.SliceIdList.Builder subBuilder = null;
-                                if (sliceIds_ != null) {
-                                    subBuilder = sliceIds_.toBuilder();
-                                }
-                                sliceIds_ = input.readMessage(context.ContextOuterClass.SliceIdList.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(sliceIds_);
-                                    sliceIds_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 16:
-                            {
-                                includeEndpointIds_ = input.readBool();
-                                break;
-                            }
-                        case 24:
-                            {
-                                includeConstraints_ = input.readBool();
-                                break;
-                            }
-                        case 32:
-                            {
-                                includeServiceIds_ = input.readBool();
-                                break;
-                            }
-                        case 40:
-                            {
-                                includeSubsliceIds_ = input.readBool();
-                                break;
-                            }
-                        case 48:
-                            {
-                                includeConfigRules_ = input.readBool();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceFilter_descriptor;
         }
@@ -42457,12 +40760,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceIdListOrBuilder getSliceIdsOrBuilder() {
-            return getSliceIds();
+            return sliceIds_ == null ? context.ContextOuterClass.SliceIdList.getDefaultInstance() : sliceIds_;
         }
 
         public static final int INCLUDE_ENDPOINT_IDS_FIELD_NUMBER = 2;
 
-        private boolean includeEndpointIds_;
+        private boolean includeEndpointIds_ = false;
 
         /**
          * bool include_endpoint_ids = 2;
@@ -42475,7 +40778,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_CONSTRAINTS_FIELD_NUMBER = 3;
 
-        private boolean includeConstraints_;
+        private boolean includeConstraints_ = false;
 
         /**
          * bool include_constraints = 3;
@@ -42488,7 +40791,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_SERVICE_IDS_FIELD_NUMBER = 4;
 
-        private boolean includeServiceIds_;
+        private boolean includeServiceIds_ = false;
 
         /**
          * bool include_service_ids = 4;
@@ -42501,7 +40804,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_SUBSLICE_IDS_FIELD_NUMBER = 5;
 
-        private boolean includeSubsliceIds_;
+        private boolean includeSubsliceIds_ = false;
 
         /**
          * bool include_subslice_ids = 5;
@@ -42514,7 +40817,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_CONFIG_RULES_FIELD_NUMBER = 6;
 
-        private boolean includeConfigRules_;
+        private boolean includeConfigRules_ = false;
 
         /**
          * bool include_config_rules = 6;
@@ -42558,7 +40861,7 @@ public final class ContextOuterClass {
             if (includeConfigRules_ != false) {
                 output.writeBool(6, includeConfigRules_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -42585,7 +40888,7 @@ public final class ContextOuterClass {
             if (includeConfigRules_ != false) {
                 size += com.google.protobuf.CodedOutputStream.computeBoolSize(6, includeConfigRules_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -42615,7 +40918,7 @@ public final class ContextOuterClass {
                 return false;
             if (getIncludeConfigRules() != other.getIncludeConfigRules())
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -42641,7 +40944,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeSubsliceIds());
             hash = (37 * hash) + INCLUDE_CONFIG_RULES_FIELD_NUMBER;
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeConfigRules());
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -42735,26 +41038,19 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceFilter.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (sliceIdsBuilder_ == null) {
-                    sliceIds_ = null;
-                } else {
-                    sliceIds_ = null;
+                bitField0_ = 0;
+                sliceIds_ = null;
+                if (sliceIdsBuilder_ != null) {
+                    sliceIdsBuilder_.dispose();
                     sliceIdsBuilder_ = null;
                 }
                 includeEndpointIds_ = false;
@@ -42787,48 +41083,33 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceFilter buildPartial() {
                 context.ContextOuterClass.SliceFilter result = new context.ContextOuterClass.SliceFilter(this);
-                if (sliceIdsBuilder_ == null) {
-                    result.sliceIds_ = sliceIds_;
-                } else {
-                    result.sliceIds_ = sliceIdsBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.includeEndpointIds_ = includeEndpointIds_;
-                result.includeConstraints_ = includeConstraints_;
-                result.includeServiceIds_ = includeServiceIds_;
-                result.includeSubsliceIds_ = includeSubsliceIds_;
-                result.includeConfigRules_ = includeConfigRules_;
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.SliceFilter result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.sliceIds_ = sliceIdsBuilder_ == null ? sliceIds_ : sliceIdsBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.includeEndpointIds_ = includeEndpointIds_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.includeConstraints_ = includeConstraints_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.includeServiceIds_ = includeServiceIds_;
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.includeSubsliceIds_ = includeSubsliceIds_;
+                }
+                if (((from_bitField0_ & 0x00000020) != 0)) {
+                    result.includeConfigRules_ = includeConfigRules_;
+                }
             }
 
             @java.lang.Override
@@ -42862,7 +41143,7 @@ public final class ContextOuterClass {
                 if (other.getIncludeConfigRules() != false) {
                     setIncludeConfigRules(other.getIncludeConfigRules());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -42874,20 +41155,82 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.SliceFilter parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getSliceIdsFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 16:
+                                {
+                                    includeEndpointIds_ = input.readBool();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 16
+                            case 24:
+                                {
+                                    includeConstraints_ = input.readBool();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            case 32:
+                                {
+                                    includeServiceIds_ = input.readBool();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 32
+                            case 40:
+                                {
+                                    includeSubsliceIds_ = input.readBool();
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 40
+                            case 48:
+                                {
+                                    includeConfigRules_ = input.readBool();
+                                    bitField0_ |= 0x00000020;
+                                    break;
+                                }
+                            // case 48
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.SliceFilter) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.SliceIdList sliceIds_;
 
             private com.google.protobuf.SingleFieldBuilderV3 sliceIdsBuilder_;
@@ -42897,7 +41240,7 @@ public final class ContextOuterClass {
              * @return Whether the sliceIds field is set.
              */
             public boolean hasSliceIds() {
-                return sliceIdsBuilder_ != null || sliceIds_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -42921,10 +41264,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     sliceIds_ = value;
-                    onChanged();
                 } else {
                     sliceIdsBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -42934,10 +41278,11 @@ public final class ContextOuterClass {
             public Builder setSliceIds(context.ContextOuterClass.SliceIdList.Builder builderForValue) {
                 if (sliceIdsBuilder_ == null) {
                     sliceIds_ = builderForValue.build();
-                    onChanged();
                 } else {
                     sliceIdsBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -42946,15 +41291,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeSliceIds(context.ContextOuterClass.SliceIdList value) {
                 if (sliceIdsBuilder_ == null) {
-                    if (sliceIds_ != null) {
-                        sliceIds_ = context.ContextOuterClass.SliceIdList.newBuilder(sliceIds_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && sliceIds_ != null && sliceIds_ != context.ContextOuterClass.SliceIdList.getDefaultInstance()) {
+                        getSliceIdsBuilder().mergeFrom(value);
                     } else {
                         sliceIds_ = value;
                     }
-                    onChanged();
                 } else {
                     sliceIdsBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -42962,13 +41308,13 @@ public final class ContextOuterClass {
              * .context.SliceIdList slice_ids = 1;
              */
             public Builder clearSliceIds() {
-                if (sliceIdsBuilder_ == null) {
-                    sliceIds_ = null;
-                    onChanged();
-                } else {
-                    sliceIds_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                sliceIds_ = null;
+                if (sliceIdsBuilder_ != null) {
+                    sliceIdsBuilder_.dispose();
                     sliceIdsBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -42976,6 +41322,7 @@ public final class ContextOuterClass {
              * .context.SliceIdList slice_ids = 1;
              */
             public context.ContextOuterClass.SliceIdList.Builder getSliceIdsBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getSliceIdsFieldBuilder().getBuilder();
             }
@@ -43020,6 +41367,7 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeEndpointIds(boolean value) {
                 includeEndpointIds_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -43029,6 +41377,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeEndpointIds() {
+                bitField0_ = (bitField0_ & ~0x00000002);
                 includeEndpointIds_ = false;
                 onChanged();
                 return this;
@@ -43052,6 +41401,7 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeConstraints(boolean value) {
                 includeConstraints_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -43061,6 +41411,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeConstraints() {
+                bitField0_ = (bitField0_ & ~0x00000004);
                 includeConstraints_ = false;
                 onChanged();
                 return this;
@@ -43084,6 +41435,7 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeServiceIds(boolean value) {
                 includeServiceIds_ = value;
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -43093,6 +41445,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeServiceIds() {
+                bitField0_ = (bitField0_ & ~0x00000008);
                 includeServiceIds_ = false;
                 onChanged();
                 return this;
@@ -43116,6 +41469,7 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeSubsliceIds(boolean value) {
                 includeSubsliceIds_ = value;
+                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -43125,6 +41479,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeSubsliceIds() {
+                bitField0_ = (bitField0_ & ~0x00000010);
                 includeSubsliceIds_ = false;
                 onChanged();
                 return this;
@@ -43148,6 +41503,7 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeConfigRules(boolean value) {
                 includeConfigRules_ = value;
+                bitField0_ |= 0x00000020;
                 onChanged();
                 return this;
             }
@@ -43157,6 +41513,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeConfigRules() {
+                bitField0_ = (bitField0_ & ~0x00000020);
                 includeConfigRules_ = false;
                 onChanged();
                 return this;
@@ -43189,7 +41546,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceFilter parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new SliceFilter(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -43268,70 +41635,6 @@ public final class ContextOuterClass {
             return new SliceEvent();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private SliceEvent(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Event.Builder subBuilder = null;
-                                if (event_ != null) {
-                                    subBuilder = event_.toBuilder();
-                                }
-                                event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(event_);
-                                    event_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.SliceId.Builder subBuilder = null;
-                                if (sliceId_ != null) {
-                                    subBuilder = sliceId_.toBuilder();
-                                }
-                                sliceId_ = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(sliceId_);
-                                    sliceId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceEvent_descriptor;
         }
@@ -43368,7 +41671,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-            return getEvent();
+            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
         }
 
         public static final int SLICE_ID_FIELD_NUMBER = 2;
@@ -43398,7 +41701,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
-            return getSliceId();
+            return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -43422,7 +41725,7 @@ public final class ContextOuterClass {
             if (sliceId_ != null) {
                 output.writeMessage(2, getSliceId());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -43437,7 +41740,7 @@ public final class ContextOuterClass {
             if (sliceId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getSliceId());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -43463,7 +41766,7 @@ public final class ContextOuterClass {
                 if (!getSliceId().equals(other.getSliceId()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -43483,7 +41786,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SLICE_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getSliceId().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -43577,32 +41880,24 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceEvent.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (eventBuilder_ == null) {
-                    event_ = null;
-                } else {
-                    event_ = null;
+                bitField0_ = 0;
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
                     eventBuilder_ = null;
                 }
-                if (sliceIdBuilder_ == null) {
-                    sliceId_ = null;
-                } else {
-                    sliceId_ = null;
+                sliceId_ = null;
+                if (sliceIdBuilder_ != null) {
+                    sliceIdBuilder_.dispose();
                     sliceIdBuilder_ = null;
                 }
                 return this;
@@ -43630,48 +41925,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceEvent buildPartial() {
                 context.ContextOuterClass.SliceEvent result = new context.ContextOuterClass.SliceEvent(this);
-                if (eventBuilder_ == null) {
-                    result.event_ = event_;
-                } else {
-                    result.event_ = eventBuilder_.build();
-                }
-                if (sliceIdBuilder_ == null) {
-                    result.sliceId_ = sliceId_;
-                } else {
-                    result.sliceId_ = sliceIdBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.SliceEvent result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.sliceId_ = sliceIdBuilder_ == null ? sliceId_ : sliceIdBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -43693,7 +41961,7 @@ public final class ContextOuterClass {
                 if (other.hasSliceId()) {
                     mergeSliceId(other.getSliceId());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -43705,20 +41973,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.SliceEvent parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getSliceIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.SliceEvent) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.Event event_;
 
             private com.google.protobuf.SingleFieldBuilderV3 eventBuilder_;
@@ -43728,7 +42030,7 @@ public final class ContextOuterClass {
              * @return Whether the event field is set.
              */
             public boolean hasEvent() {
-                return eventBuilder_ != null || event_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -43752,10 +42054,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     event_ = value;
-                    onChanged();
                 } else {
                     eventBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -43765,10 +42068,11 @@ public final class ContextOuterClass {
             public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                 if (eventBuilder_ == null) {
                     event_ = builderForValue.build();
-                    onChanged();
                 } else {
                     eventBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -43777,15 +42081,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeEvent(context.ContextOuterClass.Event value) {
                 if (eventBuilder_ == null) {
-                    if (event_ != null) {
-                        event_ = context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
+                        getEventBuilder().mergeFrom(value);
                     } else {
                         event_ = value;
                     }
-                    onChanged();
                 } else {
                     eventBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -43793,13 +42098,13 @@ public final class ContextOuterClass {
              * .context.Event event = 1;
              */
             public Builder clearEvent() {
-                if (eventBuilder_ == null) {
-                    event_ = null;
-                    onChanged();
-                } else {
-                    event_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
                     eventBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -43807,6 +42112,7 @@ public final class ContextOuterClass {
              * .context.Event event = 1;
              */
             public context.ContextOuterClass.Event.Builder getEventBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEventFieldBuilder().getBuilder();
             }
@@ -43842,7 +42148,7 @@ public final class ContextOuterClass {
              * @return Whether the sliceId field is set.
              */
             public boolean hasSliceId() {
-                return sliceIdBuilder_ != null || sliceId_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -43866,10 +42172,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     sliceId_ = value;
-                    onChanged();
                 } else {
                     sliceIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -43879,10 +42186,11 @@ public final class ContextOuterClass {
             public Builder setSliceId(context.ContextOuterClass.SliceId.Builder builderForValue) {
                 if (sliceIdBuilder_ == null) {
                     sliceId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     sliceIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -43891,15 +42199,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeSliceId(context.ContextOuterClass.SliceId value) {
                 if (sliceIdBuilder_ == null) {
-                    if (sliceId_ != null) {
-                        sliceId_ = context.ContextOuterClass.SliceId.newBuilder(sliceId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && sliceId_ != null && sliceId_ != context.ContextOuterClass.SliceId.getDefaultInstance()) {
+                        getSliceIdBuilder().mergeFrom(value);
                     } else {
                         sliceId_ = value;
                     }
-                    onChanged();
                 } else {
                     sliceIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -43907,13 +42216,13 @@ public final class ContextOuterClass {
              * .context.SliceId slice_id = 2;
              */
             public Builder clearSliceId() {
-                if (sliceIdBuilder_ == null) {
-                    sliceId_ = null;
-                    onChanged();
-                } else {
-                    sliceId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                sliceId_ = null;
+                if (sliceIdBuilder_ != null) {
+                    sliceIdBuilder_.dispose();
                     sliceIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -43921,6 +42230,7 @@ public final class ContextOuterClass {
              * .context.SliceId slice_id = 2;
              */
             public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getSliceIdFieldBuilder().getBuilder();
             }
@@ -43974,7 +42284,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new SliceEvent(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -44040,57 +42360,6 @@ public final class ContextOuterClass {
             return new ConnectionId();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ConnectionId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
-                                if (connectionUuid_ != null) {
-                                    subBuilder = connectionUuid_.toBuilder();
-                                }
-                                connectionUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(connectionUuid_);
-                                    connectionUuid_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionId_descriptor;
         }
@@ -44127,7 +42396,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getConnectionUuidOrBuilder() {
-            return getConnectionUuid();
+            return connectionUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : connectionUuid_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -44148,7 +42417,7 @@ public final class ContextOuterClass {
             if (connectionUuid_ != null) {
                 output.writeMessage(1, getConnectionUuid());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -44160,7 +42429,7 @@ public final class ContextOuterClass {
             if (connectionUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getConnectionUuid());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -44180,7 +42449,7 @@ public final class ContextOuterClass {
                 if (!getConnectionUuid().equals(other.getConnectionUuid()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -44196,7 +42465,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONNECTION_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getConnectionUuid().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -44294,26 +42563,19 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionId.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (connectionUuidBuilder_ == null) {
-                    connectionUuid_ = null;
-                } else {
-                    connectionUuid_ = null;
+                bitField0_ = 0;
+                connectionUuid_ = null;
+                if (connectionUuidBuilder_ != null) {
+                    connectionUuidBuilder_.dispose();
                     connectionUuidBuilder_ = null;
                 }
                 return this;
@@ -44341,43 +42603,18 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionId buildPartial() {
                 context.ContextOuterClass.ConnectionId result = new context.ContextOuterClass.ConnectionId(this);
-                if (connectionUuidBuilder_ == null) {
-                    result.connectionUuid_ = connectionUuid_;
-                } else {
-                    result.connectionUuid_ = connectionUuidBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ConnectionId result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.connectionUuid_ = connectionUuidBuilder_ == null ? connectionUuid_ : connectionUuidBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -44396,7 +42633,7 @@ public final class ContextOuterClass {
                 if (other.hasConnectionUuid()) {
                     mergeConnectionUuid(other.getConnectionUuid());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -44408,20 +42645,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ConnectionId parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getConnectionUuidFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ConnectionId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.Uuid connectionUuid_;
 
             private com.google.protobuf.SingleFieldBuilderV3 connectionUuidBuilder_;
@@ -44431,7 +42695,7 @@ public final class ContextOuterClass {
              * @return Whether the connectionUuid field is set.
              */
             public boolean hasConnectionUuid() {
-                return connectionUuidBuilder_ != null || connectionUuid_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -44455,10 +42719,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     connectionUuid_ = value;
-                    onChanged();
                 } else {
                     connectionUuidBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -44468,10 +42733,11 @@ public final class ContextOuterClass {
             public Builder setConnectionUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (connectionUuidBuilder_ == null) {
                     connectionUuid_ = builderForValue.build();
-                    onChanged();
                 } else {
                     connectionUuidBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -44480,15 +42746,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeConnectionUuid(context.ContextOuterClass.Uuid value) {
                 if (connectionUuidBuilder_ == null) {
-                    if (connectionUuid_ != null) {
-                        connectionUuid_ = context.ContextOuterClass.Uuid.newBuilder(connectionUuid_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && connectionUuid_ != null && connectionUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getConnectionUuidBuilder().mergeFrom(value);
                     } else {
                         connectionUuid_ = value;
                     }
-                    onChanged();
                 } else {
                     connectionUuidBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -44496,13 +42763,13 @@ public final class ContextOuterClass {
              * .context.Uuid connection_uuid = 1;
              */
             public Builder clearConnectionUuid() {
-                if (connectionUuidBuilder_ == null) {
-                    connectionUuid_ = null;
-                    onChanged();
-                } else {
-                    connectionUuid_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                connectionUuid_ = null;
+                if (connectionUuidBuilder_ != null) {
+                    connectionUuidBuilder_.dispose();
                     connectionUuidBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -44510,6 +42777,7 @@ public final class ContextOuterClass {
              * .context.Uuid connection_uuid = 1;
              */
             public context.ContextOuterClass.Uuid.Builder getConnectionUuidBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getConnectionUuidFieldBuilder().getBuilder();
             }
@@ -44563,7 +42831,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ConnectionId(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -44621,50 +42899,6 @@ public final class ContextOuterClass {
             return new ConnectionSettings_L0();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ConnectionSettings_L0(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                lspSymbolicName_ = s;
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_descriptor;
         }
@@ -44676,7 +42910,8 @@ public final class ContextOuterClass {
 
         public static final int LSP_SYMBOLIC_NAME_FIELD_NUMBER = 1;
 
-        private volatile java.lang.Object lspSymbolicName_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object lspSymbolicName_ = "";
 
         /**
          * string lsp_symbolic_name = 1;
@@ -44726,10 +42961,10 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (!getLspSymbolicNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lspSymbolicName_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, lspSymbolicName_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -44738,10 +42973,10 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (!getLspSymbolicNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lspSymbolicName_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, lspSymbolicName_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -44757,7 +42992,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ConnectionSettings_L0 other = (context.ContextOuterClass.ConnectionSettings_L0) obj;
             if (!getLspSymbolicName().equals(other.getLspSymbolicName()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -44771,7 +43006,7 @@ public final class ContextOuterClass {
             hash = (19 * hash) + getDescriptor().hashCode();
             hash = (37 * hash) + LSP_SYMBOLIC_NAME_FIELD_NUMBER;
             hash = (53 * hash) + getLspSymbolicName().hashCode();
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -44865,22 +43100,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionSettings_L0.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 lspSymbolicName_ = "";
                 return this;
             }
@@ -44907,39 +43136,18 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionSettings_L0 buildPartial() {
                 context.ContextOuterClass.ConnectionSettings_L0 result = new context.ContextOuterClass.ConnectionSettings_L0(this);
-                result.lspSymbolicName_ = lspSymbolicName_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ConnectionSettings_L0 result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.lspSymbolicName_ = lspSymbolicName_;
+                }
             }
 
             @java.lang.Override
@@ -44957,9 +43165,10 @@ public final class ContextOuterClass {
                     return this;
                 if (!other.getLspSymbolicName().isEmpty()) {
                     lspSymbolicName_ = other.lspSymbolicName_;
+                    bitField0_ |= 0x00000001;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -44971,20 +43180,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ConnectionSettings_L0 parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    lspSymbolicName_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ConnectionSettings_L0) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private java.lang.Object lspSymbolicName_ = "";
 
             /**
@@ -45028,6 +43264,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 lspSymbolicName_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -45038,6 +43275,7 @@ public final class ContextOuterClass {
              */
             public Builder clearLspSymbolicName() {
                 lspSymbolicName_ = getDefaultInstance().getLspSymbolicName();
+                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -45053,6 +43291,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 lspSymbolicName_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -45084,7 +43323,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionSettings_L0 parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ConnectionSettings_L0(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -45179,76 +43428,6 @@ public final class ContextOuterClass {
             return new ConnectionSettings_L2();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ConnectionSettings_L2(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                srcMacAddress_ = s;
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                dstMacAddress_ = s;
-                                break;
-                            }
-                        case 24:
-                            {
-                                etherType_ = input.readUInt32();
-                                break;
-                            }
-                        case 32:
-                            {
-                                vlanId_ = input.readUInt32();
-                                break;
-                            }
-                        case 40:
-                            {
-                                mplsLabel_ = input.readUInt32();
-                                break;
-                            }
-                        case 48:
-                            {
-                                mplsTrafficClass_ = input.readUInt32();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_descriptor;
         }
@@ -45260,7 +43439,8 @@ public final class ContextOuterClass {
 
         public static final int SRC_MAC_ADDRESS_FIELD_NUMBER = 1;
 
-        private volatile java.lang.Object srcMacAddress_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object srcMacAddress_ = "";
 
         /**
          * string src_mac_address = 1;
@@ -45297,7 +43477,8 @@ public final class ContextOuterClass {
 
         public static final int DST_MAC_ADDRESS_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object dstMacAddress_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object dstMacAddress_ = "";
 
         /**
          * string dst_mac_address = 2;
@@ -45334,7 +43515,7 @@ public final class ContextOuterClass {
 
         public static final int ETHER_TYPE_FIELD_NUMBER = 3;
 
-        private int etherType_;
+        private int etherType_ = 0;
 
         /**
          * uint32 ether_type = 3;
@@ -45347,7 +43528,7 @@ public final class ContextOuterClass {
 
         public static final int VLAN_ID_FIELD_NUMBER = 4;
 
-        private int vlanId_;
+        private int vlanId_ = 0;
 
         /**
          * uint32 vlan_id = 4;
@@ -45360,7 +43541,7 @@ public final class ContextOuterClass {
 
         public static final int MPLS_LABEL_FIELD_NUMBER = 5;
 
-        private int mplsLabel_;
+        private int mplsLabel_ = 0;
 
         /**
          * uint32 mpls_label = 5;
@@ -45373,7 +43554,7 @@ public final class ContextOuterClass {
 
         public static final int MPLS_TRAFFIC_CLASS_FIELD_NUMBER = 6;
 
-        private int mplsTrafficClass_;
+        private int mplsTrafficClass_ = 0;
 
         /**
          * uint32 mpls_traffic_class = 6;
@@ -45399,10 +43580,10 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (!getSrcMacAddressBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcMacAddress_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, srcMacAddress_);
             }
-            if (!getDstMacAddressBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstMacAddress_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dstMacAddress_);
             }
             if (etherType_ != 0) {
@@ -45417,7 +43598,7 @@ public final class ContextOuterClass {
             if (mplsTrafficClass_ != 0) {
                 output.writeUInt32(6, mplsTrafficClass_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -45426,10 +43607,10 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (!getSrcMacAddressBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcMacAddress_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, srcMacAddress_);
             }
-            if (!getDstMacAddressBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstMacAddress_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dstMacAddress_);
             }
             if (etherType_ != 0) {
@@ -45444,7 +43625,7 @@ public final class ContextOuterClass {
             if (mplsTrafficClass_ != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeUInt32Size(6, mplsTrafficClass_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -45470,7 +43651,7 @@ public final class ContextOuterClass {
                 return false;
             if (getMplsTrafficClass() != other.getMplsTrafficClass())
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -45494,7 +43675,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + getMplsLabel();
             hash = (37 * hash) + MPLS_TRAFFIC_CLASS_FIELD_NUMBER;
             hash = (53 * hash) + getMplsTrafficClass();
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -45588,22 +43769,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionSettings_L2.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 srcMacAddress_ = "";
                 dstMacAddress_ = "";
                 etherType_ = 0;
@@ -45635,44 +43810,33 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionSettings_L2 buildPartial() {
                 context.ContextOuterClass.ConnectionSettings_L2 result = new context.ContextOuterClass.ConnectionSettings_L2(this);
-                result.srcMacAddress_ = srcMacAddress_;
-                result.dstMacAddress_ = dstMacAddress_;
-                result.etherType_ = etherType_;
-                result.vlanId_ = vlanId_;
-                result.mplsLabel_ = mplsLabel_;
-                result.mplsTrafficClass_ = mplsTrafficClass_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ConnectionSettings_L2 result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.srcMacAddress_ = srcMacAddress_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.dstMacAddress_ = dstMacAddress_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.etherType_ = etherType_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.vlanId_ = vlanId_;
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.mplsLabel_ = mplsLabel_;
+                }
+                if (((from_bitField0_ & 0x00000020) != 0)) {
+                    result.mplsTrafficClass_ = mplsTrafficClass_;
+                }
             }
 
             @java.lang.Override
@@ -45690,10 +43854,12 @@ public final class ContextOuterClass {
                     return this;
                 if (!other.getSrcMacAddress().isEmpty()) {
                     srcMacAddress_ = other.srcMacAddress_;
+                    bitField0_ |= 0x00000001;
                     onChanged();
                 }
                 if (!other.getDstMacAddress().isEmpty()) {
                     dstMacAddress_ = other.dstMacAddress_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (other.getEtherType() != 0) {
@@ -45708,7 +43874,7 @@ public final class ContextOuterClass {
                 if (other.getMplsTrafficClass() != 0) {
                     setMplsTrafficClass(other.getMplsTrafficClass());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -45720,20 +43886,82 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ConnectionSettings_L2 parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    srcMacAddress_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    dstMacAddress_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 24:
+                                {
+                                    etherType_ = input.readUInt32();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            case 32:
+                                {
+                                    vlanId_ = input.readUInt32();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 32
+                            case 40:
+                                {
+                                    mplsLabel_ = input.readUInt32();
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 40
+                            case 48:
+                                {
+                                    mplsTrafficClass_ = input.readUInt32();
+                                    bitField0_ |= 0x00000020;
+                                    break;
+                                }
+                            // case 48
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ConnectionSettings_L2) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private java.lang.Object srcMacAddress_ = "";
 
             /**
@@ -45777,6 +44005,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 srcMacAddress_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -45787,6 +44016,7 @@ public final class ContextOuterClass {
              */
             public Builder clearSrcMacAddress() {
                 srcMacAddress_ = getDefaultInstance().getSrcMacAddress();
+                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -45802,6 +44032,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 srcMacAddress_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -45849,6 +44080,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 dstMacAddress_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -45859,6 +44091,7 @@ public final class ContextOuterClass {
              */
             public Builder clearDstMacAddress() {
                 dstMacAddress_ = getDefaultInstance().getDstMacAddress();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -45874,6 +44107,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 dstMacAddress_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -45896,6 +44130,7 @@ public final class ContextOuterClass {
              */
             public Builder setEtherType(int value) {
                 etherType_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -45905,6 +44140,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearEtherType() {
+                bitField0_ = (bitField0_ & ~0x00000004);
                 etherType_ = 0;
                 onChanged();
                 return this;
@@ -45928,6 +44164,7 @@ public final class ContextOuterClass {
              */
             public Builder setVlanId(int value) {
                 vlanId_ = value;
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -45937,6 +44174,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearVlanId() {
+                bitField0_ = (bitField0_ & ~0x00000008);
                 vlanId_ = 0;
                 onChanged();
                 return this;
@@ -45960,6 +44198,7 @@ public final class ContextOuterClass {
              */
             public Builder setMplsLabel(int value) {
                 mplsLabel_ = value;
+                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -45969,6 +44208,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearMplsLabel() {
+                bitField0_ = (bitField0_ & ~0x00000010);
                 mplsLabel_ = 0;
                 onChanged();
                 return this;
@@ -45992,6 +44232,7 @@ public final class ContextOuterClass {
              */
             public Builder setMplsTrafficClass(int value) {
                 mplsTrafficClass_ = value;
+                bitField0_ |= 0x00000020;
                 onChanged();
                 return this;
             }
@@ -46001,6 +44242,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearMplsTrafficClass() {
+                bitField0_ = (bitField0_ & ~0x00000020);
                 mplsTrafficClass_ = 0;
                 onChanged();
                 return this;
@@ -46033,7 +44275,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionSettings_L2 parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ConnectionSettings_L2(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -46122,71 +44374,6 @@ public final class ContextOuterClass {
             return new ConnectionSettings_L3();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ConnectionSettings_L3(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                srcIpAddress_ = s;
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                dstIpAddress_ = s;
-                                break;
-                            }
-                        case 24:
-                            {
-                                dscp_ = input.readUInt32();
-                                break;
-                            }
-                        case 32:
-                            {
-                                protocol_ = input.readUInt32();
-                                break;
-                            }
-                        case 40:
-                            {
-                                ttl_ = input.readUInt32();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_descriptor;
         }
@@ -46198,7 +44385,8 @@ public final class ContextOuterClass {
 
         public static final int SRC_IP_ADDRESS_FIELD_NUMBER = 1;
 
-        private volatile java.lang.Object srcIpAddress_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object srcIpAddress_ = "";
 
         /**
          * string src_ip_address = 1;
@@ -46235,7 +44423,8 @@ public final class ContextOuterClass {
 
         public static final int DST_IP_ADDRESS_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object dstIpAddress_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object dstIpAddress_ = "";
 
         /**
          * string dst_ip_address = 2;
@@ -46272,7 +44461,7 @@ public final class ContextOuterClass {
 
         public static final int DSCP_FIELD_NUMBER = 3;
 
-        private int dscp_;
+        private int dscp_ = 0;
 
         /**
          * uint32 dscp = 3;
@@ -46285,7 +44474,7 @@ public final class ContextOuterClass {
 
         public static final int PROTOCOL_FIELD_NUMBER = 4;
 
-        private int protocol_;
+        private int protocol_ = 0;
 
         /**
          * uint32 protocol = 4;
@@ -46298,7 +44487,7 @@ public final class ContextOuterClass {
 
         public static final int TTL_FIELD_NUMBER = 5;
 
-        private int ttl_;
+        private int ttl_ = 0;
 
         /**
          * uint32 ttl = 5;
@@ -46324,10 +44513,10 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (!getSrcIpAddressBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcIpAddress_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, srcIpAddress_);
             }
-            if (!getDstIpAddressBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstIpAddress_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dstIpAddress_);
             }
             if (dscp_ != 0) {
@@ -46339,7 +44528,7 @@ public final class ContextOuterClass {
             if (ttl_ != 0) {
                 output.writeUInt32(5, ttl_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -46348,10 +44537,10 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (!getSrcIpAddressBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcIpAddress_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, srcIpAddress_);
             }
-            if (!getDstIpAddressBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstIpAddress_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dstIpAddress_);
             }
             if (dscp_ != 0) {
@@ -46363,7 +44552,7 @@ public final class ContextOuterClass {
             if (ttl_ != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeUInt32Size(5, ttl_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -46387,7 +44576,7 @@ public final class ContextOuterClass {
                 return false;
             if (getTtl() != other.getTtl())
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -46409,7 +44598,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + getProtocol();
             hash = (37 * hash) + TTL_FIELD_NUMBER;
             hash = (53 * hash) + getTtl();
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -46503,22 +44692,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionSettings_L3.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 srcIpAddress_ = "";
                 dstIpAddress_ = "";
                 dscp_ = 0;
@@ -46549,43 +44732,30 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionSettings_L3 buildPartial() {
                 context.ContextOuterClass.ConnectionSettings_L3 result = new context.ContextOuterClass.ConnectionSettings_L3(this);
-                result.srcIpAddress_ = srcIpAddress_;
-                result.dstIpAddress_ = dstIpAddress_;
-                result.dscp_ = dscp_;
-                result.protocol_ = protocol_;
-                result.ttl_ = ttl_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ConnectionSettings_L3 result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.srcIpAddress_ = srcIpAddress_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.dstIpAddress_ = dstIpAddress_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.dscp_ = dscp_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.protocol_ = protocol_;
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.ttl_ = ttl_;
+                }
             }
 
             @java.lang.Override
@@ -46603,10 +44773,12 @@ public final class ContextOuterClass {
                     return this;
                 if (!other.getSrcIpAddress().isEmpty()) {
                     srcIpAddress_ = other.srcIpAddress_;
+                    bitField0_ |= 0x00000001;
                     onChanged();
                 }
                 if (!other.getDstIpAddress().isEmpty()) {
                     dstIpAddress_ = other.dstIpAddress_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (other.getDscp() != 0) {
@@ -46618,7 +44790,7 @@ public final class ContextOuterClass {
                 if (other.getTtl() != 0) {
                     setTtl(other.getTtl());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -46630,20 +44802,75 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ConnectionSettings_L3 parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    srcIpAddress_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    dstIpAddress_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 24:
+                                {
+                                    dscp_ = input.readUInt32();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            case 32:
+                                {
+                                    protocol_ = input.readUInt32();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 32
+                            case 40:
+                                {
+                                    ttl_ = input.readUInt32();
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 40
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ConnectionSettings_L3) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private java.lang.Object srcIpAddress_ = "";
 
             /**
@@ -46687,6 +44914,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 srcIpAddress_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -46697,6 +44925,7 @@ public final class ContextOuterClass {
              */
             public Builder clearSrcIpAddress() {
                 srcIpAddress_ = getDefaultInstance().getSrcIpAddress();
+                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -46712,6 +44941,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 srcIpAddress_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -46759,6 +44989,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 dstIpAddress_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -46769,6 +45000,7 @@ public final class ContextOuterClass {
              */
             public Builder clearDstIpAddress() {
                 dstIpAddress_ = getDefaultInstance().getDstIpAddress();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -46784,6 +45016,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 dstIpAddress_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -46806,6 +45039,7 @@ public final class ContextOuterClass {
              */
             public Builder setDscp(int value) {
                 dscp_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -46815,6 +45049,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearDscp() {
+                bitField0_ = (bitField0_ & ~0x00000004);
                 dscp_ = 0;
                 onChanged();
                 return this;
@@ -46838,6 +45073,7 @@ public final class ContextOuterClass {
              */
             public Builder setProtocol(int value) {
                 protocol_ = value;
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -46847,6 +45083,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearProtocol() {
+                bitField0_ = (bitField0_ & ~0x00000008);
                 protocol_ = 0;
                 onChanged();
                 return this;
@@ -46870,6 +45107,7 @@ public final class ContextOuterClass {
              */
             public Builder setTtl(int value) {
                 ttl_ = value;
+                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -46879,6 +45117,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearTtl() {
+                bitField0_ = (bitField0_ & ~0x00000010);
                 ttl_ = 0;
                 onChanged();
                 return this;
@@ -46911,7 +45150,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionSettings_L3 parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ConnectionSettings_L3(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -46980,64 +45229,6 @@ public final class ContextOuterClass {
             return new ConnectionSettings_L4();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ConnectionSettings_L4(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 8:
-                            {
-                                srcPort_ = input.readUInt32();
-                                break;
-                            }
-                        case 16:
-                            {
-                                dstPort_ = input.readUInt32();
-                                break;
-                            }
-                        case 24:
-                            {
-                                tcpFlags_ = input.readUInt32();
-                                break;
-                            }
-                        case 32:
-                            {
-                                ttl_ = input.readUInt32();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionSettings_L4_descriptor;
         }
@@ -47049,7 +45240,7 @@ public final class ContextOuterClass {
 
         public static final int SRC_PORT_FIELD_NUMBER = 1;
 
-        private int srcPort_;
+        private int srcPort_ = 0;
 
         /**
          * uint32 src_port = 1;
@@ -47062,7 +45253,7 @@ public final class ContextOuterClass {
 
         public static final int DST_PORT_FIELD_NUMBER = 2;
 
-        private int dstPort_;
+        private int dstPort_ = 0;
 
         /**
          * uint32 dst_port = 2;
@@ -47075,7 +45266,7 @@ public final class ContextOuterClass {
 
         public static final int TCP_FLAGS_FIELD_NUMBER = 3;
 
-        private int tcpFlags_;
+        private int tcpFlags_ = 0;
 
         /**
          * uint32 tcp_flags = 3;
@@ -47088,7 +45279,7 @@ public final class ContextOuterClass {
 
         public static final int TTL_FIELD_NUMBER = 4;
 
-        private int ttl_;
+        private int ttl_ = 0;
 
         /**
          * uint32 ttl = 4;
@@ -47126,7 +45317,7 @@ public final class ContextOuterClass {
             if (ttl_ != 0) {
                 output.writeUInt32(4, ttl_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -47147,7 +45338,7 @@ public final class ContextOuterClass {
             if (ttl_ != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeUInt32Size(4, ttl_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -47169,7 +45360,7 @@ public final class ContextOuterClass {
                 return false;
             if (getTtl() != other.getTtl())
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -47189,7 +45380,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + getTcpFlags();
             hash = (37 * hash) + TTL_FIELD_NUMBER;
             hash = (53 * hash) + getTtl();
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -47283,22 +45474,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionSettings_L4.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 srcPort_ = 0;
                 dstPort_ = 0;
                 tcpFlags_ = 0;
@@ -47328,42 +45513,27 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionSettings_L4 buildPartial() {
                 context.ContextOuterClass.ConnectionSettings_L4 result = new context.ContextOuterClass.ConnectionSettings_L4(this);
-                result.srcPort_ = srcPort_;
-                result.dstPort_ = dstPort_;
-                result.tcpFlags_ = tcpFlags_;
-                result.ttl_ = ttl_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ConnectionSettings_L4 result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.srcPort_ = srcPort_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.dstPort_ = dstPort_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.tcpFlags_ = tcpFlags_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.ttl_ = ttl_;
+                }
             }
 
             @java.lang.Override
@@ -47391,7 +45561,7 @@ public final class ContextOuterClass {
                 if (other.getTtl() != 0) {
                     setTtl(other.getTtl());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -47403,20 +45573,68 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ConnectionSettings_L4 parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 8:
+                                {
+                                    srcPort_ = input.readUInt32();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 8
+                            case 16:
+                                {
+                                    dstPort_ = input.readUInt32();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 16
+                            case 24:
+                                {
+                                    tcpFlags_ = input.readUInt32();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            case 32:
+                                {
+                                    ttl_ = input.readUInt32();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 32
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ConnectionSettings_L4) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private int srcPort_;
 
             /**
@@ -47435,6 +45653,7 @@ public final class ContextOuterClass {
              */
             public Builder setSrcPort(int value) {
                 srcPort_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -47444,6 +45663,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearSrcPort() {
+                bitField0_ = (bitField0_ & ~0x00000001);
                 srcPort_ = 0;
                 onChanged();
                 return this;
@@ -47467,6 +45687,7 @@ public final class ContextOuterClass {
              */
             public Builder setDstPort(int value) {
                 dstPort_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -47476,6 +45697,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearDstPort() {
+                bitField0_ = (bitField0_ & ~0x00000002);
                 dstPort_ = 0;
                 onChanged();
                 return this;
@@ -47499,6 +45721,7 @@ public final class ContextOuterClass {
              */
             public Builder setTcpFlags(int value) {
                 tcpFlags_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -47508,6 +45731,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearTcpFlags() {
+                bitField0_ = (bitField0_ & ~0x00000004);
                 tcpFlags_ = 0;
                 onChanged();
                 return this;
@@ -47531,6 +45755,7 @@ public final class ContextOuterClass {
              */
             public Builder setTtl(int value) {
                 ttl_ = value;
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -47540,6 +45765,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearTtl() {
+                bitField0_ = (bitField0_ & ~0x00000008);
                 ttl_ = 0;
                 onChanged();
                 return this;
@@ -47572,7 +45798,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionSettings_L4 parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ConnectionSettings_L4(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -47685,96 +45921,6 @@ public final class ContextOuterClass {
             return new ConnectionSettings();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ConnectionSettings(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.ConnectionSettings_L0.Builder subBuilder = null;
-                                if (l0_ != null) {
-                                    subBuilder = l0_.toBuilder();
-                                }
-                                l0_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L0.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(l0_);
-                                    l0_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.ConnectionSettings_L2.Builder subBuilder = null;
-                                if (l2_ != null) {
-                                    subBuilder = l2_.toBuilder();
-                                }
-                                l2_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L2.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(l2_);
-                                    l2_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 26:
-                            {
-                                context.ContextOuterClass.ConnectionSettings_L3.Builder subBuilder = null;
-                                if (l3_ != null) {
-                                    subBuilder = l3_.toBuilder();
-                                }
-                                l3_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L3.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(l3_);
-                                    l3_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 34:
-                            {
-                                context.ContextOuterClass.ConnectionSettings_L4.Builder subBuilder = null;
-                                if (l4_ != null) {
-                                    subBuilder = l4_.toBuilder();
-                                }
-                                l4_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L4.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(l4_);
-                                    l4_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionSettings_descriptor;
         }
@@ -47811,7 +45957,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionSettings_L0OrBuilder getL0OrBuilder() {
-            return getL0();
+            return l0_ == null ? context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance() : l0_;
         }
 
         public static final int L2_FIELD_NUMBER = 2;
@@ -47841,7 +45987,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionSettings_L2OrBuilder getL2OrBuilder() {
-            return getL2();
+            return l2_ == null ? context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance() : l2_;
         }
 
         public static final int L3_FIELD_NUMBER = 3;
@@ -47871,7 +46017,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionSettings_L3OrBuilder getL3OrBuilder() {
-            return getL3();
+            return l3_ == null ? context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance() : l3_;
         }
 
         public static final int L4_FIELD_NUMBER = 4;
@@ -47901,7 +46047,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionSettings_L4OrBuilder getL4OrBuilder() {
-            return getL4();
+            return l4_ == null ? context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance() : l4_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -47931,7 +46077,7 @@ public final class ContextOuterClass {
             if (l4_ != null) {
                 output.writeMessage(4, getL4());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -47952,7 +46098,7 @@ public final class ContextOuterClass {
             if (l4_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getL4());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -47990,7 +46136,7 @@ public final class ContextOuterClass {
                 if (!getL4().equals(other.getL4()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -48018,7 +46164,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + L4_FIELD_NUMBER;
                 hash = (53 * hash) + getL4().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -48112,44 +46258,34 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionSettings.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (l0Builder_ == null) {
-                    l0_ = null;
-                } else {
-                    l0_ = null;
+                bitField0_ = 0;
+                l0_ = null;
+                if (l0Builder_ != null) {
+                    l0Builder_.dispose();
                     l0Builder_ = null;
                 }
-                if (l2Builder_ == null) {
-                    l2_ = null;
-                } else {
-                    l2_ = null;
+                l2_ = null;
+                if (l2Builder_ != null) {
+                    l2Builder_.dispose();
                     l2Builder_ = null;
                 }
-                if (l3Builder_ == null) {
-                    l3_ = null;
-                } else {
-                    l3_ = null;
+                l3_ = null;
+                if (l3Builder_ != null) {
+                    l3Builder_.dispose();
                     l3Builder_ = null;
                 }
-                if (l4Builder_ == null) {
-                    l4_ = null;
-                } else {
-                    l4_ = null;
+                l4_ = null;
+                if (l4Builder_ != null) {
+                    l4Builder_.dispose();
                     l4Builder_ = null;
                 }
                 return this;
@@ -48177,58 +46313,27 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionSettings buildPartial() {
                 context.ContextOuterClass.ConnectionSettings result = new context.ContextOuterClass.ConnectionSettings(this);
-                if (l0Builder_ == null) {
-                    result.l0_ = l0_;
-                } else {
-                    result.l0_ = l0Builder_.build();
-                }
-                if (l2Builder_ == null) {
-                    result.l2_ = l2_;
-                } else {
-                    result.l2_ = l2Builder_.build();
-                }
-                if (l3Builder_ == null) {
-                    result.l3_ = l3_;
-                } else {
-                    result.l3_ = l3Builder_.build();
-                }
-                if (l4Builder_ == null) {
-                    result.l4_ = l4_;
-                } else {
-                    result.l4_ = l4Builder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ConnectionSettings result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.l0_ = l0Builder_ == null ? l0_ : l0Builder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.l2_ = l2Builder_ == null ? l2_ : l2Builder_.build();
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.l3_ = l3Builder_ == null ? l3_ : l3Builder_.build();
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.l4_ = l4Builder_ == null ? l4_ : l4Builder_.build();
+                }
             }
 
             @java.lang.Override
@@ -48256,7 +46361,7 @@ public final class ContextOuterClass {
                 if (other.hasL4()) {
                     mergeL4(other.getL4());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -48268,20 +46373,68 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ConnectionSettings parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getL0FieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getL2FieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    input.readMessage(getL3FieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    input.readMessage(getL4FieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 34
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ConnectionSettings) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.ConnectionSettings_L0 l0_;
 
             private com.google.protobuf.SingleFieldBuilderV3 l0Builder_;
@@ -48291,7 +46444,7 @@ public final class ContextOuterClass {
              * @return Whether the l0 field is set.
              */
             public boolean hasL0() {
-                return l0Builder_ != null || l0_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -48315,10 +46468,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     l0_ = value;
-                    onChanged();
                 } else {
                     l0Builder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -48328,10 +46482,11 @@ public final class ContextOuterClass {
             public Builder setL0(context.ContextOuterClass.ConnectionSettings_L0.Builder builderForValue) {
                 if (l0Builder_ == null) {
                     l0_ = builderForValue.build();
-                    onChanged();
                 } else {
                     l0Builder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -48340,15 +46495,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeL0(context.ContextOuterClass.ConnectionSettings_L0 value) {
                 if (l0Builder_ == null) {
-                    if (l0_ != null) {
-                        l0_ = context.ContextOuterClass.ConnectionSettings_L0.newBuilder(l0_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && l0_ != null && l0_ != context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance()) {
+                        getL0Builder().mergeFrom(value);
                     } else {
                         l0_ = value;
                     }
-                    onChanged();
                 } else {
                     l0Builder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -48356,13 +46512,13 @@ public final class ContextOuterClass {
              * .context.ConnectionSettings_L0 l0 = 1;
              */
             public Builder clearL0() {
-                if (l0Builder_ == null) {
-                    l0_ = null;
-                    onChanged();
-                } else {
-                    l0_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                l0_ = null;
+                if (l0Builder_ != null) {
+                    l0Builder_.dispose();
                     l0Builder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -48370,6 +46526,7 @@ public final class ContextOuterClass {
              * .context.ConnectionSettings_L0 l0 = 1;
              */
             public context.ContextOuterClass.ConnectionSettings_L0.Builder getL0Builder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getL0FieldBuilder().getBuilder();
             }
@@ -48405,7 +46562,7 @@ public final class ContextOuterClass {
              * @return Whether the l2 field is set.
              */
             public boolean hasL2() {
-                return l2Builder_ != null || l2_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -48429,10 +46586,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     l2_ = value;
-                    onChanged();
                 } else {
                     l2Builder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -48442,10 +46600,11 @@ public final class ContextOuterClass {
             public Builder setL2(context.ContextOuterClass.ConnectionSettings_L2.Builder builderForValue) {
                 if (l2Builder_ == null) {
                     l2_ = builderForValue.build();
-                    onChanged();
                 } else {
                     l2Builder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -48454,15 +46613,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeL2(context.ContextOuterClass.ConnectionSettings_L2 value) {
                 if (l2Builder_ == null) {
-                    if (l2_ != null) {
-                        l2_ = context.ContextOuterClass.ConnectionSettings_L2.newBuilder(l2_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && l2_ != null && l2_ != context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance()) {
+                        getL2Builder().mergeFrom(value);
                     } else {
                         l2_ = value;
                     }
-                    onChanged();
                 } else {
                     l2Builder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -48470,13 +46630,13 @@ public final class ContextOuterClass {
              * .context.ConnectionSettings_L2 l2 = 2;
              */
             public Builder clearL2() {
-                if (l2Builder_ == null) {
-                    l2_ = null;
-                    onChanged();
-                } else {
-                    l2_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                l2_ = null;
+                if (l2Builder_ != null) {
+                    l2Builder_.dispose();
                     l2Builder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -48484,6 +46644,7 @@ public final class ContextOuterClass {
              * .context.ConnectionSettings_L2 l2 = 2;
              */
             public context.ContextOuterClass.ConnectionSettings_L2.Builder getL2Builder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getL2FieldBuilder().getBuilder();
             }
@@ -48519,7 +46680,7 @@ public final class ContextOuterClass {
              * @return Whether the l3 field is set.
              */
             public boolean hasL3() {
-                return l3Builder_ != null || l3_ != null;
+                return ((bitField0_ & 0x00000004) != 0);
             }
 
             /**
@@ -48543,10 +46704,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     l3_ = value;
-                    onChanged();
                 } else {
                     l3Builder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -48556,10 +46718,11 @@ public final class ContextOuterClass {
             public Builder setL3(context.ContextOuterClass.ConnectionSettings_L3.Builder builderForValue) {
                 if (l3Builder_ == null) {
                     l3_ = builderForValue.build();
-                    onChanged();
                 } else {
                     l3Builder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -48568,15 +46731,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeL3(context.ContextOuterClass.ConnectionSettings_L3 value) {
                 if (l3Builder_ == null) {
-                    if (l3_ != null) {
-                        l3_ = context.ContextOuterClass.ConnectionSettings_L3.newBuilder(l3_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000004) != 0) && l3_ != null && l3_ != context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance()) {
+                        getL3Builder().mergeFrom(value);
                     } else {
                         l3_ = value;
                     }
-                    onChanged();
                 } else {
                     l3Builder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -48584,13 +46748,13 @@ public final class ContextOuterClass {
              * .context.ConnectionSettings_L3 l3 = 3;
              */
             public Builder clearL3() {
-                if (l3Builder_ == null) {
-                    l3_ = null;
-                    onChanged();
-                } else {
-                    l3_ = null;
+                bitField0_ = (bitField0_ & ~0x00000004);
+                l3_ = null;
+                if (l3Builder_ != null) {
+                    l3Builder_.dispose();
                     l3Builder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -48598,6 +46762,7 @@ public final class ContextOuterClass {
              * .context.ConnectionSettings_L3 l3 = 3;
              */
             public context.ContextOuterClass.ConnectionSettings_L3.Builder getL3Builder() {
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return getL3FieldBuilder().getBuilder();
             }
@@ -48633,7 +46798,7 @@ public final class ContextOuterClass {
              * @return Whether the l4 field is set.
              */
             public boolean hasL4() {
-                return l4Builder_ != null || l4_ != null;
+                return ((bitField0_ & 0x00000008) != 0);
             }
 
             /**
@@ -48657,10 +46822,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     l4_ = value;
-                    onChanged();
                 } else {
                     l4Builder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000008;
+                onChanged();
                 return this;
             }
 
@@ -48670,10 +46836,11 @@ public final class ContextOuterClass {
             public Builder setL4(context.ContextOuterClass.ConnectionSettings_L4.Builder builderForValue) {
                 if (l4Builder_ == null) {
                     l4_ = builderForValue.build();
-                    onChanged();
                 } else {
                     l4Builder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000008;
+                onChanged();
                 return this;
             }
 
@@ -48682,15 +46849,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeL4(context.ContextOuterClass.ConnectionSettings_L4 value) {
                 if (l4Builder_ == null) {
-                    if (l4_ != null) {
-                        l4_ = context.ContextOuterClass.ConnectionSettings_L4.newBuilder(l4_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000008) != 0) && l4_ != null && l4_ != context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance()) {
+                        getL4Builder().mergeFrom(value);
                     } else {
                         l4_ = value;
                     }
-                    onChanged();
                 } else {
                     l4Builder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000008;
+                onChanged();
                 return this;
             }
 
@@ -48698,13 +46866,13 @@ public final class ContextOuterClass {
              * .context.ConnectionSettings_L4 l4 = 4;
              */
             public Builder clearL4() {
-                if (l4Builder_ == null) {
-                    l4_ = null;
-                    onChanged();
-                } else {
-                    l4_ = null;
+                bitField0_ = (bitField0_ & ~0x00000008);
+                l4_ = null;
+                if (l4Builder_ != null) {
+                    l4Builder_.dispose();
                     l4Builder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -48712,6 +46880,7 @@ public final class ContextOuterClass {
              * .context.ConnectionSettings_L4 l4 = 4;
              */
             public context.ContextOuterClass.ConnectionSettings_L4.Builder getL4Builder() {
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return getL4FieldBuilder().getBuilder();
             }
@@ -48765,7 +46934,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionSettings parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ConnectionSettings(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -48913,108 +47092,6 @@ public final class ContextOuterClass {
             return new Connection();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Connection(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.ConnectionId.Builder subBuilder = null;
-                                if (connectionId_ != null) {
-                                    subBuilder = connectionId_.toBuilder();
-                                }
-                                connectionId_ = input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(connectionId_);
-                                    connectionId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.ServiceId.Builder subBuilder = null;
-                                if (serviceId_ != null) {
-                                    subBuilder = serviceId_.toBuilder();
-                                }
-                                serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(serviceId_);
-                                    serviceId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 26:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    pathHopsEndpointIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                pathHopsEndpointIds_.add(input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
-                                break;
-                            }
-                        case 34:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
-                                    subServiceIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000002;
-                                }
-                                subServiceIds_.add(input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry));
-                                break;
-                            }
-                        case 42:
-                            {
-                                context.ContextOuterClass.ConnectionSettings.Builder subBuilder = null;
-                                if (settings_ != null) {
-                                    subBuilder = settings_.toBuilder();
-                                }
-                                settings_ = input.readMessage(context.ContextOuterClass.ConnectionSettings.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(settings_);
-                                    settings_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    pathHopsEndpointIds_ = java.util.Collections.unmodifiableList(pathHopsEndpointIds_);
-                }
-                if (((mutable_bitField0_ & 0x00000002) != 0)) {
-                    subServiceIds_ = java.util.Collections.unmodifiableList(subServiceIds_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Connection_descriptor;
         }
@@ -49051,7 +47128,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
-            return getConnectionId();
+            return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
         }
 
         public static final int SERVICE_ID_FIELD_NUMBER = 2;
@@ -49081,11 +47158,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-            return getServiceId();
+            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
         }
 
         public static final int PATH_HOPS_ENDPOINT_IDS_FIELD_NUMBER = 3;
 
+        @SuppressWarnings("serial")
         private java.util.List pathHopsEndpointIds_;
 
         /**
@@ -49130,6 +47208,7 @@ public final class ContextOuterClass {
 
         public static final int SUB_SERVICE_IDS_FIELD_NUMBER = 4;
 
+        @SuppressWarnings("serial")
         private java.util.List subServiceIds_;
 
         /**
@@ -49199,7 +47278,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionSettingsOrBuilder getSettingsOrBuilder() {
-            return getSettings();
+            return settings_ == null ? context.ContextOuterClass.ConnectionSettings.getDefaultInstance() : settings_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -49232,7 +47311,7 @@ public final class ContextOuterClass {
             if (settings_ != null) {
                 output.writeMessage(5, getSettings());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -49256,7 +47335,7 @@ public final class ContextOuterClass {
             if (settings_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, getSettings());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -49292,7 +47371,7 @@ public final class ContextOuterClass {
                 if (!getSettings().equals(other.getSettings()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -49324,7 +47403,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SETTINGS_FIELD_NUMBER;
                 hash = (53 * hash) + getSettings().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -49418,52 +47497,43 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Connection.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getPathHopsEndpointIdsFieldBuilder();
-                    getSubServiceIdsFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (connectionIdBuilder_ == null) {
-                    connectionId_ = null;
-                } else {
-                    connectionId_ = null;
+                bitField0_ = 0;
+                connectionId_ = null;
+                if (connectionIdBuilder_ != null) {
+                    connectionIdBuilder_.dispose();
                     connectionIdBuilder_ = null;
                 }
-                if (serviceIdBuilder_ == null) {
-                    serviceId_ = null;
-                } else {
-                    serviceId_ = null;
+                serviceId_ = null;
+                if (serviceIdBuilder_ != null) {
+                    serviceIdBuilder_.dispose();
                     serviceIdBuilder_ = null;
                 }
                 if (pathHopsEndpointIdsBuilder_ == null) {
                     pathHopsEndpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    pathHopsEndpointIds_ = null;
                     pathHopsEndpointIdsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000004);
                 if (subServiceIdsBuilder_ == null) {
                     subServiceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000002);
                 } else {
+                    subServiceIds_ = null;
                     subServiceIdsBuilder_.clear();
                 }
-                if (settingsBuilder_ == null) {
-                    settings_ = null;
-                } else {
-                    settings_ = null;
+                bitField0_ = (bitField0_ & ~0x00000008);
+                settings_ = null;
+                if (settingsBuilder_ != null) {
+                    settingsBuilder_.dispose();
                     settingsBuilder_ = null;
                 }
                 return this;
@@ -49491,72 +47561,46 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Connection buildPartial() {
                 context.ContextOuterClass.Connection result = new context.ContextOuterClass.Connection(this);
-                int from_bitField0_ = bitField0_;
-                if (connectionIdBuilder_ == null) {
-                    result.connectionId_ = connectionId_;
-                } else {
-                    result.connectionId_ = connectionIdBuilder_.build();
-                }
-                if (serviceIdBuilder_ == null) {
-                    result.serviceId_ = serviceId_;
-                } else {
-                    result.serviceId_ = serviceIdBuilder_.build();
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.Connection result) {
                 if (pathHopsEndpointIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0)) {
+                    if (((bitField0_ & 0x00000004) != 0)) {
                         pathHopsEndpointIds_ = java.util.Collections.unmodifiableList(pathHopsEndpointIds_);
-                        bitField0_ = (bitField0_ & ~0x00000001);
+                        bitField0_ = (bitField0_ & ~0x00000004);
                     }
                     result.pathHopsEndpointIds_ = pathHopsEndpointIds_;
                 } else {
                     result.pathHopsEndpointIds_ = pathHopsEndpointIdsBuilder_.build();
                 }
                 if (subServiceIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0)) {
+                    if (((bitField0_ & 0x00000008) != 0)) {
                         subServiceIds_ = java.util.Collections.unmodifiableList(subServiceIds_);
-                        bitField0_ = (bitField0_ & ~0x00000002);
+                        bitField0_ = (bitField0_ & ~0x00000008);
                     }
                     result.subServiceIds_ = subServiceIds_;
                 } else {
                     result.subServiceIds_ = subServiceIdsBuilder_.build();
                 }
-                if (settingsBuilder_ == null) {
-                    result.settings_ = settings_;
-                } else {
-                    result.settings_ = settingsBuilder_.build();
-                }
-                onBuilt();
-                return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.Connection result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.connectionId_ = connectionIdBuilder_ == null ? connectionId_ : connectionIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.serviceId_ = serviceIdBuilder_ == null ? serviceId_ : serviceIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.settings_ = settingsBuilder_ == null ? settings_ : settingsBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -49582,7 +47626,7 @@ public final class ContextOuterClass {
                     if (!other.pathHopsEndpointIds_.isEmpty()) {
                         if (pathHopsEndpointIds_.isEmpty()) {
                             pathHopsEndpointIds_ = other.pathHopsEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                         } else {
                             ensurePathHopsEndpointIdsIsMutable();
                             pathHopsEndpointIds_.addAll(other.pathHopsEndpointIds_);
@@ -49595,7 +47639,7 @@ public final class ContextOuterClass {
                             pathHopsEndpointIdsBuilder_.dispose();
                             pathHopsEndpointIdsBuilder_ = null;
                             pathHopsEndpointIds_ = other.pathHopsEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                             pathHopsEndpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getPathHopsEndpointIdsFieldBuilder() : null;
                         } else {
                             pathHopsEndpointIdsBuilder_.addAllMessages(other.pathHopsEndpointIds_);
@@ -49606,7 +47650,7 @@ public final class ContextOuterClass {
                     if (!other.subServiceIds_.isEmpty()) {
                         if (subServiceIds_.isEmpty()) {
                             subServiceIds_ = other.subServiceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000008);
                         } else {
                             ensureSubServiceIdsIsMutable();
                             subServiceIds_.addAll(other.subServiceIds_);
@@ -49619,7 +47663,7 @@ public final class ContextOuterClass {
                             subServiceIdsBuilder_.dispose();
                             subServiceIdsBuilder_ = null;
                             subServiceIds_ = other.subServiceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000008);
                             subServiceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSubServiceIdsFieldBuilder() : null;
                         } else {
                             subServiceIdsBuilder_.addAllMessages(other.subServiceIds_);
@@ -49629,7 +47673,7 @@ public final class ContextOuterClass {
                 if (other.hasSettings()) {
                     mergeSettings(other.getSettings());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -49641,17 +47685,80 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Connection parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getConnectionIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getServiceIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                    if (pathHopsEndpointIdsBuilder_ == null) {
+                                        ensurePathHopsEndpointIdsIsMutable();
+                                        pathHopsEndpointIds_.add(m);
+                                    } else {
+                                        pathHopsEndpointIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    context.ContextOuterClass.ServiceId m = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
+                                    if (subServiceIdsBuilder_ == null) {
+                                        ensureSubServiceIdsIsMutable();
+                                        subServiceIds_.add(m);
+                                    } else {
+                                        subServiceIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 34
+                            case 42:
+                                {
+                                    input.readMessage(getSettingsFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 42
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Connection) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -49666,7 +47773,7 @@ public final class ContextOuterClass {
              * @return Whether the connectionId field is set.
              */
             public boolean hasConnectionId() {
-                return connectionIdBuilder_ != null || connectionId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -49690,10 +47797,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     connectionId_ = value;
-                    onChanged();
                 } else {
                     connectionIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -49703,10 +47811,11 @@ public final class ContextOuterClass {
             public Builder setConnectionId(context.ContextOuterClass.ConnectionId.Builder builderForValue) {
                 if (connectionIdBuilder_ == null) {
                     connectionId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     connectionIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -49715,15 +47824,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeConnectionId(context.ContextOuterClass.ConnectionId value) {
                 if (connectionIdBuilder_ == null) {
-                    if (connectionId_ != null) {
-                        connectionId_ = context.ContextOuterClass.ConnectionId.newBuilder(connectionId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && connectionId_ != null && connectionId_ != context.ContextOuterClass.ConnectionId.getDefaultInstance()) {
+                        getConnectionIdBuilder().mergeFrom(value);
                     } else {
                         connectionId_ = value;
                     }
-                    onChanged();
                 } else {
                     connectionIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -49731,13 +47841,13 @@ public final class ContextOuterClass {
              * .context.ConnectionId connection_id = 1;
              */
             public Builder clearConnectionId() {
-                if (connectionIdBuilder_ == null) {
-                    connectionId_ = null;
-                    onChanged();
-                } else {
-                    connectionId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                connectionId_ = null;
+                if (connectionIdBuilder_ != null) {
+                    connectionIdBuilder_.dispose();
                     connectionIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -49745,6 +47855,7 @@ public final class ContextOuterClass {
              * .context.ConnectionId connection_id = 1;
              */
             public context.ContextOuterClass.ConnectionId.Builder getConnectionIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getConnectionIdFieldBuilder().getBuilder();
             }
@@ -49780,7 +47891,7 @@ public final class ContextOuterClass {
              * @return Whether the serviceId field is set.
              */
             public boolean hasServiceId() {
-                return serviceIdBuilder_ != null || serviceId_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -49804,10 +47915,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     serviceId_ = value;
-                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -49817,10 +47929,11 @@ public final class ContextOuterClass {
             public Builder setServiceId(context.ContextOuterClass.ServiceId.Builder builderForValue) {
                 if (serviceIdBuilder_ == null) {
                     serviceId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -49829,15 +47942,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
                 if (serviceIdBuilder_ == null) {
-                    if (serviceId_ != null) {
-                        serviceId_ = context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && serviceId_ != null && serviceId_ != context.ContextOuterClass.ServiceId.getDefaultInstance()) {
+                        getServiceIdBuilder().mergeFrom(value);
                     } else {
                         serviceId_ = value;
                     }
-                    onChanged();
                 } else {
                     serviceIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -49845,13 +47959,13 @@ public final class ContextOuterClass {
              * .context.ServiceId service_id = 2;
              */
             public Builder clearServiceId() {
-                if (serviceIdBuilder_ == null) {
-                    serviceId_ = null;
-                    onChanged();
-                } else {
-                    serviceId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                serviceId_ = null;
+                if (serviceIdBuilder_ != null) {
+                    serviceIdBuilder_.dispose();
                     serviceIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -49859,6 +47973,7 @@ public final class ContextOuterClass {
              * .context.ServiceId service_id = 2;
              */
             public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getServiceIdFieldBuilder().getBuilder();
             }
@@ -49888,9 +48003,9 @@ public final class ContextOuterClass {
             private java.util.List pathHopsEndpointIds_ = java.util.Collections.emptyList();
 
             private void ensurePathHopsEndpointIdsIsMutable() {
-                if (!((bitField0_ & 0x00000001) != 0)) {
+                if (!((bitField0_ & 0x00000004) != 0)) {
                     pathHopsEndpointIds_ = new java.util.ArrayList(pathHopsEndpointIds_);
-                    bitField0_ |= 0x00000001;
+                    bitField0_ |= 0x00000004;
                 }
             }
 
@@ -50042,7 +48157,7 @@ public final class ContextOuterClass {
             public Builder clearPathHopsEndpointIds() {
                 if (pathHopsEndpointIdsBuilder_ == null) {
                     pathHopsEndpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
+                    bitField0_ = (bitField0_ & ~0x00000004);
                     onChanged();
                 } else {
                     pathHopsEndpointIdsBuilder_.clear();
@@ -50116,7 +48231,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getPathHopsEndpointIdsFieldBuilder() {
                 if (pathHopsEndpointIdsBuilder_ == null) {
-                    pathHopsEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(pathHopsEndpointIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    pathHopsEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(pathHopsEndpointIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
                     pathHopsEndpointIds_ = null;
                 }
                 return pathHopsEndpointIdsBuilder_;
@@ -50125,9 +48240,9 @@ public final class ContextOuterClass {
             private java.util.List subServiceIds_ = java.util.Collections.emptyList();
 
             private void ensureSubServiceIdsIsMutable() {
-                if (!((bitField0_ & 0x00000002) != 0)) {
+                if (!((bitField0_ & 0x00000008) != 0)) {
                     subServiceIds_ = new java.util.ArrayList(subServiceIds_);
-                    bitField0_ |= 0x00000002;
+                    bitField0_ |= 0x00000008;
                 }
             }
 
@@ -50279,7 +48394,7 @@ public final class ContextOuterClass {
             public Builder clearSubServiceIds() {
                 if (subServiceIdsBuilder_ == null) {
                     subServiceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000002);
+                    bitField0_ = (bitField0_ & ~0x00000008);
                     onChanged();
                 } else {
                     subServiceIdsBuilder_.clear();
@@ -50353,7 +48468,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getSubServiceIdsFieldBuilder() {
                 if (subServiceIdsBuilder_ == null) {
-                    subServiceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(subServiceIds_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
+                    subServiceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(subServiceIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
                     subServiceIds_ = null;
                 }
                 return subServiceIdsBuilder_;
@@ -50368,7 +48483,7 @@ public final class ContextOuterClass {
              * @return Whether the settings field is set.
              */
             public boolean hasSettings() {
-                return settingsBuilder_ != null || settings_ != null;
+                return ((bitField0_ & 0x00000010) != 0);
             }
 
             /**
@@ -50392,10 +48507,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     settings_ = value;
-                    onChanged();
                 } else {
                     settingsBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -50405,10 +48521,11 @@ public final class ContextOuterClass {
             public Builder setSettings(context.ContextOuterClass.ConnectionSettings.Builder builderForValue) {
                 if (settingsBuilder_ == null) {
                     settings_ = builderForValue.build();
-                    onChanged();
                 } else {
                     settingsBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -50417,15 +48534,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeSettings(context.ContextOuterClass.ConnectionSettings value) {
                 if (settingsBuilder_ == null) {
-                    if (settings_ != null) {
-                        settings_ = context.ContextOuterClass.ConnectionSettings.newBuilder(settings_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000010) != 0) && settings_ != null && settings_ != context.ContextOuterClass.ConnectionSettings.getDefaultInstance()) {
+                        getSettingsBuilder().mergeFrom(value);
                     } else {
                         settings_ = value;
                     }
-                    onChanged();
                 } else {
                     settingsBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -50433,13 +48551,13 @@ public final class ContextOuterClass {
              * .context.ConnectionSettings settings = 5;
              */
             public Builder clearSettings() {
-                if (settingsBuilder_ == null) {
-                    settings_ = null;
-                    onChanged();
-                } else {
-                    settings_ = null;
+                bitField0_ = (bitField0_ & ~0x00000010);
+                settings_ = null;
+                if (settingsBuilder_ != null) {
+                    settingsBuilder_.dispose();
                     settingsBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -50447,6 +48565,7 @@ public final class ContextOuterClass {
              * .context.ConnectionSettings settings = 5;
              */
             public context.ContextOuterClass.ConnectionSettings.Builder getSettingsBuilder() {
+                bitField0_ |= 0x00000010;
                 onChanged();
                 return getSettingsFieldBuilder().getBuilder();
             }
@@ -50500,7 +48619,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Connection parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Connection(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -50571,57 +48700,6 @@ public final class ContextOuterClass {
             return new ConnectionIdList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ConnectionIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    connectionIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                connectionIds_.add(input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    connectionIds_ = java.util.Collections.unmodifiableList(connectionIds_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionIdList_descriptor;
         }
@@ -50633,6 +48711,7 @@ public final class ContextOuterClass {
 
         public static final int CONNECTION_IDS_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List connectionIds_;
 
         /**
@@ -50693,7 +48772,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < connectionIds_.size(); i++) {
                 output.writeMessage(1, connectionIds_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -50705,7 +48784,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < connectionIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, connectionIds_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -50721,7 +48800,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ConnectionIdList other = (context.ContextOuterClass.ConnectionIdList) obj;
             if (!getConnectionIdsList().equals(other.getConnectionIdsList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -50737,7 +48816,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONNECTION_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getConnectionIdsList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -50831,29 +48910,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionIdList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getConnectionIdsFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (connectionIdsBuilder_ == null) {
                     connectionIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    connectionIds_ = null;
                     connectionIdsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -50879,7 +48952,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionIdList buildPartial() {
                 context.ContextOuterClass.ConnectionIdList result = new context.ContextOuterClass.ConnectionIdList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.ConnectionIdList result) {
                 if (connectionIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         connectionIds_ = java.util.Collections.unmodifiableList(connectionIds_);
@@ -50889,38 +48970,10 @@ public final class ContextOuterClass {
                 } else {
                     result.connectionIds_ = connectionIdsBuilder_.build();
                 }
-                onBuilt();
-                return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ConnectionIdList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -50960,7 +49013,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -50972,17 +49025,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ConnectionIdList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.ConnectionId m = input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry);
+                                    if (connectionIdsBuilder_ == null) {
+                                        ensureConnectionIdsIsMutable();
+                                        connectionIds_.add(m);
+                                    } else {
+                                        connectionIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ConnectionIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -51252,7 +49335,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ConnectionIdList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -51323,57 +49416,6 @@ public final class ContextOuterClass {
             return new ConnectionList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ConnectionList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    connections_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                connections_.add(input.readMessage(context.ContextOuterClass.Connection.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    connections_ = java.util.Collections.unmodifiableList(connections_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionList_descriptor;
         }
@@ -51385,6 +49427,7 @@ public final class ContextOuterClass {
 
         public static final int CONNECTIONS_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List connections_;
 
         /**
@@ -51445,7 +49488,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < connections_.size(); i++) {
                 output.writeMessage(1, connections_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -51457,7 +49500,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < connections_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, connections_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -51473,7 +49516,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ConnectionList other = (context.ContextOuterClass.ConnectionList) obj;
             if (!getConnectionsList().equals(other.getConnectionsList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -51489,7 +49532,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONNECTIONS_FIELD_NUMBER;
                 hash = (53 * hash) + getConnectionsList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -51583,29 +49626,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getConnectionsFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (connectionsBuilder_ == null) {
                     connections_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    connections_ = null;
                     connectionsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -51631,7 +49668,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionList buildPartial() {
                 context.ContextOuterClass.ConnectionList result = new context.ContextOuterClass.ConnectionList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.ConnectionList result) {
                 if (connectionsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         connections_ = java.util.Collections.unmodifiableList(connections_);
@@ -51641,38 +49686,10 @@ public final class ContextOuterClass {
                 } else {
                     result.connections_ = connectionsBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
             }
 
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ConnectionList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -51712,7 +49729,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -51724,17 +49741,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ConnectionList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.Connection m = input.readMessage(context.ContextOuterClass.Connection.parser(), extensionRegistry);
+                                    if (connectionsBuilder_ == null) {
+                                        ensureConnectionsIsMutable();
+                                        connections_.add(m);
+                                    } else {
+                                        connectionsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ConnectionList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -52004,7 +50051,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ConnectionList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -52083,70 +50140,6 @@ public final class ContextOuterClass {
             return new ConnectionEvent();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ConnectionEvent(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Event.Builder subBuilder = null;
-                                if (event_ != null) {
-                                    subBuilder = event_.toBuilder();
-                                }
-                                event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(event_);
-                                    event_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.ConnectionId.Builder subBuilder = null;
-                                if (connectionId_ != null) {
-                                    subBuilder = connectionId_.toBuilder();
-                                }
-                                connectionId_ = input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(connectionId_);
-                                    connectionId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionEvent_descriptor;
         }
@@ -52183,7 +50176,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-            return getEvent();
+            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
         }
 
         public static final int CONNECTION_ID_FIELD_NUMBER = 2;
@@ -52213,7 +50206,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
-            return getConnectionId();
+            return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -52237,7 +50230,7 @@ public final class ContextOuterClass {
             if (connectionId_ != null) {
                 output.writeMessage(2, getConnectionId());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -52252,7 +50245,7 @@ public final class ContextOuterClass {
             if (connectionId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getConnectionId());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -52278,7 +50271,7 @@ public final class ContextOuterClass {
                 if (!getConnectionId().equals(other.getConnectionId()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -52298,7 +50291,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONNECTION_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getConnectionId().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -52392,32 +50385,24 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionEvent.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (eventBuilder_ == null) {
-                    event_ = null;
-                } else {
-                    event_ = null;
+                bitField0_ = 0;
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
                     eventBuilder_ = null;
                 }
-                if (connectionIdBuilder_ == null) {
-                    connectionId_ = null;
-                } else {
-                    connectionId_ = null;
+                connectionId_ = null;
+                if (connectionIdBuilder_ != null) {
+                    connectionIdBuilder_.dispose();
                     connectionIdBuilder_ = null;
                 }
                 return this;
@@ -52445,48 +50430,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionEvent buildPartial() {
                 context.ContextOuterClass.ConnectionEvent result = new context.ContextOuterClass.ConnectionEvent(this);
-                if (eventBuilder_ == null) {
-                    result.event_ = event_;
-                } else {
-                    result.event_ = eventBuilder_.build();
-                }
-                if (connectionIdBuilder_ == null) {
-                    result.connectionId_ = connectionId_;
-                } else {
-                    result.connectionId_ = connectionIdBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ConnectionEvent result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.connectionId_ = connectionIdBuilder_ == null ? connectionId_ : connectionIdBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -52508,7 +50466,7 @@ public final class ContextOuterClass {
                 if (other.hasConnectionId()) {
                     mergeConnectionId(other.getConnectionId());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -52520,20 +50478,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ConnectionEvent parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getConnectionIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ConnectionEvent) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.Event event_;
 
             private com.google.protobuf.SingleFieldBuilderV3 eventBuilder_;
@@ -52543,7 +50535,7 @@ public final class ContextOuterClass {
              * @return Whether the event field is set.
              */
             public boolean hasEvent() {
-                return eventBuilder_ != null || event_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -52567,10 +50559,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     event_ = value;
-                    onChanged();
                 } else {
                     eventBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -52580,10 +50573,11 @@ public final class ContextOuterClass {
             public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                 if (eventBuilder_ == null) {
                     event_ = builderForValue.build();
-                    onChanged();
                 } else {
                     eventBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -52592,15 +50586,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeEvent(context.ContextOuterClass.Event value) {
                 if (eventBuilder_ == null) {
-                    if (event_ != null) {
-                        event_ = context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
+                        getEventBuilder().mergeFrom(value);
                     } else {
                         event_ = value;
                     }
-                    onChanged();
                 } else {
                     eventBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -52608,13 +50603,13 @@ public final class ContextOuterClass {
              * .context.Event event = 1;
              */
             public Builder clearEvent() {
-                if (eventBuilder_ == null) {
-                    event_ = null;
-                    onChanged();
-                } else {
-                    event_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
                     eventBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -52622,6 +50617,7 @@ public final class ContextOuterClass {
              * .context.Event event = 1;
              */
             public context.ContextOuterClass.Event.Builder getEventBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEventFieldBuilder().getBuilder();
             }
@@ -52657,7 +50653,7 @@ public final class ContextOuterClass {
              * @return Whether the connectionId field is set.
              */
             public boolean hasConnectionId() {
-                return connectionIdBuilder_ != null || connectionId_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -52681,10 +50677,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     connectionId_ = value;
-                    onChanged();
                 } else {
                     connectionIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -52694,10 +50691,11 @@ public final class ContextOuterClass {
             public Builder setConnectionId(context.ContextOuterClass.ConnectionId.Builder builderForValue) {
                 if (connectionIdBuilder_ == null) {
                     connectionId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     connectionIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -52706,15 +50704,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeConnectionId(context.ContextOuterClass.ConnectionId value) {
                 if (connectionIdBuilder_ == null) {
-                    if (connectionId_ != null) {
-                        connectionId_ = context.ContextOuterClass.ConnectionId.newBuilder(connectionId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && connectionId_ != null && connectionId_ != context.ContextOuterClass.ConnectionId.getDefaultInstance()) {
+                        getConnectionIdBuilder().mergeFrom(value);
                     } else {
                         connectionId_ = value;
                     }
-                    onChanged();
                 } else {
                     connectionIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -52722,13 +50721,13 @@ public final class ContextOuterClass {
              * .context.ConnectionId connection_id = 2;
              */
             public Builder clearConnectionId() {
-                if (connectionIdBuilder_ == null) {
-                    connectionId_ = null;
-                    onChanged();
-                } else {
-                    connectionId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                connectionId_ = null;
+                if (connectionIdBuilder_ != null) {
+                    connectionIdBuilder_.dispose();
                     connectionIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -52736,6 +50735,7 @@ public final class ContextOuterClass {
              * .context.ConnectionId connection_id = 2;
              */
             public context.ContextOuterClass.ConnectionId.Builder getConnectionIdBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getConnectionIdFieldBuilder().getBuilder();
             }
@@ -52789,7 +50789,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ConnectionEvent(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -52889,83 +50899,6 @@ public final class ContextOuterClass {
             return new EndPointId();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private EndPointId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.TopologyId.Builder subBuilder = null;
-                                if (topologyId_ != null) {
-                                    subBuilder = topologyId_.toBuilder();
-                                }
-                                topologyId_ = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(topologyId_);
-                                    topologyId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.DeviceId.Builder subBuilder = null;
-                                if (deviceId_ != null) {
-                                    subBuilder = deviceId_.toBuilder();
-                                }
-                                deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(deviceId_);
-                                    deviceId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 26:
-                            {
-                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
-                                if (endpointUuid_ != null) {
-                                    subBuilder = endpointUuid_.toBuilder();
-                                }
-                                endpointUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(endpointUuid_);
-                                    endpointUuid_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_EndPointId_descriptor;
         }
@@ -53002,7 +50935,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
-            return getTopologyId();
+            return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
         }
 
         public static final int DEVICE_ID_FIELD_NUMBER = 2;
@@ -53032,7 +50965,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
-            return getDeviceId();
+            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
         }
 
         public static final int ENDPOINT_UUID_FIELD_NUMBER = 3;
@@ -53062,7 +50995,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getEndpointUuidOrBuilder() {
-            return getEndpointUuid();
+            return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -53089,7 +51022,7 @@ public final class ContextOuterClass {
             if (endpointUuid_ != null) {
                 output.writeMessage(3, getEndpointUuid());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -53107,7 +51040,7 @@ public final class ContextOuterClass {
             if (endpointUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getEndpointUuid());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -53139,7 +51072,7 @@ public final class ContextOuterClass {
                 if (!getEndpointUuid().equals(other.getEndpointUuid()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -53163,7 +51096,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + ENDPOINT_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getEndpointUuid().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -53261,38 +51194,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.EndPointId.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (topologyIdBuilder_ == null) {
-                    topologyId_ = null;
-                } else {
-                    topologyId_ = null;
+                bitField0_ = 0;
+                topologyId_ = null;
+                if (topologyIdBuilder_ != null) {
+                    topologyIdBuilder_.dispose();
                     topologyIdBuilder_ = null;
                 }
-                if (deviceIdBuilder_ == null) {
-                    deviceId_ = null;
-                } else {
-                    deviceId_ = null;
+                deviceId_ = null;
+                if (deviceIdBuilder_ != null) {
+                    deviceIdBuilder_.dispose();
                     deviceIdBuilder_ = null;
                 }
-                if (endpointUuidBuilder_ == null) {
-                    endpointUuid_ = null;
-                } else {
-                    endpointUuid_ = null;
+                endpointUuid_ = null;
+                if (endpointUuidBuilder_ != null) {
+                    endpointUuidBuilder_.dispose();
                     endpointUuidBuilder_ = null;
                 }
                 return this;
@@ -53320,53 +51244,24 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.EndPointId buildPartial() {
                 context.ContextOuterClass.EndPointId result = new context.ContextOuterClass.EndPointId(this);
-                if (topologyIdBuilder_ == null) {
-                    result.topologyId_ = topologyId_;
-                } else {
-                    result.topologyId_ = topologyIdBuilder_.build();
-                }
-                if (deviceIdBuilder_ == null) {
-                    result.deviceId_ = deviceId_;
-                } else {
-                    result.deviceId_ = deviceIdBuilder_.build();
-                }
-                if (endpointUuidBuilder_ == null) {
-                    result.endpointUuid_ = endpointUuid_;
-                } else {
-                    result.endpointUuid_ = endpointUuidBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.EndPointId result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.topologyId_ = topologyIdBuilder_ == null ? topologyId_ : topologyIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.deviceId_ = deviceIdBuilder_ == null ? deviceId_ : deviceIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.endpointUuid_ = endpointUuidBuilder_ == null ? endpointUuid_ : endpointUuidBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -53391,7 +51286,7 @@ public final class ContextOuterClass {
                 if (other.hasEndpointUuid()) {
                     mergeEndpointUuid(other.getEndpointUuid());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -53403,20 +51298,61 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.EndPointId parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getTopologyIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getDeviceIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    input.readMessage(getEndpointUuidFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.EndPointId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.TopologyId topologyId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 topologyIdBuilder_;
@@ -53426,7 +51362,7 @@ public final class ContextOuterClass {
              * @return Whether the topologyId field is set.
              */
             public boolean hasTopologyId() {
-                return topologyIdBuilder_ != null || topologyId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -53450,10 +51386,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     topologyId_ = value;
-                    onChanged();
                 } else {
                     topologyIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -53463,10 +51400,11 @@ public final class ContextOuterClass {
             public Builder setTopologyId(context.ContextOuterClass.TopologyId.Builder builderForValue) {
                 if (topologyIdBuilder_ == null) {
                     topologyId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     topologyIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -53475,15 +51413,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
                 if (topologyIdBuilder_ == null) {
-                    if (topologyId_ != null) {
-                        topologyId_ = context.ContextOuterClass.TopologyId.newBuilder(topologyId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && topologyId_ != null && topologyId_ != context.ContextOuterClass.TopologyId.getDefaultInstance()) {
+                        getTopologyIdBuilder().mergeFrom(value);
                     } else {
                         topologyId_ = value;
                     }
-                    onChanged();
                 } else {
                     topologyIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -53491,13 +51430,13 @@ public final class ContextOuterClass {
              * .context.TopologyId topology_id = 1;
              */
             public Builder clearTopologyId() {
-                if (topologyIdBuilder_ == null) {
-                    topologyId_ = null;
-                    onChanged();
-                } else {
-                    topologyId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                topologyId_ = null;
+                if (topologyIdBuilder_ != null) {
+                    topologyIdBuilder_.dispose();
                     topologyIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -53505,6 +51444,7 @@ public final class ContextOuterClass {
              * .context.TopologyId topology_id = 1;
              */
             public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getTopologyIdFieldBuilder().getBuilder();
             }
@@ -53540,7 +51480,7 @@ public final class ContextOuterClass {
              * @return Whether the deviceId field is set.
              */
             public boolean hasDeviceId() {
-                return deviceIdBuilder_ != null || deviceId_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -53564,10 +51504,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     deviceId_ = value;
-                    onChanged();
                 } else {
                     deviceIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -53577,10 +51518,11 @@ public final class ContextOuterClass {
             public Builder setDeviceId(context.ContextOuterClass.DeviceId.Builder builderForValue) {
                 if (deviceIdBuilder_ == null) {
                     deviceId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     deviceIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -53589,15 +51531,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
                 if (deviceIdBuilder_ == null) {
-                    if (deviceId_ != null) {
-                        deviceId_ = context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && deviceId_ != null && deviceId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) {
+                        getDeviceIdBuilder().mergeFrom(value);
                     } else {
                         deviceId_ = value;
                     }
-                    onChanged();
                 } else {
                     deviceIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -53605,13 +51548,13 @@ public final class ContextOuterClass {
              * .context.DeviceId device_id = 2;
              */
             public Builder clearDeviceId() {
-                if (deviceIdBuilder_ == null) {
-                    deviceId_ = null;
-                    onChanged();
-                } else {
-                    deviceId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                deviceId_ = null;
+                if (deviceIdBuilder_ != null) {
+                    deviceIdBuilder_.dispose();
                     deviceIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -53619,6 +51562,7 @@ public final class ContextOuterClass {
              * .context.DeviceId device_id = 2;
              */
             public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getDeviceIdFieldBuilder().getBuilder();
             }
@@ -53654,7 +51598,7 @@ public final class ContextOuterClass {
              * @return Whether the endpointUuid field is set.
              */
             public boolean hasEndpointUuid() {
-                return endpointUuidBuilder_ != null || endpointUuid_ != null;
+                return ((bitField0_ & 0x00000004) != 0);
             }
 
             /**
@@ -53678,10 +51622,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     endpointUuid_ = value;
-                    onChanged();
                 } else {
                     endpointUuidBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -53691,10 +51636,11 @@ public final class ContextOuterClass {
             public Builder setEndpointUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (endpointUuidBuilder_ == null) {
                     endpointUuid_ = builderForValue.build();
-                    onChanged();
                 } else {
                     endpointUuidBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -53703,15 +51649,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeEndpointUuid(context.ContextOuterClass.Uuid value) {
                 if (endpointUuidBuilder_ == null) {
-                    if (endpointUuid_ != null) {
-                        endpointUuid_ = context.ContextOuterClass.Uuid.newBuilder(endpointUuid_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000004) != 0) && endpointUuid_ != null && endpointUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getEndpointUuidBuilder().mergeFrom(value);
                     } else {
                         endpointUuid_ = value;
                     }
-                    onChanged();
                 } else {
                     endpointUuidBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -53719,13 +51666,13 @@ public final class ContextOuterClass {
              * .context.Uuid endpoint_uuid = 3;
              */
             public Builder clearEndpointUuid() {
-                if (endpointUuidBuilder_ == null) {
-                    endpointUuid_ = null;
-                    onChanged();
-                } else {
-                    endpointUuid_ = null;
+                bitField0_ = (bitField0_ & ~0x00000004);
+                endpointUuid_ = null;
+                if (endpointUuidBuilder_ != null) {
+                    endpointUuidBuilder_.dispose();
                     endpointUuidBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -53733,6 +51680,7 @@ public final class ContextOuterClass {
              * .context.Uuid endpoint_uuid = 3;
              */
             public context.ContextOuterClass.Uuid.Builder getEndpointUuidBuilder() {
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return getEndpointUuidFieldBuilder().getBuilder();
             }
@@ -53786,7 +51734,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public EndPointId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new EndPointId(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -53924,111 +51882,6 @@ public final class ContextOuterClass {
             return new EndPoint();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private EndPoint(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.EndPointId.Builder subBuilder = null;
-                                if (endpointId_ != null) {
-                                    subBuilder = endpointId_.toBuilder();
-                                }
-                                endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(endpointId_);
-                                    endpointId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                name_ = s;
-                                break;
-                            }
-                        case 26:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                endpointType_ = s;
-                                break;
-                            }
-                        case 32:
-                            {
-                                int rawValue = input.readEnum();
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    kpiSampleTypes_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                kpiSampleTypes_.add(rawValue);
-                                break;
-                            }
-                        case 34:
-                            {
-                                int length = input.readRawVarint32();
-                                int oldLimit = input.pushLimit(length);
-                                while (input.getBytesUntilLimit() > 0) {
-                                    int rawValue = input.readEnum();
-                                    if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                        kpiSampleTypes_ = new java.util.ArrayList();
-                                        mutable_bitField0_ |= 0x00000001;
-                                    }
-                                    kpiSampleTypes_.add(rawValue);
-                                }
-                                input.popLimit(oldLimit);
-                                break;
-                            }
-                        case 42:
-                            {
-                                context.ContextOuterClass.Location.Builder subBuilder = null;
-                                if (endpointLocation_ != null) {
-                                    subBuilder = endpointLocation_.toBuilder();
-                                }
-                                endpointLocation_ = input.readMessage(context.ContextOuterClass.Location.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(endpointLocation_);
-                                    endpointLocation_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    kpiSampleTypes_ = java.util.Collections.unmodifiableList(kpiSampleTypes_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_EndPoint_descriptor;
         }
@@ -54065,12 +51918,13 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-            return getEndpointId();
+            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
         }
 
         public static final int NAME_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object name_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object name_ = "";
 
         /**
          * string name = 2;
@@ -54107,7 +51961,8 @@ public final class ContextOuterClass {
 
         public static final int ENDPOINT_TYPE_FIELD_NUMBER = 3;
 
-        private volatile java.lang.Object endpointType_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object endpointType_ = "";
 
         /**
          * string endpoint_type = 3;
@@ -54144,13 +51999,13 @@ public final class ContextOuterClass {
 
         public static final int KPI_SAMPLE_TYPES_FIELD_NUMBER = 4;
 
+        @SuppressWarnings("serial")
         private java.util.List kpiSampleTypes_;
 
         private static final com.google.protobuf.Internal.ListAdapter.Converter kpiSampleTypes_converter_ = new com.google.protobuf.Internal.ListAdapter.Converter() {
 
             public kpi_sample_types.KpiSampleTypes.KpiSampleType convert(java.lang.Integer from) {
-                @SuppressWarnings("deprecation")
-                kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.valueOf(from);
+                kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.forNumber(from);
                 return result == null ? kpi_sample_types.KpiSampleTypes.KpiSampleType.UNRECOGNIZED : result;
             }
         };
@@ -54231,7 +52086,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.LocationOrBuilder getEndpointLocationOrBuilder() {
-            return getEndpointLocation();
+            return endpointLocation_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : endpointLocation_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -54253,10 +52108,10 @@ public final class ContextOuterClass {
             if (endpointId_ != null) {
                 output.writeMessage(1, getEndpointId());
             }
-            if (!getNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
             }
-            if (!getEndpointTypeBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointType_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 3, endpointType_);
             }
             if (getKpiSampleTypesList().size() > 0) {
@@ -54269,7 +52124,7 @@ public final class ContextOuterClass {
             if (endpointLocation_ != null) {
                 output.writeMessage(5, getEndpointLocation());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -54281,10 +52136,10 @@ public final class ContextOuterClass {
             if (endpointId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEndpointId());
             }
-            if (!getNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
             }
-            if (!getEndpointTypeBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointType_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, endpointType_);
             }
             {
@@ -54302,7 +52157,7 @@ public final class ContextOuterClass {
             if (endpointLocation_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, getEndpointLocation());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -54334,7 +52189,7 @@ public final class ContextOuterClass {
                 if (!getEndpointLocation().equals(other.getEndpointLocation()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -54362,7 +52217,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + ENDPOINT_LOCATION_FIELD_NUMBER;
                 hash = (53 * hash) + getEndpointLocation().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -54456,36 +52311,28 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.EndPoint.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (endpointIdBuilder_ == null) {
-                    endpointId_ = null;
-                } else {
-                    endpointId_ = null;
+                bitField0_ = 0;
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
                     endpointIdBuilder_ = null;
                 }
                 name_ = "";
                 endpointType_ = "";
                 kpiSampleTypes_ = java.util.Collections.emptyList();
-                bitField0_ = (bitField0_ & ~0x00000001);
-                if (endpointLocationBuilder_ == null) {
-                    endpointLocation_ = null;
-                } else {
-                    endpointLocation_ = null;
+                bitField0_ = (bitField0_ & ~0x00000008);
+                endpointLocation_ = null;
+                if (endpointLocationBuilder_ != null) {
+                    endpointLocationBuilder_.dispose();
                     endpointLocationBuilder_ = null;
                 }
                 return this;
@@ -54513,56 +52360,36 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.EndPoint buildPartial() {
                 context.ContextOuterClass.EndPoint result = new context.ContextOuterClass.EndPoint(this);
-                int from_bitField0_ = bitField0_;
-                if (endpointIdBuilder_ == null) {
-                    result.endpointId_ = endpointId_;
-                } else {
-                    result.endpointId_ = endpointIdBuilder_.build();
-                }
-                result.name_ = name_;
-                result.endpointType_ = endpointType_;
-                if (((bitField0_ & 0x00000001) != 0)) {
-                    kpiSampleTypes_ = java.util.Collections.unmodifiableList(kpiSampleTypes_);
-                    bitField0_ = (bitField0_ & ~0x00000001);
-                }
-                result.kpiSampleTypes_ = kpiSampleTypes_;
-                if (endpointLocationBuilder_ == null) {
-                    result.endpointLocation_ = endpointLocation_;
-                } else {
-                    result.endpointLocation_ = endpointLocationBuilder_.build();
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
+            private void buildPartialRepeatedFields(context.ContextOuterClass.EndPoint result) {
+                if (((bitField0_ & 0x00000008) != 0)) {
+                    kpiSampleTypes_ = java.util.Collections.unmodifiableList(kpiSampleTypes_);
+                    bitField0_ = (bitField0_ & ~0x00000008);
+                }
+                result.kpiSampleTypes_ = kpiSampleTypes_;
             }
 
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.EndPoint result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.name_ = name_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.endpointType_ = endpointType_;
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.endpointLocation_ = endpointLocationBuilder_ == null ? endpointLocation_ : endpointLocationBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -54583,16 +52410,18 @@ public final class ContextOuterClass {
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (!other.getEndpointType().isEmpty()) {
                     endpointType_ = other.endpointType_;
+                    bitField0_ |= 0x00000004;
                     onChanged();
                 }
                 if (!other.kpiSampleTypes_.isEmpty()) {
                     if (kpiSampleTypes_.isEmpty()) {
                         kpiSampleTypes_ = other.kpiSampleTypes_;
-                        bitField0_ = (bitField0_ & ~0x00000001);
+                        bitField0_ = (bitField0_ & ~0x00000008);
                     } else {
                         ensureKpiSampleTypesIsMutable();
                         kpiSampleTypes_.addAll(other.kpiSampleTypes_);
@@ -54602,7 +52431,7 @@ public final class ContextOuterClass {
                 if (other.hasEndpointLocation()) {
                     mergeEndpointLocation(other.getEndpointLocation());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -54614,17 +52443,84 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.EndPoint parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    name_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    endpointType_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            case 32:
+                                {
+                                    int tmpRaw = input.readEnum();
+                                    ensureKpiSampleTypesIsMutable();
+                                    kpiSampleTypes_.add(tmpRaw);
+                                    break;
+                                }
+                            // case 32
+                            case 34:
+                                {
+                                    int length = input.readRawVarint32();
+                                    int oldLimit = input.pushLimit(length);
+                                    while (input.getBytesUntilLimit() > 0) {
+                                        int tmpRaw = input.readEnum();
+                                        ensureKpiSampleTypesIsMutable();
+                                        kpiSampleTypes_.add(tmpRaw);
+                                    }
+                                    input.popLimit(oldLimit);
+                                    break;
+                                }
+                            // case 34
+                            case 42:
+                                {
+                                    input.readMessage(getEndpointLocationFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 42
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.EndPoint) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -54639,7 +52535,7 @@ public final class ContextOuterClass {
              * @return Whether the endpointId field is set.
              */
             public boolean hasEndpointId() {
-                return endpointIdBuilder_ != null || endpointId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -54663,10 +52559,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     endpointId_ = value;
-                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -54676,10 +52573,11 @@ public final class ContextOuterClass {
             public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                 if (endpointIdBuilder_ == null) {
                     endpointId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -54688,15 +52586,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
                 if (endpointIdBuilder_ == null) {
-                    if (endpointId_ != null) {
-                        endpointId_ = context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
+                        getEndpointIdBuilder().mergeFrom(value);
                     } else {
                         endpointId_ = value;
                     }
-                    onChanged();
                 } else {
                     endpointIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -54704,13 +52603,13 @@ public final class ContextOuterClass {
              * .context.EndPointId endpoint_id = 1;
              */
             public Builder clearEndpointId() {
-                if (endpointIdBuilder_ == null) {
-                    endpointId_ = null;
-                    onChanged();
-                } else {
-                    endpointId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
                     endpointIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -54718,6 +52617,7 @@ public final class ContextOuterClass {
              * .context.EndPointId endpoint_id = 1;
              */
             public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEndpointIdFieldBuilder().getBuilder();
             }
@@ -54787,6 +52687,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 name_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -54797,6 +52698,7 @@ public final class ContextOuterClass {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -54812,6 +52714,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -54859,6 +52762,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 endpointType_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -54869,6 +52773,7 @@ public final class ContextOuterClass {
              */
             public Builder clearEndpointType() {
                 endpointType_ = getDefaultInstance().getEndpointType();
+                bitField0_ = (bitField0_ & ~0x00000004);
                 onChanged();
                 return this;
             }
@@ -54884,6 +52789,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 endpointType_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -54891,9 +52797,9 @@ public final class ContextOuterClass {
             private java.util.List kpiSampleTypes_ = java.util.Collections.emptyList();
 
             private void ensureKpiSampleTypesIsMutable() {
-                if (!((bitField0_ & 0x00000001) != 0)) {
+                if (!((bitField0_ & 0x00000008) != 0)) {
                     kpiSampleTypes_ = new java.util.ArrayList(kpiSampleTypes_);
-                    bitField0_ |= 0x00000001;
+                    bitField0_ |= 0x00000008;
                 }
             }
 
@@ -54973,7 +52879,7 @@ public final class ContextOuterClass {
              */
             public Builder clearKpiSampleTypes() {
                 kpiSampleTypes_ = java.util.Collections.emptyList();
-                bitField0_ = (bitField0_ & ~0x00000001);
+                bitField0_ = (bitField0_ & ~0x00000008);
                 onChanged();
                 return this;
             }
@@ -54997,8 +52903,8 @@ public final class ContextOuterClass {
 
             /**
              * repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;
-             * @param index The index of the value to return.
-             * @return The enum numeric value on the wire of kpiSampleTypes at the given index.
+             * @param index The index to set the value at.
+             * @param value The enum numeric value on the wire for kpiSampleTypes to set.
              * @return This builder for chaining.
              */
             public Builder setKpiSampleTypesValue(int index, int value) {
@@ -55043,7 +52949,7 @@ public final class ContextOuterClass {
              * @return Whether the endpointLocation field is set.
              */
             public boolean hasEndpointLocation() {
-                return endpointLocationBuilder_ != null || endpointLocation_ != null;
+                return ((bitField0_ & 0x00000010) != 0);
             }
 
             /**
@@ -55067,10 +52973,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     endpointLocation_ = value;
-                    onChanged();
                 } else {
                     endpointLocationBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -55080,10 +52987,11 @@ public final class ContextOuterClass {
             public Builder setEndpointLocation(context.ContextOuterClass.Location.Builder builderForValue) {
                 if (endpointLocationBuilder_ == null) {
                     endpointLocation_ = builderForValue.build();
-                    onChanged();
                 } else {
                     endpointLocationBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -55092,15 +53000,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeEndpointLocation(context.ContextOuterClass.Location value) {
                 if (endpointLocationBuilder_ == null) {
-                    if (endpointLocation_ != null) {
-                        endpointLocation_ = context.ContextOuterClass.Location.newBuilder(endpointLocation_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000010) != 0) && endpointLocation_ != null && endpointLocation_ != context.ContextOuterClass.Location.getDefaultInstance()) {
+                        getEndpointLocationBuilder().mergeFrom(value);
                     } else {
                         endpointLocation_ = value;
                     }
-                    onChanged();
                 } else {
                     endpointLocationBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -55108,13 +53017,13 @@ public final class ContextOuterClass {
              * .context.Location endpoint_location = 5;
              */
             public Builder clearEndpointLocation() {
-                if (endpointLocationBuilder_ == null) {
-                    endpointLocation_ = null;
-                    onChanged();
-                } else {
-                    endpointLocation_ = null;
+                bitField0_ = (bitField0_ & ~0x00000010);
+                endpointLocation_ = null;
+                if (endpointLocationBuilder_ != null) {
+                    endpointLocationBuilder_.dispose();
                     endpointLocationBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -55122,6 +53031,7 @@ public final class ContextOuterClass {
              * .context.Location endpoint_location = 5;
              */
             public context.ContextOuterClass.Location.Builder getEndpointLocationBuilder() {
+                bitField0_ |= 0x00000010;
                 onChanged();
                 return getEndpointLocationFieldBuilder().getBuilder();
             }
@@ -55175,7 +53085,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public EndPoint parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new EndPoint(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -55276,75 +53196,6 @@ public final class ContextOuterClass {
             return new EndPointName();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private EndPointName(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.EndPointId.Builder subBuilder = null;
-                                if (endpointId_ != null) {
-                                    subBuilder = endpointId_.toBuilder();
-                                }
-                                endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(endpointId_);
-                                    endpointId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                deviceName_ = s;
-                                break;
-                            }
-                        case 26:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                endpointName_ = s;
-                                break;
-                            }
-                        case 34:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                endpointType_ = s;
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_EndPointName_descriptor;
         }
@@ -55381,12 +53232,13 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-            return getEndpointId();
+            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
         }
 
         public static final int DEVICE_NAME_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object deviceName_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object deviceName_ = "";
 
         /**
          * string device_name = 2;
@@ -55423,7 +53275,8 @@ public final class ContextOuterClass {
 
         public static final int ENDPOINT_NAME_FIELD_NUMBER = 3;
 
-        private volatile java.lang.Object endpointName_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object endpointName_ = "";
 
         /**
          * string endpoint_name = 3;
@@ -55460,7 +53313,8 @@ public final class ContextOuterClass {
 
         public static final int ENDPOINT_TYPE_FIELD_NUMBER = 4;
 
-        private volatile java.lang.Object endpointType_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object endpointType_ = "";
 
         /**
          * string endpoint_type = 4;
@@ -55513,16 +53367,16 @@ public final class ContextOuterClass {
             if (endpointId_ != null) {
                 output.writeMessage(1, getEndpointId());
             }
-            if (!getDeviceNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(deviceName_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, deviceName_);
             }
-            if (!getEndpointNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointName_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 3, endpointName_);
             }
-            if (!getEndpointTypeBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointType_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 4, endpointType_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -55534,16 +53388,16 @@ public final class ContextOuterClass {
             if (endpointId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEndpointId());
             }
-            if (!getDeviceNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(deviceName_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, deviceName_);
             }
-            if (!getEndpointNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointName_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, endpointName_);
             }
-            if (!getEndpointTypeBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointType_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, endpointType_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -55569,7 +53423,7 @@ public final class ContextOuterClass {
                 return false;
             if (!getEndpointType().equals(other.getEndpointType()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -55591,7 +53445,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + getEndpointName().hashCode();
             hash = (37 * hash) + ENDPOINT_TYPE_FIELD_NUMBER;
             hash = (53 * hash) + getEndpointType().hashCode();
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -55685,26 +53539,19 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.EndPointName.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (endpointIdBuilder_ == null) {
-                    endpointId_ = null;
-                } else {
-                    endpointId_ = null;
+                bitField0_ = 0;
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
                     endpointIdBuilder_ = null;
                 }
                 deviceName_ = "";
@@ -55735,46 +53582,27 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.EndPointName buildPartial() {
                 context.ContextOuterClass.EndPointName result = new context.ContextOuterClass.EndPointName(this);
-                if (endpointIdBuilder_ == null) {
-                    result.endpointId_ = endpointId_;
-                } else {
-                    result.endpointId_ = endpointIdBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.deviceName_ = deviceName_;
-                result.endpointName_ = endpointName_;
-                result.endpointType_ = endpointType_;
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.EndPointName result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.deviceName_ = deviceName_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.endpointName_ = endpointName_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.endpointType_ = endpointType_;
+                }
             }
 
             @java.lang.Override
@@ -55795,17 +53623,20 @@ public final class ContextOuterClass {
                 }
                 if (!other.getDeviceName().isEmpty()) {
                     deviceName_ = other.deviceName_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (!other.getEndpointName().isEmpty()) {
                     endpointName_ = other.endpointName_;
+                    bitField0_ |= 0x00000004;
                     onChanged();
                 }
                 if (!other.getEndpointType().isEmpty()) {
                     endpointType_ = other.endpointType_;
+                    bitField0_ |= 0x00000008;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -55817,20 +53648,68 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.EndPointName parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    deviceName_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    endpointName_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    endpointType_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 34
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.EndPointName) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.EndPointId endpointId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 endpointIdBuilder_;
@@ -55840,7 +53719,7 @@ public final class ContextOuterClass {
              * @return Whether the endpointId field is set.
              */
             public boolean hasEndpointId() {
-                return endpointIdBuilder_ != null || endpointId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -55864,10 +53743,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     endpointId_ = value;
-                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -55877,10 +53757,11 @@ public final class ContextOuterClass {
             public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                 if (endpointIdBuilder_ == null) {
                     endpointId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -55889,15 +53770,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
                 if (endpointIdBuilder_ == null) {
-                    if (endpointId_ != null) {
-                        endpointId_ = context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
+                        getEndpointIdBuilder().mergeFrom(value);
                     } else {
                         endpointId_ = value;
                     }
-                    onChanged();
                 } else {
                     endpointIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -55905,13 +53787,13 @@ public final class ContextOuterClass {
              * .context.EndPointId endpoint_id = 1;
              */
             public Builder clearEndpointId() {
-                if (endpointIdBuilder_ == null) {
-                    endpointId_ = null;
-                    onChanged();
-                } else {
-                    endpointId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
                     endpointIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -55919,6 +53801,7 @@ public final class ContextOuterClass {
              * .context.EndPointId endpoint_id = 1;
              */
             public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEndpointIdFieldBuilder().getBuilder();
             }
@@ -55988,6 +53871,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 deviceName_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -55998,6 +53882,7 @@ public final class ContextOuterClass {
              */
             public Builder clearDeviceName() {
                 deviceName_ = getDefaultInstance().getDeviceName();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -56013,6 +53898,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 deviceName_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -56060,6 +53946,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 endpointName_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -56070,6 +53957,7 @@ public final class ContextOuterClass {
              */
             public Builder clearEndpointName() {
                 endpointName_ = getDefaultInstance().getEndpointName();
+                bitField0_ = (bitField0_ & ~0x00000004);
                 onChanged();
                 return this;
             }
@@ -56085,6 +53973,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 endpointName_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -56132,6 +54021,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 endpointType_ = value;
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -56142,6 +54032,7 @@ public final class ContextOuterClass {
              */
             public Builder clearEndpointType() {
                 endpointType_ = getDefaultInstance().getEndpointType();
+                bitField0_ = (bitField0_ & ~0x00000008);
                 onChanged();
                 return this;
             }
@@ -56157,6 +54048,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 endpointType_ = value;
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -56188,7 +54080,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public EndPointName parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new EndPointName(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -56259,57 +54161,6 @@ public final class ContextOuterClass {
             return new EndPointIdList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private EndPointIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    endpointIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                endpointIds_.add(input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_EndPointIdList_descriptor;
         }
@@ -56321,6 +54172,7 @@ public final class ContextOuterClass {
 
         public static final int ENDPOINT_IDS_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List endpointIds_;
 
         /**
@@ -56381,7 +54233,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < endpointIds_.size(); i++) {
                 output.writeMessage(1, endpointIds_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -56393,7 +54245,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < endpointIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, endpointIds_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -56409,7 +54261,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.EndPointIdList other = (context.ContextOuterClass.EndPointIdList) obj;
             if (!getEndpointIdsList().equals(other.getEndpointIdsList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -56425,7 +54277,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + ENDPOINT_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getEndpointIdsList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -56519,29 +54371,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.EndPointIdList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getEndpointIdsFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (endpointIdsBuilder_ == null) {
                     endpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    endpointIds_ = null;
                     endpointIdsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -56567,7 +54413,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.EndPointIdList buildPartial() {
                 context.ContextOuterClass.EndPointIdList result = new context.ContextOuterClass.EndPointIdList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.EndPointIdList result) {
                 if (endpointIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
@@ -56577,38 +54431,10 @@ public final class ContextOuterClass {
                 } else {
                     result.endpointIds_ = endpointIdsBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
             }
 
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.EndPointIdList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -56648,7 +54474,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -56660,17 +54486,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.EndPointIdList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                    if (endpointIdsBuilder_ == null) {
+                                        ensureEndpointIdsIsMutable();
+                                        endpointIds_.add(m);
+                                    } else {
+                                        endpointIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.EndPointIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -56940,7 +54796,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public EndPointIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new EndPointIdList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -57011,57 +54877,6 @@ public final class ContextOuterClass {
             return new EndPointNameList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private EndPointNameList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    endpointNames_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                endpointNames_.add(input.readMessage(context.ContextOuterClass.EndPointName.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    endpointNames_ = java.util.Collections.unmodifiableList(endpointNames_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_EndPointNameList_descriptor;
         }
@@ -57073,6 +54888,7 @@ public final class ContextOuterClass {
 
         public static final int ENDPOINT_NAMES_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List endpointNames_;
 
         /**
@@ -57133,7 +54949,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < endpointNames_.size(); i++) {
                 output.writeMessage(1, endpointNames_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -57145,7 +54961,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < endpointNames_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, endpointNames_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -57161,7 +54977,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.EndPointNameList other = (context.ContextOuterClass.EndPointNameList) obj;
             if (!getEndpointNamesList().equals(other.getEndpointNamesList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -57177,7 +54993,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + ENDPOINT_NAMES_FIELD_NUMBER;
                 hash = (53 * hash) + getEndpointNamesList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -57271,29 +55087,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.EndPointNameList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getEndpointNamesFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (endpointNamesBuilder_ == null) {
                     endpointNames_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    endpointNames_ = null;
                     endpointNamesBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -57319,7 +55129,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.EndPointNameList buildPartial() {
                 context.ContextOuterClass.EndPointNameList result = new context.ContextOuterClass.EndPointNameList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.EndPointNameList result) {
                 if (endpointNamesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         endpointNames_ = java.util.Collections.unmodifiableList(endpointNames_);
@@ -57329,38 +55147,10 @@ public final class ContextOuterClass {
                 } else {
                     result.endpointNames_ = endpointNamesBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
             }
 
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.EndPointNameList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -57400,7 +55190,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -57412,17 +55202,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.EndPointNameList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.EndPointName m = input.readMessage(context.ContextOuterClass.EndPointName.parser(), extensionRegistry);
+                                    if (endpointNamesBuilder_ == null) {
+                                        ensureEndpointNamesIsMutable();
+                                        endpointNames_.add(m);
+                                    } else {
+                                        endpointNamesBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.EndPointNameList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -57692,7 +55512,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public EndPointNameList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new EndPointNameList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -57763,56 +55593,6 @@ public final class ContextOuterClass {
             return new ConfigRule_Custom();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ConfigRule_Custom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                resourceKey_ = s;
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                resourceValue_ = s;
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConfigRule_Custom_descriptor;
         }
@@ -57824,7 +55604,8 @@ public final class ContextOuterClass {
 
         public static final int RESOURCE_KEY_FIELD_NUMBER = 1;
 
-        private volatile java.lang.Object resourceKey_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object resourceKey_ = "";
 
         /**
          * string resource_key = 1;
@@ -57861,7 +55642,8 @@ public final class ContextOuterClass {
 
         public static final int RESOURCE_VALUE_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object resourceValue_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object resourceValue_ = "";
 
         /**
          * string resource_value = 2;
@@ -57911,13 +55693,13 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (!getResourceKeyBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resourceKey_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, resourceKey_);
             }
-            if (!getResourceValueBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resourceValue_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, resourceValue_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -57926,13 +55708,13 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (!getResourceKeyBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resourceKey_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, resourceKey_);
             }
-            if (!getResourceValueBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resourceValue_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, resourceValue_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -57950,7 +55732,7 @@ public final class ContextOuterClass {
                 return false;
             if (!getResourceValue().equals(other.getResourceValue()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -57966,7 +55748,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + getResourceKey().hashCode();
             hash = (37 * hash) + RESOURCE_VALUE_FIELD_NUMBER;
             hash = (53 * hash) + getResourceValue().hashCode();
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -58060,22 +55842,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConfigRule_Custom.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 resourceKey_ = "";
                 resourceValue_ = "";
                 return this;
@@ -58103,40 +55879,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConfigRule_Custom buildPartial() {
                 context.ContextOuterClass.ConfigRule_Custom result = new context.ContextOuterClass.ConfigRule_Custom(this);
-                result.resourceKey_ = resourceKey_;
-                result.resourceValue_ = resourceValue_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ConfigRule_Custom result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.resourceKey_ = resourceKey_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.resourceValue_ = resourceValue_;
+                }
             }
 
             @java.lang.Override
@@ -58154,13 +55911,15 @@ public final class ContextOuterClass {
                     return this;
                 if (!other.getResourceKey().isEmpty()) {
                     resourceKey_ = other.resourceKey_;
+                    bitField0_ |= 0x00000001;
                     onChanged();
                 }
                 if (!other.getResourceValue().isEmpty()) {
                     resourceValue_ = other.resourceValue_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -58172,20 +55931,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ConfigRule_Custom parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    resourceKey_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    resourceValue_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ConfigRule_Custom) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private java.lang.Object resourceKey_ = "";
 
             /**
@@ -58229,6 +56022,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 resourceKey_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -58239,6 +56033,7 @@ public final class ContextOuterClass {
              */
             public Builder clearResourceKey() {
                 resourceKey_ = getDefaultInstance().getResourceKey();
+                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -58254,6 +56049,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 resourceKey_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -58301,6 +56097,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 resourceValue_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -58311,6 +56108,7 @@ public final class ContextOuterClass {
              */
             public Builder clearResourceValue() {
                 resourceValue_ = getDefaultInstance().getResourceValue();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -58326,6 +56124,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 resourceValue_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -58357,7 +56156,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConfigRule_Custom parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ConfigRule_Custom(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -58436,70 +56245,6 @@ public final class ContextOuterClass {
             return new ConfigRule_ACL();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ConfigRule_ACL(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.EndPointId.Builder subBuilder = null;
-                                if (endpointId_ != null) {
-                                    subBuilder = endpointId_.toBuilder();
-                                }
-                                endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(endpointId_);
-                                    endpointId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                acl.Acl.AclRuleSet.Builder subBuilder = null;
-                                if (ruleSet_ != null) {
-                                    subBuilder = ruleSet_.toBuilder();
-                                }
-                                ruleSet_ = input.readMessage(acl.Acl.AclRuleSet.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(ruleSet_);
-                                    ruleSet_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConfigRule_ACL_descriptor;
         }
@@ -58536,7 +56281,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-            return getEndpointId();
+            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
         }
 
         public static final int RULE_SET_FIELD_NUMBER = 2;
@@ -58566,7 +56311,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public acl.Acl.AclRuleSetOrBuilder getRuleSetOrBuilder() {
-            return getRuleSet();
+            return ruleSet_ == null ? acl.Acl.AclRuleSet.getDefaultInstance() : ruleSet_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -58590,7 +56335,7 @@ public final class ContextOuterClass {
             if (ruleSet_ != null) {
                 output.writeMessage(2, getRuleSet());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -58605,7 +56350,7 @@ public final class ContextOuterClass {
             if (ruleSet_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getRuleSet());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -58631,7 +56376,7 @@ public final class ContextOuterClass {
                 if (!getRuleSet().equals(other.getRuleSet()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -58651,7 +56396,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + RULE_SET_FIELD_NUMBER;
                 hash = (53 * hash) + getRuleSet().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -58745,32 +56490,24 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConfigRule_ACL.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (endpointIdBuilder_ == null) {
-                    endpointId_ = null;
-                } else {
-                    endpointId_ = null;
+                bitField0_ = 0;
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
                     endpointIdBuilder_ = null;
                 }
-                if (ruleSetBuilder_ == null) {
-                    ruleSet_ = null;
-                } else {
-                    ruleSet_ = null;
+                ruleSet_ = null;
+                if (ruleSetBuilder_ != null) {
+                    ruleSetBuilder_.dispose();
                     ruleSetBuilder_ = null;
                 }
                 return this;
@@ -58798,48 +56535,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConfigRule_ACL buildPartial() {
                 context.ContextOuterClass.ConfigRule_ACL result = new context.ContextOuterClass.ConfigRule_ACL(this);
-                if (endpointIdBuilder_ == null) {
-                    result.endpointId_ = endpointId_;
-                } else {
-                    result.endpointId_ = endpointIdBuilder_.build();
-                }
-                if (ruleSetBuilder_ == null) {
-                    result.ruleSet_ = ruleSet_;
-                } else {
-                    result.ruleSet_ = ruleSetBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ConfigRule_ACL result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.ruleSet_ = ruleSetBuilder_ == null ? ruleSet_ : ruleSetBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -58861,7 +56571,7 @@ public final class ContextOuterClass {
                 if (other.hasRuleSet()) {
                     mergeRuleSet(other.getRuleSet());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -58873,20 +56583,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ConfigRule_ACL parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getRuleSetFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ConfigRule_ACL) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.EndPointId endpointId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 endpointIdBuilder_;
@@ -58896,7 +56640,7 @@ public final class ContextOuterClass {
              * @return Whether the endpointId field is set.
              */
             public boolean hasEndpointId() {
-                return endpointIdBuilder_ != null || endpointId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -58920,10 +56664,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     endpointId_ = value;
-                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -58933,10 +56678,11 @@ public final class ContextOuterClass {
             public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                 if (endpointIdBuilder_ == null) {
                     endpointId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -58945,15 +56691,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
                 if (endpointIdBuilder_ == null) {
-                    if (endpointId_ != null) {
-                        endpointId_ = context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
+                        getEndpointIdBuilder().mergeFrom(value);
                     } else {
                         endpointId_ = value;
                     }
-                    onChanged();
                 } else {
                     endpointIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -58961,13 +56708,13 @@ public final class ContextOuterClass {
              * .context.EndPointId endpoint_id = 1;
              */
             public Builder clearEndpointId() {
-                if (endpointIdBuilder_ == null) {
-                    endpointId_ = null;
-                    onChanged();
-                } else {
-                    endpointId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
                     endpointIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -58975,6 +56722,7 @@ public final class ContextOuterClass {
              * .context.EndPointId endpoint_id = 1;
              */
             public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEndpointIdFieldBuilder().getBuilder();
             }
@@ -59010,7 +56758,7 @@ public final class ContextOuterClass {
              * @return Whether the ruleSet field is set.
              */
             public boolean hasRuleSet() {
-                return ruleSetBuilder_ != null || ruleSet_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -59034,10 +56782,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     ruleSet_ = value;
-                    onChanged();
                 } else {
                     ruleSetBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -59047,10 +56796,11 @@ public final class ContextOuterClass {
             public Builder setRuleSet(acl.Acl.AclRuleSet.Builder builderForValue) {
                 if (ruleSetBuilder_ == null) {
                     ruleSet_ = builderForValue.build();
-                    onChanged();
                 } else {
                     ruleSetBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -59059,15 +56809,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeRuleSet(acl.Acl.AclRuleSet value) {
                 if (ruleSetBuilder_ == null) {
-                    if (ruleSet_ != null) {
-                        ruleSet_ = acl.Acl.AclRuleSet.newBuilder(ruleSet_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && ruleSet_ != null && ruleSet_ != acl.Acl.AclRuleSet.getDefaultInstance()) {
+                        getRuleSetBuilder().mergeFrom(value);
                     } else {
                         ruleSet_ = value;
                     }
-                    onChanged();
                 } else {
                     ruleSetBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -59075,13 +56826,13 @@ public final class ContextOuterClass {
              * .acl.AclRuleSet rule_set = 2;
              */
             public Builder clearRuleSet() {
-                if (ruleSetBuilder_ == null) {
-                    ruleSet_ = null;
-                    onChanged();
-                } else {
-                    ruleSet_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                ruleSet_ = null;
+                if (ruleSetBuilder_ != null) {
+                    ruleSetBuilder_.dispose();
                     ruleSetBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -59089,6 +56840,7 @@ public final class ContextOuterClass {
              * .acl.AclRuleSet rule_set = 2;
              */
             public acl.Acl.AclRuleSet.Builder getRuleSetBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getRuleSetFieldBuilder().getBuilder();
             }
@@ -59142,7 +56894,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConfigRule_ACL parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ConfigRule_ACL(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -59210,7 +56972,7 @@ public final class ContextOuterClass {
          */
         context.ContextOuterClass.ConfigRule_ACLOrBuilder getAclOrBuilder();
 
-        public context.ContextOuterClass.ConfigRule.ConfigRuleCase getConfigRuleCase();
+        context.ContextOuterClass.ConfigRule.ConfigRuleCase getConfigRuleCase();
     }
 
     /**
@@ -59236,78 +56998,6 @@ public final class ContextOuterClass {
             return new ConfigRule();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ConfigRule(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 8:
-                            {
-                                int rawValue = input.readEnum();
-                                action_ = rawValue;
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.ConfigRule_Custom.Builder subBuilder = null;
-                                if (configRuleCase_ == 2) {
-                                    subBuilder = ((context.ContextOuterClass.ConfigRule_Custom) configRule_).toBuilder();
-                                }
-                                configRule_ = input.readMessage(context.ContextOuterClass.ConfigRule_Custom.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom((context.ContextOuterClass.ConfigRule_Custom) configRule_);
-                                    configRule_ = subBuilder.buildPartial();
-                                }
-                                configRuleCase_ = 2;
-                                break;
-                            }
-                        case 26:
-                            {
-                                context.ContextOuterClass.ConfigRule_ACL.Builder subBuilder = null;
-                                if (configRuleCase_ == 3) {
-                                    subBuilder = ((context.ContextOuterClass.ConfigRule_ACL) configRule_).toBuilder();
-                                }
-                                configRule_ = input.readMessage(context.ContextOuterClass.ConfigRule_ACL.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom((context.ContextOuterClass.ConfigRule_ACL) configRule_);
-                                    configRule_ = subBuilder.buildPartial();
-                                }
-                                configRuleCase_ = 3;
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConfigRule_descriptor;
         }
@@ -59319,6 +57009,7 @@ public final class ContextOuterClass {
 
         private int configRuleCase_ = 0;
 
+        @SuppressWarnings("serial")
         private java.lang.Object configRule_;
 
         public enum ConfigRuleCase implements com.google.protobuf.Internal.EnumLite, com.google.protobuf.AbstractMessage.InternalOneOfEnum {
@@ -59365,7 +57056,7 @@ public final class ContextOuterClass {
 
         public static final int ACTION_FIELD_NUMBER = 1;
 
-        private int action_;
+        private int action_ = 0;
 
         /**
          * .context.ConfigActionEnum action = 1;
@@ -59382,8 +57073,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConfigActionEnum getAction() {
-            @SuppressWarnings("deprecation")
-            context.ContextOuterClass.ConfigActionEnum result = context.ContextOuterClass.ConfigActionEnum.valueOf(action_);
+            context.ContextOuterClass.ConfigActionEnum result = context.ContextOuterClass.ConfigActionEnum.forNumber(action_);
             return result == null ? context.ContextOuterClass.ConfigActionEnum.UNRECOGNIZED : result;
         }
 
@@ -59479,7 +57169,7 @@ public final class ContextOuterClass {
             if (configRuleCase_ == 3) {
                 output.writeMessage(3, (context.ContextOuterClass.ConfigRule_ACL) configRule_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -59497,7 +57187,7 @@ public final class ContextOuterClass {
             if (configRuleCase_ == 3) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, (context.ContextOuterClass.ConfigRule_ACL) configRule_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -59527,7 +57217,7 @@ public final class ContextOuterClass {
                 case 0:
                 default:
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -59553,7 +57243,7 @@ public final class ContextOuterClass {
                 case 0:
                 default:
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -59647,23 +57337,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConfigRule.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 action_ = 0;
+                if (customBuilder_ != null) {
+                    customBuilder_.clear();
+                }
+                if (aclBuilder_ != null) {
+                    aclBuilder_.clear();
+                }
                 configRuleCase_ = 0;
                 configRule_ = null;
                 return this;
@@ -59691,54 +57381,30 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConfigRule buildPartial() {
                 context.ContextOuterClass.ConfigRule result = new context.ContextOuterClass.ConfigRule(this);
-                result.action_ = action_;
-                if (configRuleCase_ == 2) {
-                    if (customBuilder_ == null) {
-                        result.configRule_ = configRule_;
-                    } else {
-                        result.configRule_ = customBuilder_.build();
-                    }
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                if (configRuleCase_ == 3) {
-                    if (aclBuilder_ == null) {
-                        result.configRule_ = configRule_;
-                    } else {
-                        result.configRule_ = aclBuilder_.build();
-                    }
-                }
-                result.configRuleCase_ = configRuleCase_;
+                buildPartialOneofs(result);
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
+            private void buildPartial0(context.ContextOuterClass.ConfigRule result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.action_ = action_;
+                }
             }
 
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartialOneofs(context.ContextOuterClass.ConfigRule result) {
+                result.configRuleCase_ = configRuleCase_;
+                result.configRule_ = this.configRule_;
+                if (configRuleCase_ == 2 && customBuilder_ != null) {
+                    result.configRule_ = customBuilder_.build();
+                }
+                if (configRuleCase_ == 3 && aclBuilder_ != null) {
+                    result.configRule_ = aclBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -59773,7 +57439,7 @@ public final class ContextOuterClass {
                             break;
                         }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -59785,17 +57451,56 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ConfigRule parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 8:
+                                {
+                                    action_ = input.readEnum();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 8
+                            case 18:
+                                {
+                                    input.readMessage(getCustomFieldBuilder().getBuilder(), extensionRegistry);
+                                    configRuleCase_ = 2;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    input.readMessage(getAclFieldBuilder().getBuilder(), extensionRegistry);
+                                    configRuleCase_ = 3;
+                                    break;
+                                }
+                            // case 26
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ConfigRule) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -59814,6 +57519,8 @@ public final class ContextOuterClass {
                 return this;
             }
 
+            private int bitField0_;
+
             private int action_ = 0;
 
             /**
@@ -59832,6 +57539,7 @@ public final class ContextOuterClass {
              */
             public Builder setActionValue(int value) {
                 action_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -59842,8 +57550,7 @@ public final class ContextOuterClass {
              */
             @java.lang.Override
             public context.ContextOuterClass.ConfigActionEnum getAction() {
-                @SuppressWarnings("deprecation")
-                context.ContextOuterClass.ConfigActionEnum result = context.ContextOuterClass.ConfigActionEnum.valueOf(action_);
+                context.ContextOuterClass.ConfigActionEnum result = context.ContextOuterClass.ConfigActionEnum.forNumber(action_);
                 return result == null ? context.ContextOuterClass.ConfigActionEnum.UNRECOGNIZED : result;
             }
 
@@ -59856,6 +57563,7 @@ public final class ContextOuterClass {
                 if (value == null) {
                     throw new NullPointerException();
                 }
+                bitField0_ |= 0x00000001;
                 action_ = value.getNumber();
                 onChanged();
                 return this;
@@ -59866,6 +57574,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearAction() {
+                bitField0_ = (bitField0_ & ~0x00000001);
                 action_ = 0;
                 onChanged();
                 return this;
@@ -59946,8 +57655,9 @@ public final class ContextOuterClass {
                 } else {
                     if (configRuleCase_ == 2) {
                         customBuilder_.mergeFrom(value);
+                    } else {
+                        customBuilder_.setMessage(value);
                     }
-                    customBuilder_.setMessage(value);
                 }
                 configRuleCase_ = 2;
                 return this;
@@ -60008,7 +57718,6 @@ public final class ContextOuterClass {
                 }
                 configRuleCase_ = 2;
                 onChanged();
-                ;
                 return customBuilder_;
             }
 
@@ -60087,8 +57796,9 @@ public final class ContextOuterClass {
                 } else {
                     if (configRuleCase_ == 3) {
                         aclBuilder_.mergeFrom(value);
+                    } else {
+                        aclBuilder_.setMessage(value);
                     }
-                    aclBuilder_.setMessage(value);
                 }
                 configRuleCase_ = 3;
                 return this;
@@ -60149,7 +57859,6 @@ public final class ContextOuterClass {
                 }
                 configRuleCase_ = 3;
                 onChanged();
-                ;
                 return aclBuilder_;
             }
 
@@ -60180,7 +57889,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConfigRule parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ConfigRule(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -60251,56 +57970,6 @@ public final class ContextOuterClass {
             return new Constraint_Custom();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Constraint_Custom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                constraintType_ = s;
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                constraintValue_ = s;
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_Custom_descriptor;
         }
@@ -60312,7 +57981,8 @@ public final class ContextOuterClass {
 
         public static final int CONSTRAINT_TYPE_FIELD_NUMBER = 1;
 
-        private volatile java.lang.Object constraintType_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object constraintType_ = "";
 
         /**
          * string constraint_type = 1;
@@ -60349,7 +58019,8 @@ public final class ContextOuterClass {
 
         public static final int CONSTRAINT_VALUE_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object constraintValue_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object constraintValue_ = "";
 
         /**
          * string constraint_value = 2;
@@ -60399,13 +58070,13 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (!getConstraintTypeBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(constraintType_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, constraintType_);
             }
-            if (!getConstraintValueBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(constraintValue_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, constraintValue_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -60414,13 +58085,13 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (!getConstraintTypeBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(constraintType_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, constraintType_);
             }
-            if (!getConstraintValueBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(constraintValue_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, constraintValue_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -60438,7 +58109,7 @@ public final class ContextOuterClass {
                 return false;
             if (!getConstraintValue().equals(other.getConstraintValue()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -60454,7 +58125,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + getConstraintType().hashCode();
             hash = (37 * hash) + CONSTRAINT_VALUE_FIELD_NUMBER;
             hash = (53 * hash) + getConstraintValue().hashCode();
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -60548,22 +58219,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_Custom.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 constraintType_ = "";
                 constraintValue_ = "";
                 return this;
@@ -60591,40 +58256,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_Custom buildPartial() {
                 context.ContextOuterClass.Constraint_Custom result = new context.ContextOuterClass.Constraint_Custom(this);
-                result.constraintType_ = constraintType_;
-                result.constraintValue_ = constraintValue_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.Constraint_Custom result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.constraintType_ = constraintType_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.constraintValue_ = constraintValue_;
+                }
             }
 
             @java.lang.Override
@@ -60642,13 +58288,15 @@ public final class ContextOuterClass {
                     return this;
                 if (!other.getConstraintType().isEmpty()) {
                     constraintType_ = other.constraintType_;
+                    bitField0_ |= 0x00000001;
                     onChanged();
                 }
                 if (!other.getConstraintValue().isEmpty()) {
                     constraintValue_ = other.constraintValue_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -60660,20 +58308,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Constraint_Custom parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    constraintType_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    constraintValue_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Constraint_Custom) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private java.lang.Object constraintType_ = "";
 
             /**
@@ -60717,6 +58399,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 constraintType_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -60727,6 +58410,7 @@ public final class ContextOuterClass {
              */
             public Builder clearConstraintType() {
                 constraintType_ = getDefaultInstance().getConstraintType();
+                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -60742,6 +58426,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 constraintType_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -60789,6 +58474,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 constraintValue_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -60799,6 +58485,7 @@ public final class ContextOuterClass {
              */
             public Builder clearConstraintValue() {
                 constraintValue_ = getDefaultInstance().getConstraintValue();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -60814,6 +58501,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 constraintValue_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -60845,7 +58533,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_Custom parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Constraint_Custom(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -60902,54 +58600,6 @@ public final class ContextOuterClass {
             return new Constraint_Schedule();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Constraint_Schedule(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 13:
-                            {
-                                startTimestamp_ = input.readFloat();
-                                break;
-                            }
-                        case 21:
-                            {
-                                durationDays_ = input.readFloat();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_Schedule_descriptor;
         }
@@ -60961,7 +58611,7 @@ public final class ContextOuterClass {
 
         public static final int START_TIMESTAMP_FIELD_NUMBER = 1;
 
-        private float startTimestamp_;
+        private float startTimestamp_ = 0F;
 
         /**
          * float start_timestamp = 1;
@@ -60974,7 +58624,7 @@ public final class ContextOuterClass {
 
         public static final int DURATION_DAYS_FIELD_NUMBER = 2;
 
-        private float durationDays_;
+        private float durationDays_ = 0F;
 
         /**
          * float duration_days = 2;
@@ -61000,13 +58650,13 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (startTimestamp_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(startTimestamp_) != 0) {
                 output.writeFloat(1, startTimestamp_);
             }
-            if (durationDays_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(durationDays_) != 0) {
                 output.writeFloat(2, durationDays_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -61015,13 +58665,13 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (startTimestamp_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(startTimestamp_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, startTimestamp_);
             }
-            if (durationDays_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(durationDays_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, durationDays_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -61039,7 +58689,7 @@ public final class ContextOuterClass {
                 return false;
             if (java.lang.Float.floatToIntBits(getDurationDays()) != java.lang.Float.floatToIntBits(other.getDurationDays()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -61055,7 +58705,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getStartTimestamp());
             hash = (37 * hash) + DURATION_DAYS_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getDurationDays());
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -61149,22 +58799,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_Schedule.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 startTimestamp_ = 0F;
                 durationDays_ = 0F;
                 return this;
@@ -61192,40 +58836,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_Schedule buildPartial() {
                 context.ContextOuterClass.Constraint_Schedule result = new context.ContextOuterClass.Constraint_Schedule(this);
-                result.startTimestamp_ = startTimestamp_;
-                result.durationDays_ = durationDays_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.Constraint_Schedule result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.startTimestamp_ = startTimestamp_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.durationDays_ = durationDays_;
+                }
             }
 
             @java.lang.Override
@@ -61247,7 +58872,7 @@ public final class ContextOuterClass {
                 if (other.getDurationDays() != 0F) {
                     setDurationDays(other.getDurationDays());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -61259,20 +58884,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Constraint_Schedule parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 13:
+                                {
+                                    startTimestamp_ = input.readFloat();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 13
+                            case 21:
+                                {
+                                    durationDays_ = input.readFloat();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 21
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Constraint_Schedule) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private float startTimestamp_;
 
             /**
@@ -61291,6 +58950,7 @@ public final class ContextOuterClass {
              */
             public Builder setStartTimestamp(float value) {
                 startTimestamp_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -61300,6 +58960,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearStartTimestamp() {
+                bitField0_ = (bitField0_ & ~0x00000001);
                 startTimestamp_ = 0F;
                 onChanged();
                 return this;
@@ -61323,6 +58984,7 @@ public final class ContextOuterClass {
              */
             public Builder setDurationDays(float value) {
                 durationDays_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -61332,6 +58994,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearDurationDays() {
+                bitField0_ = (bitField0_ & ~0x00000002);
                 durationDays_ = 0F;
                 onChanged();
                 return this;
@@ -61364,7 +59027,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_Schedule parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Constraint_Schedule(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -61421,54 +59094,6 @@ public final class ContextOuterClass {
             return new GPS_Position();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private GPS_Position(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 13:
-                            {
-                                latitude_ = input.readFloat();
-                                break;
-                            }
-                        case 21:
-                            {
-                                longitude_ = input.readFloat();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_GPS_Position_descriptor;
         }
@@ -61480,7 +59105,7 @@ public final class ContextOuterClass {
 
         public static final int LATITUDE_FIELD_NUMBER = 1;
 
-        private float latitude_;
+        private float latitude_ = 0F;
 
         /**
          * float latitude = 1;
@@ -61493,7 +59118,7 @@ public final class ContextOuterClass {
 
         public static final int LONGITUDE_FIELD_NUMBER = 2;
 
-        private float longitude_;
+        private float longitude_ = 0F;
 
         /**
          * float longitude = 2;
@@ -61519,13 +59144,13 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (latitude_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(latitude_) != 0) {
                 output.writeFloat(1, latitude_);
             }
-            if (longitude_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(longitude_) != 0) {
                 output.writeFloat(2, longitude_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -61534,13 +59159,13 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (latitude_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(latitude_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, latitude_);
             }
-            if (longitude_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(longitude_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, longitude_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -61558,7 +59183,7 @@ public final class ContextOuterClass {
                 return false;
             if (java.lang.Float.floatToIntBits(getLongitude()) != java.lang.Float.floatToIntBits(other.getLongitude()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -61574,7 +59199,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getLatitude());
             hash = (37 * hash) + LONGITUDE_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getLongitude());
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -61668,22 +59293,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.GPS_Position.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 latitude_ = 0F;
                 longitude_ = 0F;
                 return this;
@@ -61711,40 +59330,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.GPS_Position buildPartial() {
                 context.ContextOuterClass.GPS_Position result = new context.ContextOuterClass.GPS_Position(this);
-                result.latitude_ = latitude_;
-                result.longitude_ = longitude_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.GPS_Position result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.latitude_ = latitude_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.longitude_ = longitude_;
+                }
             }
 
             @java.lang.Override
@@ -61766,7 +59366,7 @@ public final class ContextOuterClass {
                 if (other.getLongitude() != 0F) {
                     setLongitude(other.getLongitude());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -61778,20 +59378,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.GPS_Position parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 13:
+                                {
+                                    latitude_ = input.readFloat();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 13
+                            case 21:
+                                {
+                                    longitude_ = input.readFloat();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 21
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.GPS_Position) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private float latitude_;
 
             /**
@@ -61810,6 +59444,7 @@ public final class ContextOuterClass {
              */
             public Builder setLatitude(float value) {
                 latitude_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -61819,6 +59454,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearLatitude() {
+                bitField0_ = (bitField0_ & ~0x00000001);
                 latitude_ = 0F;
                 onChanged();
                 return this;
@@ -61842,6 +59478,7 @@ public final class ContextOuterClass {
              */
             public Builder setLongitude(float value) {
                 longitude_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -61851,6 +59488,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearLongitude() {
+                bitField0_ = (bitField0_ & ~0x00000002);
                 longitude_ = 0F;
                 onChanged();
                 return this;
@@ -61883,7 +59521,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public GPS_Position parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new GPS_Position(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -61940,7 +59588,7 @@ public final class ContextOuterClass {
          */
         context.ContextOuterClass.GPS_PositionOrBuilder getGpsPositionOrBuilder();
 
-        public context.ContextOuterClass.Location.LocationCase getLocationCase();
+        context.ContextOuterClass.Location.LocationCase getLocationCase();
     }
 
     /**
@@ -61965,65 +59613,6 @@ public final class ContextOuterClass {
             return new Location();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Location(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                locationCase_ = 1;
-                                location_ = s;
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.GPS_Position.Builder subBuilder = null;
-                                if (locationCase_ == 2) {
-                                    subBuilder = ((context.ContextOuterClass.GPS_Position) location_).toBuilder();
-                                }
-                                location_ = input.readMessage(context.ContextOuterClass.GPS_Position.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom((context.ContextOuterClass.GPS_Position) location_);
-                                    location_ = subBuilder.buildPartial();
-                                }
-                                locationCase_ = 2;
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Location_descriptor;
         }
@@ -62035,6 +59624,7 @@ public final class ContextOuterClass {
 
         private int locationCase_ = 0;
 
+        @SuppressWarnings("serial")
         private java.lang.Object location_;
 
         public enum LocationCase implements com.google.protobuf.Internal.EnumLite, com.google.protobuf.AbstractMessage.InternalOneOfEnum {
@@ -62185,7 +59775,7 @@ public final class ContextOuterClass {
             if (locationCase_ == 2) {
                 output.writeMessage(2, (context.ContextOuterClass.GPS_Position) location_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -62200,7 +59790,7 @@ public final class ContextOuterClass {
             if (locationCase_ == 2) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, (context.ContextOuterClass.GPS_Position) location_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -62228,7 +59818,7 @@ public final class ContextOuterClass {
                 case 0:
                 default:
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -62252,7 +59842,7 @@ public final class ContextOuterClass {
                 case 0:
                 default:
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -62346,22 +59936,19 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Location.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
+                if (gpsPositionBuilder_ != null) {
+                    gpsPositionBuilder_.clear();
+                }
                 locationCase_ = 0;
                 location_ = null;
                 return this;
@@ -62389,49 +59976,24 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Location buildPartial() {
                 context.ContextOuterClass.Location result = new context.ContextOuterClass.Location(this);
-                if (locationCase_ == 1) {
-                    result.location_ = location_;
-                }
-                if (locationCase_ == 2) {
-                    if (gpsPositionBuilder_ == null) {
-                        result.location_ = location_;
-                    } else {
-                        result.location_ = gpsPositionBuilder_.build();
-                    }
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.locationCase_ = locationCase_;
+                buildPartialOneofs(result);
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
+            private void buildPartial0(context.ContextOuterClass.Location result) {
+                int from_bitField0_ = bitField0_;
             }
 
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartialOneofs(context.ContextOuterClass.Location result) {
+                result.locationCase_ = locationCase_;
+                result.location_ = this.location_;
+                if (locationCase_ == 2 && gpsPositionBuilder_ != null) {
+                    result.location_ = gpsPositionBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -62465,7 +60027,7 @@ public final class ContextOuterClass {
                             break;
                         }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -62477,17 +60039,50 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Location parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    java.lang.String s = input.readStringRequireUtf8();
+                                    locationCase_ = 1;
+                                    location_ = s;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getGpsPositionFieldBuilder().getBuilder(), extensionRegistry);
+                                    locationCase_ = 2;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Location) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -62506,6 +60101,8 @@ public final class ContextOuterClass {
                 return this;
             }
 
+            private int bitField0_;
+
             /**
              * string region = 1;
              * @return Whether the region field is set.
@@ -62677,8 +60274,9 @@ public final class ContextOuterClass {
                 } else {
                     if (locationCase_ == 2) {
                         gpsPositionBuilder_.mergeFrom(value);
+                    } else {
+                        gpsPositionBuilder_.setMessage(value);
                     }
-                    gpsPositionBuilder_.setMessage(value);
                 }
                 locationCase_ = 2;
                 return this;
@@ -62739,7 +60337,6 @@ public final class ContextOuterClass {
                 }
                 locationCase_ = 2;
                 onChanged();
-                ;
                 return gpsPositionBuilder_;
             }
 
@@ -62770,7 +60367,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Location parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Location(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -62849,70 +60456,6 @@ public final class ContextOuterClass {
             return new Constraint_EndPointLocation();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Constraint_EndPointLocation(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.EndPointId.Builder subBuilder = null;
-                                if (endpointId_ != null) {
-                                    subBuilder = endpointId_.toBuilder();
-                                }
-                                endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(endpointId_);
-                                    endpointId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.Location.Builder subBuilder = null;
-                                if (location_ != null) {
-                                    subBuilder = location_.toBuilder();
-                                }
-                                location_ = input.readMessage(context.ContextOuterClass.Location.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(location_);
-                                    location_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_EndPointLocation_descriptor;
         }
@@ -62949,7 +60492,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-            return getEndpointId();
+            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
         }
 
         public static final int LOCATION_FIELD_NUMBER = 2;
@@ -62979,7 +60522,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.LocationOrBuilder getLocationOrBuilder() {
-            return getLocation();
+            return location_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : location_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -63003,7 +60546,7 @@ public final class ContextOuterClass {
             if (location_ != null) {
                 output.writeMessage(2, getLocation());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -63018,7 +60561,7 @@ public final class ContextOuterClass {
             if (location_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getLocation());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -63044,7 +60587,7 @@ public final class ContextOuterClass {
                 if (!getLocation().equals(other.getLocation()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -63064,7 +60607,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + LOCATION_FIELD_NUMBER;
                 hash = (53 * hash) + getLocation().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -63158,32 +60701,24 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_EndPointLocation.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (endpointIdBuilder_ == null) {
-                    endpointId_ = null;
-                } else {
-                    endpointId_ = null;
+                bitField0_ = 0;
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
                     endpointIdBuilder_ = null;
                 }
-                if (locationBuilder_ == null) {
-                    location_ = null;
-                } else {
-                    location_ = null;
+                location_ = null;
+                if (locationBuilder_ != null) {
+                    locationBuilder_.dispose();
                     locationBuilder_ = null;
                 }
                 return this;
@@ -63211,48 +60746,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_EndPointLocation buildPartial() {
                 context.ContextOuterClass.Constraint_EndPointLocation result = new context.ContextOuterClass.Constraint_EndPointLocation(this);
-                if (endpointIdBuilder_ == null) {
-                    result.endpointId_ = endpointId_;
-                } else {
-                    result.endpointId_ = endpointIdBuilder_.build();
-                }
-                if (locationBuilder_ == null) {
-                    result.location_ = location_;
-                } else {
-                    result.location_ = locationBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.Constraint_EndPointLocation result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.location_ = locationBuilder_ == null ? location_ : locationBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -63274,7 +60782,7 @@ public final class ContextOuterClass {
                 if (other.hasLocation()) {
                     mergeLocation(other.getLocation());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -63286,20 +60794,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Constraint_EndPointLocation parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getLocationFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Constraint_EndPointLocation) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.EndPointId endpointId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 endpointIdBuilder_;
@@ -63309,7 +60851,7 @@ public final class ContextOuterClass {
              * @return Whether the endpointId field is set.
              */
             public boolean hasEndpointId() {
-                return endpointIdBuilder_ != null || endpointId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -63333,10 +60875,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     endpointId_ = value;
-                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -63346,10 +60889,11 @@ public final class ContextOuterClass {
             public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                 if (endpointIdBuilder_ == null) {
                     endpointId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -63358,15 +60902,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
                 if (endpointIdBuilder_ == null) {
-                    if (endpointId_ != null) {
-                        endpointId_ = context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
+                        getEndpointIdBuilder().mergeFrom(value);
                     } else {
                         endpointId_ = value;
                     }
-                    onChanged();
                 } else {
                     endpointIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -63374,13 +60919,13 @@ public final class ContextOuterClass {
              * .context.EndPointId endpoint_id = 1;
              */
             public Builder clearEndpointId() {
-                if (endpointIdBuilder_ == null) {
-                    endpointId_ = null;
-                    onChanged();
-                } else {
-                    endpointId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
                     endpointIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -63388,6 +60933,7 @@ public final class ContextOuterClass {
              * .context.EndPointId endpoint_id = 1;
              */
             public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEndpointIdFieldBuilder().getBuilder();
             }
@@ -63423,7 +60969,7 @@ public final class ContextOuterClass {
              * @return Whether the location field is set.
              */
             public boolean hasLocation() {
-                return locationBuilder_ != null || location_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -63447,10 +60993,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     location_ = value;
-                    onChanged();
                 } else {
                     locationBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -63460,10 +61007,11 @@ public final class ContextOuterClass {
             public Builder setLocation(context.ContextOuterClass.Location.Builder builderForValue) {
                 if (locationBuilder_ == null) {
                     location_ = builderForValue.build();
-                    onChanged();
                 } else {
                     locationBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -63472,15 +61020,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeLocation(context.ContextOuterClass.Location value) {
                 if (locationBuilder_ == null) {
-                    if (location_ != null) {
-                        location_ = context.ContextOuterClass.Location.newBuilder(location_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && location_ != null && location_ != context.ContextOuterClass.Location.getDefaultInstance()) {
+                        getLocationBuilder().mergeFrom(value);
                     } else {
                         location_ = value;
                     }
-                    onChanged();
                 } else {
                     locationBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -63488,13 +61037,13 @@ public final class ContextOuterClass {
              * .context.Location location = 2;
              */
             public Builder clearLocation() {
-                if (locationBuilder_ == null) {
-                    location_ = null;
-                    onChanged();
-                } else {
-                    location_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                location_ = null;
+                if (locationBuilder_ != null) {
+                    locationBuilder_.dispose();
                     locationBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -63502,6 +61051,7 @@ public final class ContextOuterClass {
              * .context.Location location = 2;
              */
             public context.ContextOuterClass.Location.Builder getLocationBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getLocationFieldBuilder().getBuilder();
             }
@@ -63555,7 +61105,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_EndPointLocation parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Constraint_EndPointLocation(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -63623,62 +61183,6 @@ public final class ContextOuterClass {
             return new Constraint_EndPointPriority();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Constraint_EndPointPriority(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.EndPointId.Builder subBuilder = null;
-                                if (endpointId_ != null) {
-                                    subBuilder = endpointId_.toBuilder();
-                                }
-                                endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(endpointId_);
-                                    endpointId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 16:
-                            {
-                                priority_ = input.readUInt32();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_EndPointPriority_descriptor;
         }
@@ -63715,12 +61219,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-            return getEndpointId();
+            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
         }
 
         public static final int PRIORITY_FIELD_NUMBER = 2;
 
-        private int priority_;
+        private int priority_ = 0;
 
         /**
          * uint32 priority = 2;
@@ -63752,7 +61256,7 @@ public final class ContextOuterClass {
             if (priority_ != 0) {
                 output.writeUInt32(2, priority_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -63767,7 +61271,7 @@ public final class ContextOuterClass {
             if (priority_ != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeUInt32Size(2, priority_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -63789,7 +61293,7 @@ public final class ContextOuterClass {
             }
             if (getPriority() != other.getPriority())
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -63807,7 +61311,7 @@ public final class ContextOuterClass {
             }
             hash = (37 * hash) + PRIORITY_FIELD_NUMBER;
             hash = (53 * hash) + getPriority();
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -63901,26 +61405,19 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_EndPointPriority.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (endpointIdBuilder_ == null) {
-                    endpointId_ = null;
-                } else {
-                    endpointId_ = null;
+                bitField0_ = 0;
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
                     endpointIdBuilder_ = null;
                 }
                 priority_ = 0;
@@ -63949,44 +61446,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_EndPointPriority buildPartial() {
                 context.ContextOuterClass.Constraint_EndPointPriority result = new context.ContextOuterClass.Constraint_EndPointPriority(this);
-                if (endpointIdBuilder_ == null) {
-                    result.endpointId_ = endpointId_;
-                } else {
-                    result.endpointId_ = endpointIdBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.priority_ = priority_;
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.Constraint_EndPointPriority result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.priority_ = priority_;
+                }
             }
 
             @java.lang.Override
@@ -64008,7 +61482,7 @@ public final class ContextOuterClass {
                 if (other.getPriority() != 0) {
                     setPriority(other.getPriority());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -64020,20 +61494,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Constraint_EndPointPriority parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 16:
+                                {
+                                    priority_ = input.readUInt32();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 16
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Constraint_EndPointPriority) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.EndPointId endpointId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 endpointIdBuilder_;
@@ -64043,7 +61551,7 @@ public final class ContextOuterClass {
              * @return Whether the endpointId field is set.
              */
             public boolean hasEndpointId() {
-                return endpointIdBuilder_ != null || endpointId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -64067,10 +61575,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     endpointId_ = value;
-                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -64080,10 +61589,11 @@ public final class ContextOuterClass {
             public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                 if (endpointIdBuilder_ == null) {
                     endpointId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -64092,15 +61602,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
                 if (endpointIdBuilder_ == null) {
-                    if (endpointId_ != null) {
-                        endpointId_ = context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
+                        getEndpointIdBuilder().mergeFrom(value);
                     } else {
                         endpointId_ = value;
                     }
-                    onChanged();
                 } else {
                     endpointIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -64108,13 +61619,13 @@ public final class ContextOuterClass {
              * .context.EndPointId endpoint_id = 1;
              */
             public Builder clearEndpointId() {
-                if (endpointIdBuilder_ == null) {
-                    endpointId_ = null;
-                    onChanged();
-                } else {
-                    endpointId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
                     endpointIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -64122,6 +61633,7 @@ public final class ContextOuterClass {
              * .context.EndPointId endpoint_id = 1;
              */
             public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEndpointIdFieldBuilder().getBuilder();
             }
@@ -64166,6 +61678,7 @@ public final class ContextOuterClass {
              */
             public Builder setPriority(int value) {
                 priority_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -64175,6 +61688,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearPriority() {
+                bitField0_ = (bitField0_ & ~0x00000002);
                 priority_ = 0;
                 onChanged();
                 return this;
@@ -64207,7 +61721,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_EndPointPriority parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Constraint_EndPointPriority(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -64258,49 +61782,6 @@ public final class ContextOuterClass {
             return new Constraint_SLA_Latency();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Constraint_SLA_Latency(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 13:
-                            {
-                                e2ELatencyMs_ = input.readFloat();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_SLA_Latency_descriptor;
         }
@@ -64312,7 +61793,7 @@ public final class ContextOuterClass {
 
         public static final int E2E_LATENCY_MS_FIELD_NUMBER = 1;
 
-        private float e2ELatencyMs_;
+        private float e2ELatencyMs_ = 0F;
 
         /**
          * float e2e_latency_ms = 1;
@@ -64338,10 +61819,10 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (e2ELatencyMs_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(e2ELatencyMs_) != 0) {
                 output.writeFloat(1, e2ELatencyMs_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -64350,10 +61831,10 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (e2ELatencyMs_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(e2ELatencyMs_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, e2ELatencyMs_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -64369,7 +61850,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.Constraint_SLA_Latency other = (context.ContextOuterClass.Constraint_SLA_Latency) obj;
             if (java.lang.Float.floatToIntBits(getE2ELatencyMs()) != java.lang.Float.floatToIntBits(other.getE2ELatencyMs()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -64383,7 +61864,7 @@ public final class ContextOuterClass {
             hash = (19 * hash) + getDescriptor().hashCode();
             hash = (37 * hash) + E2E_LATENCY_MS_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getE2ELatencyMs());
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -64477,22 +61958,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_SLA_Latency.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 e2ELatencyMs_ = 0F;
                 return this;
             }
@@ -64519,39 +61994,18 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_SLA_Latency buildPartial() {
                 context.ContextOuterClass.Constraint_SLA_Latency result = new context.ContextOuterClass.Constraint_SLA_Latency(this);
-                result.e2ELatencyMs_ = e2ELatencyMs_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.Constraint_SLA_Latency result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.e2ELatencyMs_ = e2ELatencyMs_;
+                }
             }
 
             @java.lang.Override
@@ -64570,7 +62024,7 @@ public final class ContextOuterClass {
                 if (other.getE2ELatencyMs() != 0F) {
                     setE2ELatencyMs(other.getE2ELatencyMs());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -64582,20 +62036,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Constraint_SLA_Latency parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 13:
+                                {
+                                    e2ELatencyMs_ = input.readFloat();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 13
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Constraint_SLA_Latency) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private float e2ELatencyMs_;
 
             /**
@@ -64614,6 +62095,7 @@ public final class ContextOuterClass {
              */
             public Builder setE2ELatencyMs(float value) {
                 e2ELatencyMs_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -64623,6 +62105,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearE2ELatencyMs() {
+                bitField0_ = (bitField0_ & ~0x00000001);
                 e2ELatencyMs_ = 0F;
                 onChanged();
                 return this;
@@ -64655,7 +62138,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_SLA_Latency parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Constraint_SLA_Latency(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -64706,49 +62199,6 @@ public final class ContextOuterClass {
             return new Constraint_SLA_Capacity();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Constraint_SLA_Capacity(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 13:
-                            {
-                                capacityGbps_ = input.readFloat();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_SLA_Capacity_descriptor;
         }
@@ -64760,7 +62210,7 @@ public final class ContextOuterClass {
 
         public static final int CAPACITY_GBPS_FIELD_NUMBER = 1;
 
-        private float capacityGbps_;
+        private float capacityGbps_ = 0F;
 
         /**
          * float capacity_gbps = 1;
@@ -64786,10 +62236,10 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (capacityGbps_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(capacityGbps_) != 0) {
                 output.writeFloat(1, capacityGbps_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -64798,10 +62248,10 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (capacityGbps_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(capacityGbps_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, capacityGbps_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -64817,7 +62267,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.Constraint_SLA_Capacity other = (context.ContextOuterClass.Constraint_SLA_Capacity) obj;
             if (java.lang.Float.floatToIntBits(getCapacityGbps()) != java.lang.Float.floatToIntBits(other.getCapacityGbps()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -64831,7 +62281,7 @@ public final class ContextOuterClass {
             hash = (19 * hash) + getDescriptor().hashCode();
             hash = (37 * hash) + CAPACITY_GBPS_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getCapacityGbps());
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -64925,22 +62375,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_SLA_Capacity.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 capacityGbps_ = 0F;
                 return this;
             }
@@ -64967,39 +62411,18 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_SLA_Capacity buildPartial() {
                 context.ContextOuterClass.Constraint_SLA_Capacity result = new context.ContextOuterClass.Constraint_SLA_Capacity(this);
-                result.capacityGbps_ = capacityGbps_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.Constraint_SLA_Capacity result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.capacityGbps_ = capacityGbps_;
+                }
             }
 
             @java.lang.Override
@@ -65018,7 +62441,7 @@ public final class ContextOuterClass {
                 if (other.getCapacityGbps() != 0F) {
                     setCapacityGbps(other.getCapacityGbps());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -65030,20 +62453,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Constraint_SLA_Capacity parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 13:
+                                {
+                                    capacityGbps_ = input.readFloat();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 13
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Constraint_SLA_Capacity) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private float capacityGbps_;
 
             /**
@@ -65062,6 +62512,7 @@ public final class ContextOuterClass {
              */
             public Builder setCapacityGbps(float value) {
                 capacityGbps_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -65071,6 +62522,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearCapacityGbps() {
+                bitField0_ = (bitField0_ & ~0x00000001);
                 capacityGbps_ = 0F;
                 onChanged();
                 return this;
@@ -65103,7 +62555,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_SLA_Capacity parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Constraint_SLA_Capacity(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -65170,59 +62632,6 @@ public final class ContextOuterClass {
             return new Constraint_SLA_Availability();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Constraint_SLA_Availability(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 8:
-                            {
-                                numDisjointPaths_ = input.readUInt32();
-                                break;
-                            }
-                        case 16:
-                            {
-                                allActive_ = input.readBool();
-                                break;
-                            }
-                        case 29:
-                            {
-                                availability_ = input.readFloat();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_SLA_Availability_descriptor;
         }
@@ -65234,7 +62643,7 @@ public final class ContextOuterClass {
 
         public static final int NUM_DISJOINT_PATHS_FIELD_NUMBER = 1;
 
-        private int numDisjointPaths_;
+        private int numDisjointPaths_ = 0;
 
         /**
          * uint32 num_disjoint_paths = 1;
@@ -65247,7 +62656,7 @@ public final class ContextOuterClass {
 
         public static final int ALL_ACTIVE_FIELD_NUMBER = 2;
 
-        private boolean allActive_;
+        private boolean allActive_ = false;
 
         /**
          * bool all_active = 2;
@@ -65260,7 +62669,7 @@ public final class ContextOuterClass {
 
         public static final int AVAILABILITY_FIELD_NUMBER = 3;
 
-        private float availability_;
+        private float availability_ = 0F;
 
         /**
          * 
@@ -65296,10 +62705,10 @@ public final class ContextOuterClass {
             if (allActive_ != false) {
                 output.writeBool(2, allActive_);
             }
-            if (availability_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(availability_) != 0) {
                 output.writeFloat(3, availability_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -65314,10 +62723,10 @@ public final class ContextOuterClass {
             if (allActive_ != false) {
                 size += com.google.protobuf.CodedOutputStream.computeBoolSize(2, allActive_);
             }
-            if (availability_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(availability_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(3, availability_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -65337,7 +62746,7 @@ public final class ContextOuterClass {
                 return false;
             if (java.lang.Float.floatToIntBits(getAvailability()) != java.lang.Float.floatToIntBits(other.getAvailability()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -65355,7 +62764,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getAllActive());
             hash = (37 * hash) + AVAILABILITY_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getAvailability());
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -65449,22 +62858,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_SLA_Availability.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 numDisjointPaths_ = 0;
                 allActive_ = false;
                 availability_ = 0F;
@@ -65493,41 +62896,24 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_SLA_Availability buildPartial() {
                 context.ContextOuterClass.Constraint_SLA_Availability result = new context.ContextOuterClass.Constraint_SLA_Availability(this);
-                result.numDisjointPaths_ = numDisjointPaths_;
-                result.allActive_ = allActive_;
-                result.availability_ = availability_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.Constraint_SLA_Availability result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.numDisjointPaths_ = numDisjointPaths_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.allActive_ = allActive_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.availability_ = availability_;
+                }
             }
 
             @java.lang.Override
@@ -65552,7 +62938,7 @@ public final class ContextOuterClass {
                 if (other.getAvailability() != 0F) {
                     setAvailability(other.getAvailability());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -65564,20 +62950,61 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Constraint_SLA_Availability parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 8:
+                                {
+                                    numDisjointPaths_ = input.readUInt32();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 8
+                            case 16:
+                                {
+                                    allActive_ = input.readBool();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 16
+                            case 29:
+                                {
+                                    availability_ = input.readFloat();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 29
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Constraint_SLA_Availability) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private int numDisjointPaths_;
 
             /**
@@ -65596,6 +63023,7 @@ public final class ContextOuterClass {
              */
             public Builder setNumDisjointPaths(int value) {
                 numDisjointPaths_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -65605,6 +63033,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearNumDisjointPaths() {
+                bitField0_ = (bitField0_ & ~0x00000001);
                 numDisjointPaths_ = 0;
                 onChanged();
                 return this;
@@ -65628,6 +63057,7 @@ public final class ContextOuterClass {
              */
             public Builder setAllActive(boolean value) {
                 allActive_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -65637,6 +63067,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearAllActive() {
+                bitField0_ = (bitField0_ & ~0x00000002);
                 allActive_ = false;
                 onChanged();
                 return this;
@@ -65668,6 +63099,7 @@ public final class ContextOuterClass {
              */
             public Builder setAvailability(float value) {
                 availability_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -65681,6 +63113,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearAvailability() {
+                bitField0_ = (bitField0_ & ~0x00000004);
                 availability_ = 0F;
                 onChanged();
                 return this;
@@ -65713,7 +63146,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_SLA_Availability parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Constraint_SLA_Availability(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -65791,73 +63234,6 @@ public final class ContextOuterClass {
             return new Constraint_SLA_Isolation_level();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Constraint_SLA_Isolation_level(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 8:
-                            {
-                                int rawValue = input.readEnum();
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    isolationLevel_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                isolationLevel_.add(rawValue);
-                                break;
-                            }
-                        case 10:
-                            {
-                                int length = input.readRawVarint32();
-                                int oldLimit = input.pushLimit(length);
-                                while (input.getBytesUntilLimit() > 0) {
-                                    int rawValue = input.readEnum();
-                                    if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                        isolationLevel_ = new java.util.ArrayList();
-                                        mutable_bitField0_ |= 0x00000001;
-                                    }
-                                    isolationLevel_.add(rawValue);
-                                }
-                                input.popLimit(oldLimit);
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    isolationLevel_ = java.util.Collections.unmodifiableList(isolationLevel_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_SLA_Isolation_level_descriptor;
         }
@@ -65869,13 +63245,13 @@ public final class ContextOuterClass {
 
         public static final int ISOLATION_LEVEL_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List isolationLevel_;
 
         private static final com.google.protobuf.Internal.ListAdapter.Converter isolationLevel_converter_ = new com.google.protobuf.Internal.ListAdapter.Converter() {
 
             public context.ContextOuterClass.IsolationLevelEnum convert(java.lang.Integer from) {
-                @SuppressWarnings("deprecation")
-                context.ContextOuterClass.IsolationLevelEnum result = context.ContextOuterClass.IsolationLevelEnum.valueOf(from);
+                context.ContextOuterClass.IsolationLevelEnum result = context.ContextOuterClass.IsolationLevelEnum.forNumber(from);
                 return result == null ? context.ContextOuterClass.IsolationLevelEnum.UNRECOGNIZED : result;
             }
         };
@@ -65952,7 +63328,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < isolationLevel_.size(); i++) {
                 output.writeEnumNoTag(isolationLevel_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -65973,7 +63349,7 @@ public final class ContextOuterClass {
                 }
                 isolationLevelMemoizedSerializedSize = dataSize;
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -65989,7 +63365,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.Constraint_SLA_Isolation_level other = (context.ContextOuterClass.Constraint_SLA_Isolation_level) obj;
             if (!isolationLevel_.equals(other.isolationLevel_))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -66005,7 +63381,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + ISOLATION_LEVEL_FIELD_NUMBER;
                 hash = (53 * hash) + isolationLevel_.hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -66099,22 +63475,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_SLA_Isolation_level.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 isolationLevel_ = java.util.Collections.emptyList();
                 bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
@@ -66142,44 +63512,24 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_SLA_Isolation_level buildPartial() {
                 context.ContextOuterClass.Constraint_SLA_Isolation_level result = new context.ContextOuterClass.Constraint_SLA_Isolation_level(this);
-                int from_bitField0_ = bitField0_;
-                if (((bitField0_ & 0x00000001) != 0)) {
-                    isolationLevel_ = java.util.Collections.unmodifiableList(isolationLevel_);
-                    bitField0_ = (bitField0_ & ~0x00000001);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.isolationLevel_ = isolationLevel_;
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
+            private void buildPartialRepeatedFields(context.ContextOuterClass.Constraint_SLA_Isolation_level result) {
+                if (((bitField0_ & 0x00000001) != 0)) {
+                    isolationLevel_ = java.util.Collections.unmodifiableList(isolationLevel_);
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                }
+                result.isolationLevel_ = isolationLevel_;
             }
 
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.Constraint_SLA_Isolation_level result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -66205,7 +63555,7 @@ public final class ContextOuterClass {
                     }
                     onChanged();
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -66217,17 +63567,56 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Constraint_SLA_Isolation_level parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 8:
+                                {
+                                    int tmpRaw = input.readEnum();
+                                    ensureIsolationLevelIsMutable();
+                                    isolationLevel_.add(tmpRaw);
+                                    break;
+                                }
+                            // case 8
+                            case 10:
+                                {
+                                    int length = input.readRawVarint32();
+                                    int oldLimit = input.pushLimit(length);
+                                    while (input.getBytesUntilLimit() > 0) {
+                                        int tmpRaw = input.readEnum();
+                                        ensureIsolationLevelIsMutable();
+                                        isolationLevel_.add(tmpRaw);
+                                    }
+                                    input.popLimit(oldLimit);
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Constraint_SLA_Isolation_level) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -66342,8 +63731,8 @@ public final class ContextOuterClass {
 
             /**
              * repeated .context.IsolationLevelEnum isolation_level = 1;
-             * @param index The index of the value to return.
-             * @return The enum numeric value on the wire of isolationLevel at the given index.
+             * @param index The index to set the value at.
+             * @param value The enum numeric value on the wire for isolationLevel to set.
              * @return This builder for chaining.
              */
             public Builder setIsolationLevelValue(int index, int value) {
@@ -66406,7 +63795,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_SLA_Isolation_level parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Constraint_SLA_Isolation_level(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -66535,86 +63934,6 @@ public final class ContextOuterClass {
             return new Constraint_Exclusions();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Constraint_Exclusions(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 8:
-                            {
-                                isPermanent_ = input.readBool();
-                                break;
-                            }
-                        case 18:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    deviceIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                deviceIds_.add(input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry));
-                                break;
-                            }
-                        case 26:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
-                                    endpointIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000002;
-                                }
-                                endpointIds_.add(input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
-                                break;
-                            }
-                        case 34:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000004) != 0)) {
-                                    linkIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000004;
-                                }
-                                linkIds_.add(input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
-                }
-                if (((mutable_bitField0_ & 0x00000002) != 0)) {
-                    endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
-                }
-                if (((mutable_bitField0_ & 0x00000004) != 0)) {
-                    linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_Exclusions_descriptor;
         }
@@ -66626,7 +63945,7 @@ public final class ContextOuterClass {
 
         public static final int IS_PERMANENT_FIELD_NUMBER = 1;
 
-        private boolean isPermanent_;
+        private boolean isPermanent_ = false;
 
         /**
          * bool is_permanent = 1;
@@ -66639,6 +63958,7 @@ public final class ContextOuterClass {
 
         public static final int DEVICE_IDS_FIELD_NUMBER = 2;
 
+        @SuppressWarnings("serial")
         private java.util.List deviceIds_;
 
         /**
@@ -66683,6 +64003,7 @@ public final class ContextOuterClass {
 
         public static final int ENDPOINT_IDS_FIELD_NUMBER = 3;
 
+        @SuppressWarnings("serial")
         private java.util.List endpointIds_;
 
         /**
@@ -66727,6 +64048,7 @@ public final class ContextOuterClass {
 
         public static final int LINK_IDS_FIELD_NUMBER = 4;
 
+        @SuppressWarnings("serial")
         private java.util.List linkIds_;
 
         /**
@@ -66796,7 +64118,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < linkIds_.size(); i++) {
                 output.writeMessage(4, linkIds_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -66817,7 +64139,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < linkIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, linkIds_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -66839,7 +64161,7 @@ public final class ContextOuterClass {
                 return false;
             if (!getLinkIdsList().equals(other.getLinkIdsList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -66865,7 +64187,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + LINK_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getLinkIdsList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -66959,44 +64281,38 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_Exclusions.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getDeviceIdsFieldBuilder();
-                    getEndpointIdsFieldBuilder();
-                    getLinkIdsFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 isPermanent_ = false;
                 if (deviceIdsBuilder_ == null) {
                     deviceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    deviceIds_ = null;
                     deviceIdsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000002);
                 if (endpointIdsBuilder_ == null) {
                     endpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000002);
                 } else {
+                    endpointIds_ = null;
                     endpointIdsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000004);
                 if (linkIdsBuilder_ == null) {
                     linkIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000004);
                 } else {
+                    linkIds_ = null;
                     linkIdsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000008);
                 return this;
             }
 
@@ -67022,67 +64338,49 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_Exclusions buildPartial() {
                 context.ContextOuterClass.Constraint_Exclusions result = new context.ContextOuterClass.Constraint_Exclusions(this);
-                int from_bitField0_ = bitField0_;
-                result.isPermanent_ = isPermanent_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.Constraint_Exclusions result) {
                 if (deviceIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0)) {
+                    if (((bitField0_ & 0x00000002) != 0)) {
                         deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
-                        bitField0_ = (bitField0_ & ~0x00000001);
+                        bitField0_ = (bitField0_ & ~0x00000002);
                     }
                     result.deviceIds_ = deviceIds_;
                 } else {
                     result.deviceIds_ = deviceIdsBuilder_.build();
                 }
                 if (endpointIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0)) {
+                    if (((bitField0_ & 0x00000004) != 0)) {
                         endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
-                        bitField0_ = (bitField0_ & ~0x00000002);
+                        bitField0_ = (bitField0_ & ~0x00000004);
                     }
                     result.endpointIds_ = endpointIds_;
                 } else {
                     result.endpointIds_ = endpointIdsBuilder_.build();
                 }
                 if (linkIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0)) {
+                    if (((bitField0_ & 0x00000008) != 0)) {
                         linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
-                        bitField0_ = (bitField0_ & ~0x00000004);
+                        bitField0_ = (bitField0_ & ~0x00000008);
                     }
                     result.linkIds_ = linkIds_;
                 } else {
                     result.linkIds_ = linkIdsBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
             }
 
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.Constraint_Exclusions result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.isPermanent_ = isPermanent_;
+                }
             }
 
             @java.lang.Override
@@ -67105,7 +64403,7 @@ public final class ContextOuterClass {
                     if (!other.deviceIds_.isEmpty()) {
                         if (deviceIds_.isEmpty()) {
                             deviceIds_ = other.deviceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                         } else {
                             ensureDeviceIdsIsMutable();
                             deviceIds_.addAll(other.deviceIds_);
@@ -67118,7 +64416,7 @@ public final class ContextOuterClass {
                             deviceIdsBuilder_.dispose();
                             deviceIdsBuilder_ = null;
                             deviceIds_ = other.deviceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                             deviceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDeviceIdsFieldBuilder() : null;
                         } else {
                             deviceIdsBuilder_.addAllMessages(other.deviceIds_);
@@ -67129,7 +64427,7 @@ public final class ContextOuterClass {
                     if (!other.endpointIds_.isEmpty()) {
                         if (endpointIds_.isEmpty()) {
                             endpointIds_ = other.endpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                         } else {
                             ensureEndpointIdsIsMutable();
                             endpointIds_.addAll(other.endpointIds_);
@@ -67142,7 +64440,7 @@ public final class ContextOuterClass {
                             endpointIdsBuilder_.dispose();
                             endpointIdsBuilder_ = null;
                             endpointIds_ = other.endpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                             endpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getEndpointIdsFieldBuilder() : null;
                         } else {
                             endpointIdsBuilder_.addAllMessages(other.endpointIds_);
@@ -67153,7 +64451,7 @@ public final class ContextOuterClass {
                     if (!other.linkIds_.isEmpty()) {
                         if (linkIds_.isEmpty()) {
                             linkIds_ = other.linkIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000008);
                         } else {
                             ensureLinkIdsIsMutable();
                             linkIds_.addAll(other.linkIds_);
@@ -67166,14 +64464,14 @@ public final class ContextOuterClass {
                             linkIdsBuilder_.dispose();
                             linkIdsBuilder_ = null;
                             linkIds_ = other.linkIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000008);
                             linkIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinkIdsFieldBuilder() : null;
                         } else {
                             linkIdsBuilder_.addAllMessages(other.linkIds_);
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -67185,17 +64483,78 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Constraint_Exclusions parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 8:
+                                {
+                                    isPermanent_ = input.readBool();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 8
+                            case 18:
+                                {
+                                    context.ContextOuterClass.DeviceId m = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
+                                    if (deviceIdsBuilder_ == null) {
+                                        ensureDeviceIdsIsMutable();
+                                        deviceIds_.add(m);
+                                    } else {
+                                        deviceIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                    if (endpointIdsBuilder_ == null) {
+                                        ensureEndpointIdsIsMutable();
+                                        endpointIds_.add(m);
+                                    } else {
+                                        endpointIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    context.ContextOuterClass.LinkId m = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
+                                    if (linkIdsBuilder_ == null) {
+                                        ensureLinkIdsIsMutable();
+                                        linkIds_.add(m);
+                                    } else {
+                                        linkIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 34
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Constraint_Exclusions) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -67219,6 +64578,7 @@ public final class ContextOuterClass {
              */
             public Builder setIsPermanent(boolean value) {
                 isPermanent_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -67228,6 +64588,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIsPermanent() {
+                bitField0_ = (bitField0_ & ~0x00000001);
                 isPermanent_ = false;
                 onChanged();
                 return this;
@@ -67236,9 +64597,9 @@ public final class ContextOuterClass {
             private java.util.List deviceIds_ = java.util.Collections.emptyList();
 
             private void ensureDeviceIdsIsMutable() {
-                if (!((bitField0_ & 0x00000001) != 0)) {
+                if (!((bitField0_ & 0x00000002) != 0)) {
                     deviceIds_ = new java.util.ArrayList(deviceIds_);
-                    bitField0_ |= 0x00000001;
+                    bitField0_ |= 0x00000002;
                 }
             }
 
@@ -67390,7 +64751,7 @@ public final class ContextOuterClass {
             public Builder clearDeviceIds() {
                 if (deviceIdsBuilder_ == null) {
                     deviceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
+                    bitField0_ = (bitField0_ & ~0x00000002);
                     onChanged();
                 } else {
                     deviceIdsBuilder_.clear();
@@ -67464,7 +64825,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getDeviceIdsFieldBuilder() {
                 if (deviceIdsBuilder_ == null) {
-                    deviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(deviceIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    deviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(deviceIds_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
                     deviceIds_ = null;
                 }
                 return deviceIdsBuilder_;
@@ -67473,9 +64834,9 @@ public final class ContextOuterClass {
             private java.util.List endpointIds_ = java.util.Collections.emptyList();
 
             private void ensureEndpointIdsIsMutable() {
-                if (!((bitField0_ & 0x00000002) != 0)) {
+                if (!((bitField0_ & 0x00000004) != 0)) {
                     endpointIds_ = new java.util.ArrayList(endpointIds_);
-                    bitField0_ |= 0x00000002;
+                    bitField0_ |= 0x00000004;
                 }
             }
 
@@ -67627,7 +64988,7 @@ public final class ContextOuterClass {
             public Builder clearEndpointIds() {
                 if (endpointIdsBuilder_ == null) {
                     endpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000002);
+                    bitField0_ = (bitField0_ & ~0x00000004);
                     onChanged();
                 } else {
                     endpointIdsBuilder_.clear();
@@ -67701,7 +65062,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getEndpointIdsFieldBuilder() {
                 if (endpointIdsBuilder_ == null) {
-                    endpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(endpointIds_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
+                    endpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(endpointIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
                     endpointIds_ = null;
                 }
                 return endpointIdsBuilder_;
@@ -67710,9 +65071,9 @@ public final class ContextOuterClass {
             private java.util.List linkIds_ = java.util.Collections.emptyList();
 
             private void ensureLinkIdsIsMutable() {
-                if (!((bitField0_ & 0x00000004) != 0)) {
+                if (!((bitField0_ & 0x00000008) != 0)) {
                     linkIds_ = new java.util.ArrayList(linkIds_);
-                    bitField0_ |= 0x00000004;
+                    bitField0_ |= 0x00000008;
                 }
             }
 
@@ -67864,7 +65225,7 @@ public final class ContextOuterClass {
             public Builder clearLinkIds() {
                 if (linkIdsBuilder_ == null) {
                     linkIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000004);
+                    bitField0_ = (bitField0_ & ~0x00000008);
                     onChanged();
                 } else {
                     linkIdsBuilder_.clear();
@@ -67938,7 +65299,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getLinkIdsFieldBuilder() {
                 if (linkIdsBuilder_ == null) {
-                    linkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(linkIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
+                    linkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(linkIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
                     linkIds_ = null;
                 }
                 return linkIdsBuilder_;
@@ -67971,7 +65332,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_Exclusions parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Constraint_Exclusions(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -68158,7 +65529,7 @@ public final class ContextOuterClass {
          */
         context.ContextOuterClass.Constraint_ExclusionsOrBuilder getExclusionsOrBuilder();
 
-        public context.ContextOuterClass.Constraint.ConstraintCase getConstraintCase();
+        context.ContextOuterClass.Constraint.ConstraintCase getConstraintCase();
     }
 
     /**
@@ -68184,176 +65555,6 @@ public final class ContextOuterClass {
             return new Constraint();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Constraint(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 8:
-                            {
-                                int rawValue = input.readEnum();
-                                action_ = rawValue;
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.Constraint_Custom.Builder subBuilder = null;
-                                if (constraintCase_ == 2) {
-                                    subBuilder = ((context.ContextOuterClass.Constraint_Custom) constraint_).toBuilder();
-                                }
-                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_Custom.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_Custom) constraint_);
-                                    constraint_ = subBuilder.buildPartial();
-                                }
-                                constraintCase_ = 2;
-                                break;
-                            }
-                        case 26:
-                            {
-                                context.ContextOuterClass.Constraint_Schedule.Builder subBuilder = null;
-                                if (constraintCase_ == 3) {
-                                    subBuilder = ((context.ContextOuterClass.Constraint_Schedule) constraint_).toBuilder();
-                                }
-                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_Schedule.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_Schedule) constraint_);
-                                    constraint_ = subBuilder.buildPartial();
-                                }
-                                constraintCase_ = 3;
-                                break;
-                            }
-                        case 34:
-                            {
-                                context.ContextOuterClass.Constraint_EndPointLocation.Builder subBuilder = null;
-                                if (constraintCase_ == 4) {
-                                    subBuilder = ((context.ContextOuterClass.Constraint_EndPointLocation) constraint_).toBuilder();
-                                }
-                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_EndPointLocation.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_EndPointLocation) constraint_);
-                                    constraint_ = subBuilder.buildPartial();
-                                }
-                                constraintCase_ = 4;
-                                break;
-                            }
-                        case 42:
-                            {
-                                context.ContextOuterClass.Constraint_EndPointPriority.Builder subBuilder = null;
-                                if (constraintCase_ == 5) {
-                                    subBuilder = ((context.ContextOuterClass.Constraint_EndPointPriority) constraint_).toBuilder();
-                                }
-                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_EndPointPriority.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_EndPointPriority) constraint_);
-                                    constraint_ = subBuilder.buildPartial();
-                                }
-                                constraintCase_ = 5;
-                                break;
-                            }
-                        case 50:
-                            {
-                                context.ContextOuterClass.Constraint_SLA_Capacity.Builder subBuilder = null;
-                                if (constraintCase_ == 6) {
-                                    subBuilder = ((context.ContextOuterClass.Constraint_SLA_Capacity) constraint_).toBuilder();
-                                }
-                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_SLA_Capacity.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_SLA_Capacity) constraint_);
-                                    constraint_ = subBuilder.buildPartial();
-                                }
-                                constraintCase_ = 6;
-                                break;
-                            }
-                        case 58:
-                            {
-                                context.ContextOuterClass.Constraint_SLA_Latency.Builder subBuilder = null;
-                                if (constraintCase_ == 7) {
-                                    subBuilder = ((context.ContextOuterClass.Constraint_SLA_Latency) constraint_).toBuilder();
-                                }
-                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_SLA_Latency.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_SLA_Latency) constraint_);
-                                    constraint_ = subBuilder.buildPartial();
-                                }
-                                constraintCase_ = 7;
-                                break;
-                            }
-                        case 66:
-                            {
-                                context.ContextOuterClass.Constraint_SLA_Availability.Builder subBuilder = null;
-                                if (constraintCase_ == 8) {
-                                    subBuilder = ((context.ContextOuterClass.Constraint_SLA_Availability) constraint_).toBuilder();
-                                }
-                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_SLA_Availability.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_SLA_Availability) constraint_);
-                                    constraint_ = subBuilder.buildPartial();
-                                }
-                                constraintCase_ = 8;
-                                break;
-                            }
-                        case 74:
-                            {
-                                context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder subBuilder = null;
-                                if (constraintCase_ == 9) {
-                                    subBuilder = ((context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_).toBuilder();
-                                }
-                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_SLA_Isolation_level.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_);
-                                    constraint_ = subBuilder.buildPartial();
-                                }
-                                constraintCase_ = 9;
-                                break;
-                            }
-                        case 82:
-                            {
-                                context.ContextOuterClass.Constraint_Exclusions.Builder subBuilder = null;
-                                if (constraintCase_ == 10) {
-                                    subBuilder = ((context.ContextOuterClass.Constraint_Exclusions) constraint_).toBuilder();
-                                }
-                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_Exclusions.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_Exclusions) constraint_);
-                                    constraint_ = subBuilder.buildPartial();
-                                }
-                                constraintCase_ = 10;
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_descriptor;
         }
@@ -68365,6 +65566,7 @@ public final class ContextOuterClass {
 
         private int constraintCase_ = 0;
 
+        @SuppressWarnings("serial")
         private java.lang.Object constraint_;
 
         public enum ConstraintCase implements com.google.protobuf.Internal.EnumLite, com.google.protobuf.AbstractMessage.InternalOneOfEnum {
@@ -68434,7 +65636,7 @@ public final class ContextOuterClass {
 
         public static final int ACTION_FIELD_NUMBER = 1;
 
-        private int action_;
+        private int action_ = 0;
 
         /**
          * .context.ConstraintActionEnum action = 1;
@@ -68451,8 +65653,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConstraintActionEnum getAction() {
-            @SuppressWarnings("deprecation")
-            context.ContextOuterClass.ConstraintActionEnum result = context.ContextOuterClass.ConstraintActionEnum.valueOf(action_);
+            context.ContextOuterClass.ConstraintActionEnum result = context.ContextOuterClass.ConstraintActionEnum.forNumber(action_);
             return result == null ? context.ContextOuterClass.ConstraintActionEnum.UNRECOGNIZED : result;
         }
 
@@ -68807,7 +66008,7 @@ public final class ContextOuterClass {
             if (constraintCase_ == 10) {
                 output.writeMessage(10, (context.ContextOuterClass.Constraint_Exclusions) constraint_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -68846,7 +66047,7 @@ public final class ContextOuterClass {
             if (constraintCase_ == 10) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(10, (context.ContextOuterClass.Constraint_Exclusions) constraint_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -68904,7 +66105,7 @@ public final class ContextOuterClass {
                 case 0:
                 default:
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -68958,7 +66159,7 @@ public final class ContextOuterClass {
                 case 0:
                 default:
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -69052,23 +66253,44 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 action_ = 0;
+                if (customBuilder_ != null) {
+                    customBuilder_.clear();
+                }
+                if (scheduleBuilder_ != null) {
+                    scheduleBuilder_.clear();
+                }
+                if (endpointLocationBuilder_ != null) {
+                    endpointLocationBuilder_.clear();
+                }
+                if (endpointPriorityBuilder_ != null) {
+                    endpointPriorityBuilder_.clear();
+                }
+                if (slaCapacityBuilder_ != null) {
+                    slaCapacityBuilder_.clear();
+                }
+                if (slaLatencyBuilder_ != null) {
+                    slaLatencyBuilder_.clear();
+                }
+                if (slaAvailabilityBuilder_ != null) {
+                    slaAvailabilityBuilder_.clear();
+                }
+                if (slaIsolationBuilder_ != null) {
+                    slaIsolationBuilder_.clear();
+                }
+                if (exclusionsBuilder_ != null) {
+                    exclusionsBuilder_.clear();
+                }
                 constraintCase_ = 0;
                 constraint_ = null;
                 return this;
@@ -69096,103 +66318,51 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint buildPartial() {
                 context.ContextOuterClass.Constraint result = new context.ContextOuterClass.Constraint(this);
-                result.action_ = action_;
-                if (constraintCase_ == 2) {
-                    if (customBuilder_ == null) {
-                        result.constraint_ = constraint_;
-                    } else {
-                        result.constraint_ = customBuilder_.build();
-                    }
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                if (constraintCase_ == 3) {
-                    if (scheduleBuilder_ == null) {
-                        result.constraint_ = constraint_;
-                    } else {
-                        result.constraint_ = scheduleBuilder_.build();
-                    }
+                buildPartialOneofs(result);
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.Constraint result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.action_ = action_;
                 }
-                if (constraintCase_ == 4) {
-                    if (endpointLocationBuilder_ == null) {
-                        result.constraint_ = constraint_;
-                    } else {
-                        result.constraint_ = endpointLocationBuilder_.build();
-                    }
+            }
+
+            private void buildPartialOneofs(context.ContextOuterClass.Constraint result) {
+                result.constraintCase_ = constraintCase_;
+                result.constraint_ = this.constraint_;
+                if (constraintCase_ == 2 && customBuilder_ != null) {
+                    result.constraint_ = customBuilder_.build();
                 }
-                if (constraintCase_ == 5) {
-                    if (endpointPriorityBuilder_ == null) {
-                        result.constraint_ = constraint_;
-                    } else {
-                        result.constraint_ = endpointPriorityBuilder_.build();
-                    }
+                if (constraintCase_ == 3 && scheduleBuilder_ != null) {
+                    result.constraint_ = scheduleBuilder_.build();
                 }
-                if (constraintCase_ == 6) {
-                    if (slaCapacityBuilder_ == null) {
-                        result.constraint_ = constraint_;
-                    } else {
-                        result.constraint_ = slaCapacityBuilder_.build();
-                    }
+                if (constraintCase_ == 4 && endpointLocationBuilder_ != null) {
+                    result.constraint_ = endpointLocationBuilder_.build();
                 }
-                if (constraintCase_ == 7) {
-                    if (slaLatencyBuilder_ == null) {
-                        result.constraint_ = constraint_;
-                    } else {
-                        result.constraint_ = slaLatencyBuilder_.build();
-                    }
+                if (constraintCase_ == 5 && endpointPriorityBuilder_ != null) {
+                    result.constraint_ = endpointPriorityBuilder_.build();
                 }
-                if (constraintCase_ == 8) {
-                    if (slaAvailabilityBuilder_ == null) {
-                        result.constraint_ = constraint_;
-                    } else {
-                        result.constraint_ = slaAvailabilityBuilder_.build();
-                    }
+                if (constraintCase_ == 6 && slaCapacityBuilder_ != null) {
+                    result.constraint_ = slaCapacityBuilder_.build();
                 }
-                if (constraintCase_ == 9) {
-                    if (slaIsolationBuilder_ == null) {
-                        result.constraint_ = constraint_;
-                    } else {
-                        result.constraint_ = slaIsolationBuilder_.build();
-                    }
+                if (constraintCase_ == 7 && slaLatencyBuilder_ != null) {
+                    result.constraint_ = slaLatencyBuilder_.build();
                 }
-                if (constraintCase_ == 10) {
-                    if (exclusionsBuilder_ == null) {
-                        result.constraint_ = constraint_;
-                    } else {
-                        result.constraint_ = exclusionsBuilder_.build();
-                    }
+                if (constraintCase_ == 8 && slaAvailabilityBuilder_ != null) {
+                    result.constraint_ = slaAvailabilityBuilder_.build();
+                }
+                if (constraintCase_ == 9 && slaIsolationBuilder_ != null) {
+                    result.constraint_ = slaIsolationBuilder_.build();
+                }
+                if (constraintCase_ == 10 && exclusionsBuilder_ != null) {
+                    result.constraint_ = exclusionsBuilder_.build();
                 }
-                result.constraintCase_ = constraintCase_;
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -69262,7 +66432,7 @@ public final class ContextOuterClass {
                             break;
                         }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -69274,17 +66444,105 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Constraint parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 8:
+                                {
+                                    action_ = input.readEnum();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 8
+                            case 18:
+                                {
+                                    input.readMessage(getCustomFieldBuilder().getBuilder(), extensionRegistry);
+                                    constraintCase_ = 2;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    input.readMessage(getScheduleFieldBuilder().getBuilder(), extensionRegistry);
+                                    constraintCase_ = 3;
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    input.readMessage(getEndpointLocationFieldBuilder().getBuilder(), extensionRegistry);
+                                    constraintCase_ = 4;
+                                    break;
+                                }
+                            // case 34
+                            case 42:
+                                {
+                                    input.readMessage(getEndpointPriorityFieldBuilder().getBuilder(), extensionRegistry);
+                                    constraintCase_ = 5;
+                                    break;
+                                }
+                            // case 42
+                            case 50:
+                                {
+                                    input.readMessage(getSlaCapacityFieldBuilder().getBuilder(), extensionRegistry);
+                                    constraintCase_ = 6;
+                                    break;
+                                }
+                            // case 50
+                            case 58:
+                                {
+                                    input.readMessage(getSlaLatencyFieldBuilder().getBuilder(), extensionRegistry);
+                                    constraintCase_ = 7;
+                                    break;
+                                }
+                            // case 58
+                            case 66:
+                                {
+                                    input.readMessage(getSlaAvailabilityFieldBuilder().getBuilder(), extensionRegistry);
+                                    constraintCase_ = 8;
+                                    break;
+                                }
+                            // case 66
+                            case 74:
+                                {
+                                    input.readMessage(getSlaIsolationFieldBuilder().getBuilder(), extensionRegistry);
+                                    constraintCase_ = 9;
+                                    break;
+                                }
+                            // case 74
+                            case 82:
+                                {
+                                    input.readMessage(getExclusionsFieldBuilder().getBuilder(), extensionRegistry);
+                                    constraintCase_ = 10;
+                                    break;
+                                }
+                            // case 82
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Constraint) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -69303,6 +66561,8 @@ public final class ContextOuterClass {
                 return this;
             }
 
+            private int bitField0_;
+
             private int action_ = 0;
 
             /**
@@ -69321,6 +66581,7 @@ public final class ContextOuterClass {
              */
             public Builder setActionValue(int value) {
                 action_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -69331,8 +66592,7 @@ public final class ContextOuterClass {
              */
             @java.lang.Override
             public context.ContextOuterClass.ConstraintActionEnum getAction() {
-                @SuppressWarnings("deprecation")
-                context.ContextOuterClass.ConstraintActionEnum result = context.ContextOuterClass.ConstraintActionEnum.valueOf(action_);
+                context.ContextOuterClass.ConstraintActionEnum result = context.ContextOuterClass.ConstraintActionEnum.forNumber(action_);
                 return result == null ? context.ContextOuterClass.ConstraintActionEnum.UNRECOGNIZED : result;
             }
 
@@ -69345,6 +66605,7 @@ public final class ContextOuterClass {
                 if (value == null) {
                     throw new NullPointerException();
                 }
+                bitField0_ |= 0x00000001;
                 action_ = value.getNumber();
                 onChanged();
                 return this;
@@ -69355,6 +66616,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearAction() {
+                bitField0_ = (bitField0_ & ~0x00000001);
                 action_ = 0;
                 onChanged();
                 return this;
@@ -69435,8 +66697,9 @@ public final class ContextOuterClass {
                 } else {
                     if (constraintCase_ == 2) {
                         customBuilder_.mergeFrom(value);
+                    } else {
+                        customBuilder_.setMessage(value);
                     }
-                    customBuilder_.setMessage(value);
                 }
                 constraintCase_ = 2;
                 return this;
@@ -69497,7 +66760,6 @@ public final class ContextOuterClass {
                 }
                 constraintCase_ = 2;
                 onChanged();
-                ;
                 return customBuilder_;
             }
 
@@ -69576,8 +66838,9 @@ public final class ContextOuterClass {
                 } else {
                     if (constraintCase_ == 3) {
                         scheduleBuilder_.mergeFrom(value);
+                    } else {
+                        scheduleBuilder_.setMessage(value);
                     }
-                    scheduleBuilder_.setMessage(value);
                 }
                 constraintCase_ = 3;
                 return this;
@@ -69638,7 +66901,6 @@ public final class ContextOuterClass {
                 }
                 constraintCase_ = 3;
                 onChanged();
-                ;
                 return scheduleBuilder_;
             }
 
@@ -69717,8 +66979,9 @@ public final class ContextOuterClass {
                 } else {
                     if (constraintCase_ == 4) {
                         endpointLocationBuilder_.mergeFrom(value);
+                    } else {
+                        endpointLocationBuilder_.setMessage(value);
                     }
-                    endpointLocationBuilder_.setMessage(value);
                 }
                 constraintCase_ = 4;
                 return this;
@@ -69779,7 +67042,6 @@ public final class ContextOuterClass {
                 }
                 constraintCase_ = 4;
                 onChanged();
-                ;
                 return endpointLocationBuilder_;
             }
 
@@ -69858,8 +67120,9 @@ public final class ContextOuterClass {
                 } else {
                     if (constraintCase_ == 5) {
                         endpointPriorityBuilder_.mergeFrom(value);
+                    } else {
+                        endpointPriorityBuilder_.setMessage(value);
                     }
-                    endpointPriorityBuilder_.setMessage(value);
                 }
                 constraintCase_ = 5;
                 return this;
@@ -69920,7 +67183,6 @@ public final class ContextOuterClass {
                 }
                 constraintCase_ = 5;
                 onChanged();
-                ;
                 return endpointPriorityBuilder_;
             }
 
@@ -69999,8 +67261,9 @@ public final class ContextOuterClass {
                 } else {
                     if (constraintCase_ == 6) {
                         slaCapacityBuilder_.mergeFrom(value);
+                    } else {
+                        slaCapacityBuilder_.setMessage(value);
                     }
-                    slaCapacityBuilder_.setMessage(value);
                 }
                 constraintCase_ = 6;
                 return this;
@@ -70061,7 +67324,6 @@ public final class ContextOuterClass {
                 }
                 constraintCase_ = 6;
                 onChanged();
-                ;
                 return slaCapacityBuilder_;
             }
 
@@ -70140,8 +67402,9 @@ public final class ContextOuterClass {
                 } else {
                     if (constraintCase_ == 7) {
                         slaLatencyBuilder_.mergeFrom(value);
+                    } else {
+                        slaLatencyBuilder_.setMessage(value);
                     }
-                    slaLatencyBuilder_.setMessage(value);
                 }
                 constraintCase_ = 7;
                 return this;
@@ -70202,7 +67465,6 @@ public final class ContextOuterClass {
                 }
                 constraintCase_ = 7;
                 onChanged();
-                ;
                 return slaLatencyBuilder_;
             }
 
@@ -70281,8 +67543,9 @@ public final class ContextOuterClass {
                 } else {
                     if (constraintCase_ == 8) {
                         slaAvailabilityBuilder_.mergeFrom(value);
+                    } else {
+                        slaAvailabilityBuilder_.setMessage(value);
                     }
-                    slaAvailabilityBuilder_.setMessage(value);
                 }
                 constraintCase_ = 8;
                 return this;
@@ -70343,7 +67606,6 @@ public final class ContextOuterClass {
                 }
                 constraintCase_ = 8;
                 onChanged();
-                ;
                 return slaAvailabilityBuilder_;
             }
 
@@ -70422,8 +67684,9 @@ public final class ContextOuterClass {
                 } else {
                     if (constraintCase_ == 9) {
                         slaIsolationBuilder_.mergeFrom(value);
+                    } else {
+                        slaIsolationBuilder_.setMessage(value);
                     }
-                    slaIsolationBuilder_.setMessage(value);
                 }
                 constraintCase_ = 9;
                 return this;
@@ -70484,7 +67747,6 @@ public final class ContextOuterClass {
                 }
                 constraintCase_ = 9;
                 onChanged();
-                ;
                 return slaIsolationBuilder_;
             }
 
@@ -70563,8 +67825,9 @@ public final class ContextOuterClass {
                 } else {
                     if (constraintCase_ == 10) {
                         exclusionsBuilder_.mergeFrom(value);
+                    } else {
+                        exclusionsBuilder_.setMessage(value);
                     }
-                    exclusionsBuilder_.setMessage(value);
                 }
                 constraintCase_ = 10;
                 return this;
@@ -70625,7 +67888,6 @@ public final class ContextOuterClass {
                 }
                 constraintCase_ = 10;
                 onChanged();
-                ;
                 return exclusionsBuilder_;
             }
 
@@ -70656,7 +67918,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Constraint(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -70741,68 +68013,6 @@ public final class ContextOuterClass {
             return new TeraFlowController();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private TeraFlowController(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.ContextId.Builder subBuilder = null;
-                                if (contextId_ != null) {
-                                    subBuilder = contextId_.toBuilder();
-                                }
-                                contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(contextId_);
-                                    contextId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                ipAddress_ = s;
-                                break;
-                            }
-                        case 24:
-                            {
-                                port_ = input.readUInt32();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_TeraFlowController_descriptor;
         }
@@ -70839,12 +68049,13 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-            return getContextId();
+            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
         }
 
         public static final int IP_ADDRESS_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object ipAddress_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object ipAddress_ = "";
 
         /**
          * string ip_address = 2;
@@ -70881,7 +68092,7 @@ public final class ContextOuterClass {
 
         public static final int PORT_FIELD_NUMBER = 3;
 
-        private int port_;
+        private int port_ = 0;
 
         /**
          * uint32 port = 3;
@@ -70910,13 +68121,13 @@ public final class ContextOuterClass {
             if (contextId_ != null) {
                 output.writeMessage(1, getContextId());
             }
-            if (!getIpAddressBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ipAddress_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, ipAddress_);
             }
             if (port_ != 0) {
                 output.writeUInt32(3, port_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -70928,13 +68139,13 @@ public final class ContextOuterClass {
             if (contextId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextId());
             }
-            if (!getIpAddressBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ipAddress_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, ipAddress_);
             }
             if (port_ != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeUInt32Size(3, port_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -70958,7 +68169,7 @@ public final class ContextOuterClass {
                 return false;
             if (getPort() != other.getPort())
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -70978,7 +68189,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + getIpAddress().hashCode();
             hash = (37 * hash) + PORT_FIELD_NUMBER;
             hash = (53 * hash) + getPort();
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -71076,26 +68287,19 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.TeraFlowController.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (contextIdBuilder_ == null) {
-                    contextId_ = null;
-                } else {
-                    contextId_ = null;
+                bitField0_ = 0;
+                contextId_ = null;
+                if (contextIdBuilder_ != null) {
+                    contextIdBuilder_.dispose();
                     contextIdBuilder_ = null;
                 }
                 ipAddress_ = "";
@@ -71125,45 +68329,24 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.TeraFlowController buildPartial() {
                 context.ContextOuterClass.TeraFlowController result = new context.ContextOuterClass.TeraFlowController(this);
-                if (contextIdBuilder_ == null) {
-                    result.contextId_ = contextId_;
-                } else {
-                    result.contextId_ = contextIdBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.ipAddress_ = ipAddress_;
-                result.port_ = port_;
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.TeraFlowController result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.ipAddress_ = ipAddress_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.port_ = port_;
+                }
             }
 
             @java.lang.Override
@@ -71184,12 +68367,13 @@ public final class ContextOuterClass {
                 }
                 if (!other.getIpAddress().isEmpty()) {
                     ipAddress_ = other.ipAddress_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (other.getPort() != 0) {
                     setPort(other.getPort());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -71201,20 +68385,61 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.TeraFlowController parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    ipAddress_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 24:
+                                {
+                                    port_ = input.readUInt32();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.TeraFlowController) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.ContextId contextId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 contextIdBuilder_;
@@ -71224,7 +68449,7 @@ public final class ContextOuterClass {
              * @return Whether the contextId field is set.
              */
             public boolean hasContextId() {
-                return contextIdBuilder_ != null || contextId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -71248,10 +68473,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     contextId_ = value;
-                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -71261,10 +68487,11 @@ public final class ContextOuterClass {
             public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
                 if (contextIdBuilder_ == null) {
                     contextId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -71273,15 +68500,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
                 if (contextIdBuilder_ == null) {
-                    if (contextId_ != null) {
-                        contextId_ = context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
+                        getContextIdBuilder().mergeFrom(value);
                     } else {
                         contextId_ = value;
                     }
-                    onChanged();
                 } else {
                     contextIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -71289,13 +68517,13 @@ public final class ContextOuterClass {
              * .context.ContextId context_id = 1;
              */
             public Builder clearContextId() {
-                if (contextIdBuilder_ == null) {
-                    contextId_ = null;
-                    onChanged();
-                } else {
-                    contextId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                contextId_ = null;
+                if (contextIdBuilder_ != null) {
+                    contextIdBuilder_.dispose();
                     contextIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -71303,6 +68531,7 @@ public final class ContextOuterClass {
              * .context.ContextId context_id = 1;
              */
             public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getContextIdFieldBuilder().getBuilder();
             }
@@ -71372,6 +68601,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 ipAddress_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -71382,6 +68612,7 @@ public final class ContextOuterClass {
              */
             public Builder clearIpAddress() {
                 ipAddress_ = getDefaultInstance().getIpAddress();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -71397,6 +68628,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 ipAddress_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -71419,6 +68651,7 @@ public final class ContextOuterClass {
              */
             public Builder setPort(int value) {
                 port_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -71428,6 +68661,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearPort() {
+                bitField0_ = (bitField0_ & ~0x00000004);
                 port_ = 0;
                 onChanged();
                 return this;
@@ -71460,7 +68694,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public TeraFlowController parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new TeraFlowController(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -71528,62 +68772,6 @@ public final class ContextOuterClass {
             return new AuthenticationResult();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private AuthenticationResult(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.ContextId.Builder subBuilder = null;
-                                if (contextId_ != null) {
-                                    subBuilder = contextId_.toBuilder();
-                                }
-                                contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(contextId_);
-                                    contextId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 16:
-                            {
-                                authenticated_ = input.readBool();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor;
         }
@@ -71620,12 +68808,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-            return getContextId();
+            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
         }
 
         public static final int AUTHENTICATED_FIELD_NUMBER = 2;
 
-        private boolean authenticated_;
+        private boolean authenticated_ = false;
 
         /**
          * bool authenticated = 2;
@@ -71657,7 +68845,7 @@ public final class ContextOuterClass {
             if (authenticated_ != false) {
                 output.writeBool(2, authenticated_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -71672,7 +68860,7 @@ public final class ContextOuterClass {
             if (authenticated_ != false) {
                 size += com.google.protobuf.CodedOutputStream.computeBoolSize(2, authenticated_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -71694,7 +68882,7 @@ public final class ContextOuterClass {
             }
             if (getAuthenticated() != other.getAuthenticated())
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -71712,7 +68900,7 @@ public final class ContextOuterClass {
             }
             hash = (37 * hash) + AUTHENTICATED_FIELD_NUMBER;
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getAuthenticated());
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -71806,26 +68994,19 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.AuthenticationResult.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (contextIdBuilder_ == null) {
-                    contextId_ = null;
-                } else {
-                    contextId_ = null;
+                bitField0_ = 0;
+                contextId_ = null;
+                if (contextIdBuilder_ != null) {
+                    contextIdBuilder_.dispose();
                     contextIdBuilder_ = null;
                 }
                 authenticated_ = false;
@@ -71854,44 +69035,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.AuthenticationResult buildPartial() {
                 context.ContextOuterClass.AuthenticationResult result = new context.ContextOuterClass.AuthenticationResult(this);
-                if (contextIdBuilder_ == null) {
-                    result.contextId_ = contextId_;
-                } else {
-                    result.contextId_ = contextIdBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.authenticated_ = authenticated_;
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.AuthenticationResult result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.authenticated_ = authenticated_;
+                }
             }
 
             @java.lang.Override
@@ -71913,7 +69071,7 @@ public final class ContextOuterClass {
                 if (other.getAuthenticated() != false) {
                     setAuthenticated(other.getAuthenticated());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -71925,20 +69083,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.AuthenticationResult parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 16:
+                                {
+                                    authenticated_ = input.readBool();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 16
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.AuthenticationResult) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.ContextId contextId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 contextIdBuilder_;
@@ -71948,7 +69140,7 @@ public final class ContextOuterClass {
              * @return Whether the contextId field is set.
              */
             public boolean hasContextId() {
-                return contextIdBuilder_ != null || contextId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -71972,10 +69164,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     contextId_ = value;
-                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -71985,10 +69178,11 @@ public final class ContextOuterClass {
             public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
                 if (contextIdBuilder_ == null) {
                     contextId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -71997,15 +69191,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
                 if (contextIdBuilder_ == null) {
-                    if (contextId_ != null) {
-                        contextId_ = context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
+                        getContextIdBuilder().mergeFrom(value);
                     } else {
                         contextId_ = value;
                     }
-                    onChanged();
                 } else {
                     contextIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -72013,13 +69208,13 @@ public final class ContextOuterClass {
              * .context.ContextId context_id = 1;
              */
             public Builder clearContextId() {
-                if (contextIdBuilder_ == null) {
-                    contextId_ = null;
-                    onChanged();
-                } else {
-                    contextId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                contextId_ = null;
+                if (contextIdBuilder_ != null) {
+                    contextIdBuilder_.dispose();
                     contextIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -72027,6 +69222,7 @@ public final class ContextOuterClass {
              * .context.ContextId context_id = 1;
              */
             public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getContextIdFieldBuilder().getBuilder();
             }
@@ -72071,6 +69267,7 @@ public final class ContextOuterClass {
              */
             public Builder setAuthenticated(boolean value) {
                 authenticated_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -72080,6 +69277,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearAuthenticated() {
+                bitField0_ = (bitField0_ & ~0x00000002);
                 authenticated_ = false;
                 onChanged();
                 return this;
@@ -72112,7 +69310,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public AuthenticationResult parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new AuthenticationResult(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -72174,50 +69382,6 @@ public final class ContextOuterClass {
             return new OpticalConfigId();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private OpticalConfigId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                opticalconfigUuid_ = s;
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_OpticalConfigId_descriptor;
         }
@@ -72229,7 +69393,8 @@ public final class ContextOuterClass {
 
         public static final int OPTICALCONFIG_UUID_FIELD_NUMBER = 1;
 
-        private volatile java.lang.Object opticalconfigUuid_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object opticalconfigUuid_ = "";
 
         /**
          * string opticalconfig_uuid = 1;
@@ -72279,10 +69444,10 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (!getOpticalconfigUuidBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(opticalconfigUuid_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, opticalconfigUuid_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -72291,10 +69456,10 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (!getOpticalconfigUuidBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(opticalconfigUuid_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, opticalconfigUuid_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -72310,7 +69475,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.OpticalConfigId other = (context.ContextOuterClass.OpticalConfigId) obj;
             if (!getOpticalconfigUuid().equals(other.getOpticalconfigUuid()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -72324,7 +69489,7 @@ public final class ContextOuterClass {
             hash = (19 * hash) + getDescriptor().hashCode();
             hash = (37 * hash) + OPTICALCONFIG_UUID_FIELD_NUMBER;
             hash = (53 * hash) + getOpticalconfigUuid().hashCode();
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -72422,22 +69587,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.OpticalConfigId.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 opticalconfigUuid_ = "";
                 return this;
             }
@@ -72464,39 +69623,18 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.OpticalConfigId buildPartial() {
                 context.ContextOuterClass.OpticalConfigId result = new context.ContextOuterClass.OpticalConfigId(this);
-                result.opticalconfigUuid_ = opticalconfigUuid_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.OpticalConfigId result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.opticalconfigUuid_ = opticalconfigUuid_;
+                }
             }
 
             @java.lang.Override
@@ -72514,9 +69652,10 @@ public final class ContextOuterClass {
                     return this;
                 if (!other.getOpticalconfigUuid().isEmpty()) {
                     opticalconfigUuid_ = other.opticalconfigUuid_;
+                    bitField0_ |= 0x00000001;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -72528,20 +69667,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.OpticalConfigId parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    opticalconfigUuid_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.OpticalConfigId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private java.lang.Object opticalconfigUuid_ = "";
 
             /**
@@ -72585,6 +69751,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 opticalconfigUuid_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -72595,6 +69762,7 @@ public final class ContextOuterClass {
              */
             public Builder clearOpticalconfigUuid() {
                 opticalconfigUuid_ = getDefaultInstance().getOpticalconfigUuid();
+                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -72610,6 +69778,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 opticalconfigUuid_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -72641,7 +69810,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public OpticalConfigId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new OpticalConfigId(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -72716,63 +69895,6 @@ public final class ContextOuterClass {
             return new OpticalConfig();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private OpticalConfig(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.OpticalConfigId.Builder subBuilder = null;
-                                if (opticalconfigId_ != null) {
-                                    subBuilder = opticalconfigId_.toBuilder();
-                                }
-                                opticalconfigId_ = input.readMessage(context.ContextOuterClass.OpticalConfigId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(opticalconfigId_);
-                                    opticalconfigId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                config_ = s;
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_OpticalConfig_descriptor;
         }
@@ -72809,12 +69931,13 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder() {
-            return getOpticalconfigId();
+            return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_;
         }
 
         public static final int CONFIG_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object config_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object config_ = "";
 
         /**
          * string config = 2;
@@ -72867,10 +69990,10 @@ public final class ContextOuterClass {
             if (opticalconfigId_ != null) {
                 output.writeMessage(1, getOpticalconfigId());
             }
-            if (!getConfigBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(config_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, config_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -72882,10 +70005,10 @@ public final class ContextOuterClass {
             if (opticalconfigId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getOpticalconfigId());
             }
-            if (!getConfigBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(config_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, config_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -72907,7 +70030,7 @@ public final class ContextOuterClass {
             }
             if (!getConfig().equals(other.getConfig()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -72925,7 +70048,7 @@ public final class ContextOuterClass {
             }
             hash = (37 * hash) + CONFIG_FIELD_NUMBER;
             hash = (53 * hash) + getConfig().hashCode();
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -73019,26 +70142,19 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.OpticalConfig.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (opticalconfigIdBuilder_ == null) {
-                    opticalconfigId_ = null;
-                } else {
-                    opticalconfigId_ = null;
+                bitField0_ = 0;
+                opticalconfigId_ = null;
+                if (opticalconfigIdBuilder_ != null) {
+                    opticalconfigIdBuilder_.dispose();
                     opticalconfigIdBuilder_ = null;
                 }
                 config_ = "";
@@ -73067,44 +70183,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.OpticalConfig buildPartial() {
                 context.ContextOuterClass.OpticalConfig result = new context.ContextOuterClass.OpticalConfig(this);
-                if (opticalconfigIdBuilder_ == null) {
-                    result.opticalconfigId_ = opticalconfigId_;
-                } else {
-                    result.opticalconfigId_ = opticalconfigIdBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.config_ = config_;
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.OpticalConfig result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.opticalconfigId_ = opticalconfigIdBuilder_ == null ? opticalconfigId_ : opticalconfigIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.config_ = config_;
+                }
             }
 
             @java.lang.Override
@@ -73125,9 +70218,10 @@ public final class ContextOuterClass {
                 }
                 if (!other.getConfig().isEmpty()) {
                     config_ = other.config_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -73139,20 +70233,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.OpticalConfig parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getOpticalconfigIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    config_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.OpticalConfig) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.OpticalConfigId opticalconfigId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 opticalconfigIdBuilder_;
@@ -73162,7 +70290,7 @@ public final class ContextOuterClass {
              * @return Whether the opticalconfigId field is set.
              */
             public boolean hasOpticalconfigId() {
-                return opticalconfigIdBuilder_ != null || opticalconfigId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -73186,10 +70314,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     opticalconfigId_ = value;
-                    onChanged();
                 } else {
                     opticalconfigIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -73199,10 +70328,11 @@ public final class ContextOuterClass {
             public Builder setOpticalconfigId(context.ContextOuterClass.OpticalConfigId.Builder builderForValue) {
                 if (opticalconfigIdBuilder_ == null) {
                     opticalconfigId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     opticalconfigIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -73211,15 +70341,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeOpticalconfigId(context.ContextOuterClass.OpticalConfigId value) {
                 if (opticalconfigIdBuilder_ == null) {
-                    if (opticalconfigId_ != null) {
-                        opticalconfigId_ = context.ContextOuterClass.OpticalConfigId.newBuilder(opticalconfigId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && opticalconfigId_ != null && opticalconfigId_ != context.ContextOuterClass.OpticalConfigId.getDefaultInstance()) {
+                        getOpticalconfigIdBuilder().mergeFrom(value);
                     } else {
                         opticalconfigId_ = value;
                     }
-                    onChanged();
                 } else {
                     opticalconfigIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -73227,13 +70358,13 @@ public final class ContextOuterClass {
              * .context.OpticalConfigId opticalconfig_id = 1;
              */
             public Builder clearOpticalconfigId() {
-                if (opticalconfigIdBuilder_ == null) {
-                    opticalconfigId_ = null;
-                    onChanged();
-                } else {
-                    opticalconfigId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                opticalconfigId_ = null;
+                if (opticalconfigIdBuilder_ != null) {
+                    opticalconfigIdBuilder_.dispose();
                     opticalconfigIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -73241,6 +70372,7 @@ public final class ContextOuterClass {
              * .context.OpticalConfigId opticalconfig_id = 1;
              */
             public context.ContextOuterClass.OpticalConfigId.Builder getOpticalconfigIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getOpticalconfigIdFieldBuilder().getBuilder();
             }
@@ -73310,6 +70442,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 config_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -73320,6 +70453,7 @@ public final class ContextOuterClass {
              */
             public Builder clearConfig() {
                 config_ = getDefaultInstance().getConfig();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -73335,6 +70469,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 config_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -73366,7 +70501,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public OpticalConfig parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new OpticalConfig(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -73437,57 +70582,6 @@ public final class ContextOuterClass {
             return new OpticalConfigList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private OpticalConfigList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    opticalconfigs_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                opticalconfigs_.add(input.readMessage(context.ContextOuterClass.OpticalConfig.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    opticalconfigs_ = java.util.Collections.unmodifiableList(opticalconfigs_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_OpticalConfigList_descriptor;
         }
@@ -73499,6 +70593,7 @@ public final class ContextOuterClass {
 
         public static final int OPTICALCONFIGS_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List opticalconfigs_;
 
         /**
@@ -73559,7 +70654,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < opticalconfigs_.size(); i++) {
                 output.writeMessage(1, opticalconfigs_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -73571,7 +70666,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < opticalconfigs_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, opticalconfigs_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -73587,7 +70682,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.OpticalConfigList other = (context.ContextOuterClass.OpticalConfigList) obj;
             if (!getOpticalconfigsList().equals(other.getOpticalconfigsList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -73603,7 +70698,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + OPTICALCONFIGS_FIELD_NUMBER;
                 hash = (53 * hash) + getOpticalconfigsList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -73697,29 +70792,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.OpticalConfigList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getOpticalconfigsFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (opticalconfigsBuilder_ == null) {
                     opticalconfigs_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    opticalconfigs_ = null;
                     opticalconfigsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -73745,7 +70834,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.OpticalConfigList buildPartial() {
                 context.ContextOuterClass.OpticalConfigList result = new context.ContextOuterClass.OpticalConfigList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.OpticalConfigList result) {
                 if (opticalconfigsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         opticalconfigs_ = java.util.Collections.unmodifiableList(opticalconfigs_);
@@ -73755,38 +70852,10 @@ public final class ContextOuterClass {
                 } else {
                     result.opticalconfigs_ = opticalconfigsBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
             }
 
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.OpticalConfigList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -73826,7 +70895,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -73838,17 +70907,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.OpticalConfigList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.OpticalConfig m = input.readMessage(context.ContextOuterClass.OpticalConfig.parser(), extensionRegistry);
+                                    if (opticalconfigsBuilder_ == null) {
+                                        ensureOpticalconfigsIsMutable();
+                                        opticalconfigs_.add(m);
+                                    } else {
+                                        opticalconfigsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.OpticalConfigList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -74118,7 +71217,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public OpticalConfigList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new OpticalConfigList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -74180,57 +71289,6 @@ public final class ContextOuterClass {
             return new OpticalLinkId();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private OpticalLinkId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
-                                if (opticalLinkUuid_ != null) {
-                                    subBuilder = opticalLinkUuid_.toBuilder();
-                                }
-                                opticalLinkUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(opticalLinkUuid_);
-                                    opticalLinkUuid_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_OpticalLinkId_descriptor;
         }
@@ -74267,7 +71325,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getOpticalLinkUuidOrBuilder() {
-            return getOpticalLinkUuid();
+            return opticalLinkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : opticalLinkUuid_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -74288,7 +71346,7 @@ public final class ContextOuterClass {
             if (opticalLinkUuid_ != null) {
                 output.writeMessage(1, getOpticalLinkUuid());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -74300,7 +71358,7 @@ public final class ContextOuterClass {
             if (opticalLinkUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getOpticalLinkUuid());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -74320,7 +71378,7 @@ public final class ContextOuterClass {
                 if (!getOpticalLinkUuid().equals(other.getOpticalLinkUuid()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -74336,7 +71394,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + OPTICAL_LINK_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getOpticalLinkUuid().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -74430,26 +71488,19 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.OpticalLinkId.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (opticalLinkUuidBuilder_ == null) {
-                    opticalLinkUuid_ = null;
-                } else {
-                    opticalLinkUuid_ = null;
+                bitField0_ = 0;
+                opticalLinkUuid_ = null;
+                if (opticalLinkUuidBuilder_ != null) {
+                    opticalLinkUuidBuilder_.dispose();
                     opticalLinkUuidBuilder_ = null;
                 }
                 return this;
@@ -74477,43 +71528,18 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.OpticalLinkId buildPartial() {
                 context.ContextOuterClass.OpticalLinkId result = new context.ContextOuterClass.OpticalLinkId(this);
-                if (opticalLinkUuidBuilder_ == null) {
-                    result.opticalLinkUuid_ = opticalLinkUuid_;
-                } else {
-                    result.opticalLinkUuid_ = opticalLinkUuidBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.OpticalLinkId result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.opticalLinkUuid_ = opticalLinkUuidBuilder_ == null ? opticalLinkUuid_ : opticalLinkUuidBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -74532,7 +71558,7 @@ public final class ContextOuterClass {
                 if (other.hasOpticalLinkUuid()) {
                     mergeOpticalLinkUuid(other.getOpticalLinkUuid());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -74544,20 +71570,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.OpticalLinkId parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getOpticalLinkUuidFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.OpticalLinkId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.Uuid opticalLinkUuid_;
 
             private com.google.protobuf.SingleFieldBuilderV3 opticalLinkUuidBuilder_;
@@ -74567,7 +71620,7 @@ public final class ContextOuterClass {
              * @return Whether the opticalLinkUuid field is set.
              */
             public boolean hasOpticalLinkUuid() {
-                return opticalLinkUuidBuilder_ != null || opticalLinkUuid_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -74591,10 +71644,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     opticalLinkUuid_ = value;
-                    onChanged();
                 } else {
                     opticalLinkUuidBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -74604,10 +71658,11 @@ public final class ContextOuterClass {
             public Builder setOpticalLinkUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (opticalLinkUuidBuilder_ == null) {
                     opticalLinkUuid_ = builderForValue.build();
-                    onChanged();
                 } else {
                     opticalLinkUuidBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -74616,15 +71671,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeOpticalLinkUuid(context.ContextOuterClass.Uuid value) {
                 if (opticalLinkUuidBuilder_ == null) {
-                    if (opticalLinkUuid_ != null) {
-                        opticalLinkUuid_ = context.ContextOuterClass.Uuid.newBuilder(opticalLinkUuid_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && opticalLinkUuid_ != null && opticalLinkUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getOpticalLinkUuidBuilder().mergeFrom(value);
                     } else {
                         opticalLinkUuid_ = value;
                     }
-                    onChanged();
                 } else {
                     opticalLinkUuidBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -74632,13 +71688,13 @@ public final class ContextOuterClass {
              * .context.Uuid optical_link_uuid = 1;
              */
             public Builder clearOpticalLinkUuid() {
-                if (opticalLinkUuidBuilder_ == null) {
-                    opticalLinkUuid_ = null;
-                    onChanged();
-                } else {
-                    opticalLinkUuid_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                opticalLinkUuid_ = null;
+                if (opticalLinkUuidBuilder_ != null) {
+                    opticalLinkUuidBuilder_.dispose();
                     opticalLinkUuidBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -74646,6 +71702,7 @@ public final class ContextOuterClass {
              * .context.Uuid optical_link_uuid = 1;
              */
             public context.ContextOuterClass.Uuid.Builder getOpticalLinkUuidBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getOpticalLinkUuidFieldBuilder().getBuilder();
             }
@@ -74699,7 +71756,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public OpticalLinkId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new OpticalLinkId(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -74761,57 +71828,6 @@ public final class ContextOuterClass {
             return new FiberId();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private FiberId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
-                                if (fiberUuid_ != null) {
-                                    subBuilder = fiberUuid_.toBuilder();
-                                }
-                                fiberUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(fiberUuid_);
-                                    fiberUuid_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_FiberId_descriptor;
         }
@@ -74848,7 +71864,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getFiberUuidOrBuilder() {
-            return getFiberUuid();
+            return fiberUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : fiberUuid_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -74869,7 +71885,7 @@ public final class ContextOuterClass {
             if (fiberUuid_ != null) {
                 output.writeMessage(1, getFiberUuid());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -74881,7 +71897,7 @@ public final class ContextOuterClass {
             if (fiberUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getFiberUuid());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -74901,7 +71917,7 @@ public final class ContextOuterClass {
                 if (!getFiberUuid().equals(other.getFiberUuid()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -74917,7 +71933,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + FIBER_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getFiberUuid().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -75011,26 +72027,19 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.FiberId.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (fiberUuidBuilder_ == null) {
-                    fiberUuid_ = null;
-                } else {
-                    fiberUuid_ = null;
+                bitField0_ = 0;
+                fiberUuid_ = null;
+                if (fiberUuidBuilder_ != null) {
+                    fiberUuidBuilder_.dispose();
                     fiberUuidBuilder_ = null;
                 }
                 return this;
@@ -75058,43 +72067,18 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.FiberId buildPartial() {
                 context.ContextOuterClass.FiberId result = new context.ContextOuterClass.FiberId(this);
-                if (fiberUuidBuilder_ == null) {
-                    result.fiberUuid_ = fiberUuid_;
-                } else {
-                    result.fiberUuid_ = fiberUuidBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.FiberId result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.fiberUuid_ = fiberUuidBuilder_ == null ? fiberUuid_ : fiberUuidBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -75113,7 +72097,7 @@ public final class ContextOuterClass {
                 if (other.hasFiberUuid()) {
                     mergeFiberUuid(other.getFiberUuid());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -75125,20 +72109,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.FiberId parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getFiberUuidFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.FiberId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.Uuid fiberUuid_;
 
             private com.google.protobuf.SingleFieldBuilderV3 fiberUuidBuilder_;
@@ -75148,7 +72159,7 @@ public final class ContextOuterClass {
              * @return Whether the fiberUuid field is set.
              */
             public boolean hasFiberUuid() {
-                return fiberUuidBuilder_ != null || fiberUuid_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -75172,10 +72183,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     fiberUuid_ = value;
-                    onChanged();
                 } else {
                     fiberUuidBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -75185,10 +72197,11 @@ public final class ContextOuterClass {
             public Builder setFiberUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (fiberUuidBuilder_ == null) {
                     fiberUuid_ = builderForValue.build();
-                    onChanged();
                 } else {
                     fiberUuidBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -75197,15 +72210,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeFiberUuid(context.ContextOuterClass.Uuid value) {
                 if (fiberUuidBuilder_ == null) {
-                    if (fiberUuid_ != null) {
-                        fiberUuid_ = context.ContextOuterClass.Uuid.newBuilder(fiberUuid_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && fiberUuid_ != null && fiberUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getFiberUuidBuilder().mergeFrom(value);
                     } else {
                         fiberUuid_ = value;
                     }
-                    onChanged();
                 } else {
                     fiberUuidBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -75213,13 +72227,13 @@ public final class ContextOuterClass {
              * .context.Uuid fiber_uuid = 1;
              */
             public Builder clearFiberUuid() {
-                if (fiberUuidBuilder_ == null) {
-                    fiberUuid_ = null;
-                    onChanged();
-                } else {
-                    fiberUuid_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                fiberUuid_ = null;
+                if (fiberUuidBuilder_ != null) {
+                    fiberUuidBuilder_.dispose();
                     fiberUuidBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -75227,6 +72241,7 @@ public final class ContextOuterClass {
              * .context.Uuid fiber_uuid = 1;
              */
             public context.ContextOuterClass.Uuid.Builder getFiberUuidBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getFiberUuidFieldBuilder().getBuilder();
             }
@@ -75280,7 +72295,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public FiberId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new FiberId(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -75479,179 +72504,6 @@ public final class ContextOuterClass {
             return new Fiber();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Fiber(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                srcPort_ = s;
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                dstPort_ = s;
-                                break;
-                            }
-                        case 26:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                localPeerPort_ = s;
-                                break;
-                            }
-                        case 34:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                remotePeerPort_ = s;
-                                break;
-                            }
-                        case 40:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    cSlots_ = newIntList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                cSlots_.addInt(input.readInt32());
-                                break;
-                            }
-                        case 42:
-                            {
-                                int length = input.readRawVarint32();
-                                int limit = input.pushLimit(length);
-                                if (!((mutable_bitField0_ & 0x00000001) != 0) && input.getBytesUntilLimit() > 0) {
-                                    cSlots_ = newIntList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                while (input.getBytesUntilLimit() > 0) {
-                                    cSlots_.addInt(input.readInt32());
-                                }
-                                input.popLimit(limit);
-                                break;
-                            }
-                        case 48:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
-                                    lSlots_ = newIntList();
-                                    mutable_bitField0_ |= 0x00000002;
-                                }
-                                lSlots_.addInt(input.readInt32());
-                                break;
-                            }
-                        case 50:
-                            {
-                                int length = input.readRawVarint32();
-                                int limit = input.pushLimit(length);
-                                if (!((mutable_bitField0_ & 0x00000002) != 0) && input.getBytesUntilLimit() > 0) {
-                                    lSlots_ = newIntList();
-                                    mutable_bitField0_ |= 0x00000002;
-                                }
-                                while (input.getBytesUntilLimit() > 0) {
-                                    lSlots_.addInt(input.readInt32());
-                                }
-                                input.popLimit(limit);
-                                break;
-                            }
-                        case 56:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000004) != 0)) {
-                                    sSlots_ = newIntList();
-                                    mutable_bitField0_ |= 0x00000004;
-                                }
-                                sSlots_.addInt(input.readInt32());
-                                break;
-                            }
-                        case 58:
-                            {
-                                int length = input.readRawVarint32();
-                                int limit = input.pushLimit(length);
-                                if (!((mutable_bitField0_ & 0x00000004) != 0) && input.getBytesUntilLimit() > 0) {
-                                    sSlots_ = newIntList();
-                                    mutable_bitField0_ |= 0x00000004;
-                                }
-                                while (input.getBytesUntilLimit() > 0) {
-                                    sSlots_.addInt(input.readInt32());
-                                }
-                                input.popLimit(limit);
-                                break;
-                            }
-                        case 69:
-                            {
-                                length_ = input.readFloat();
-                                break;
-                            }
-                        case 72:
-                            {
-                                used_ = input.readBool();
-                                break;
-                            }
-                        case 82:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                iD_ = s;
-                                break;
-                            }
-                        case 90:
-                            {
-                                context.ContextOuterClass.FiberId.Builder subBuilder = null;
-                                if (fiberUuid_ != null) {
-                                    subBuilder = fiberUuid_.toBuilder();
-                                }
-                                fiberUuid_ = input.readMessage(context.ContextOuterClass.FiberId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(fiberUuid_);
-                                    fiberUuid_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    // C
-                    cSlots_.makeImmutable();
-                }
-                if (((mutable_bitField0_ & 0x00000002) != 0)) {
-                    // C
-                    lSlots_.makeImmutable();
-                }
-                if (((mutable_bitField0_ & 0x00000004) != 0)) {
-                    // C
-                    sSlots_.makeImmutable();
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Fiber_descriptor;
         }
@@ -75663,7 +72515,8 @@ public final class ContextOuterClass {
 
         public static final int ID_FIELD_NUMBER = 10;
 
-        private volatile java.lang.Object iD_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object iD_ = "";
 
         /**
          * string ID = 10;
@@ -75700,7 +72553,8 @@ public final class ContextOuterClass {
 
         public static final int SRC_PORT_FIELD_NUMBER = 1;
 
-        private volatile java.lang.Object srcPort_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object srcPort_ = "";
 
         /**
          * string src_port = 1;
@@ -75737,7 +72591,8 @@ public final class ContextOuterClass {
 
         public static final int DST_PORT_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object dstPort_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object dstPort_ = "";
 
         /**
          * string dst_port = 2;
@@ -75774,7 +72629,8 @@ public final class ContextOuterClass {
 
         public static final int LOCAL_PEER_PORT_FIELD_NUMBER = 3;
 
-        private volatile java.lang.Object localPeerPort_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object localPeerPort_ = "";
 
         /**
          * string local_peer_port = 3;
@@ -75811,7 +72667,8 @@ public final class ContextOuterClass {
 
         public static final int REMOTE_PEER_PORT_FIELD_NUMBER = 4;
 
-        private volatile java.lang.Object remotePeerPort_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object remotePeerPort_ = "";
 
         /**
          * string remote_peer_port = 4;
@@ -75848,6 +72705,7 @@ public final class ContextOuterClass {
 
         public static final int C_SLOTS_FIELD_NUMBER = 5;
 
+        @SuppressWarnings("serial")
         private com.google.protobuf.Internal.IntList cSlots_;
 
         /**
@@ -75880,6 +72738,7 @@ public final class ContextOuterClass {
 
         public static final int L_SLOTS_FIELD_NUMBER = 6;
 
+        @SuppressWarnings("serial")
         private com.google.protobuf.Internal.IntList lSlots_;
 
         /**
@@ -75912,6 +72771,7 @@ public final class ContextOuterClass {
 
         public static final int S_SLOTS_FIELD_NUMBER = 7;
 
+        @SuppressWarnings("serial")
         private com.google.protobuf.Internal.IntList sSlots_;
 
         /**
@@ -75944,7 +72804,7 @@ public final class ContextOuterClass {
 
         public static final int LENGTH_FIELD_NUMBER = 8;
 
-        private float length_;
+        private float length_ = 0F;
 
         /**
          * float length = 8;
@@ -75957,7 +72817,7 @@ public final class ContextOuterClass {
 
         public static final int USED_FIELD_NUMBER = 9;
 
-        private boolean used_;
+        private boolean used_ = false;
 
         /**
          * bool used = 9;
@@ -75995,7 +72855,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.FiberIdOrBuilder getFiberUuidOrBuilder() {
-            return getFiberUuid();
+            return fiberUuid_ == null ? context.ContextOuterClass.FiberId.getDefaultInstance() : fiberUuid_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -76014,16 +72874,16 @@ public final class ContextOuterClass {
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
             getSerializedSize();
-            if (!getSrcPortBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcPort_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, srcPort_);
             }
-            if (!getDstPortBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstPort_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dstPort_);
             }
-            if (!getLocalPeerPortBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(localPeerPort_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 3, localPeerPort_);
             }
-            if (!getRemotePeerPortBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(remotePeerPort_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 4, remotePeerPort_);
             }
             if (getCSlotsList().size() > 0) {
@@ -76047,19 +72907,19 @@ public final class ContextOuterClass {
             for (int i = 0; i < sSlots_.size(); i++) {
                 output.writeInt32NoTag(sSlots_.getInt(i));
             }
-            if (length_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(length_) != 0) {
                 output.writeFloat(8, length_);
             }
             if (used_ != false) {
                 output.writeBool(9, used_);
             }
-            if (!getIDBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(iD_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 10, iD_);
             }
             if (fiberUuid_ != null) {
                 output.writeMessage(11, getFiberUuid());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -76068,16 +72928,16 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (!getSrcPortBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcPort_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, srcPort_);
             }
-            if (!getDstPortBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstPort_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dstPort_);
             }
-            if (!getLocalPeerPortBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(localPeerPort_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, localPeerPort_);
             }
-            if (!getRemotePeerPortBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(remotePeerPort_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, remotePeerPort_);
             }
             {
@@ -76116,19 +72976,19 @@ public final class ContextOuterClass {
                 }
                 sSlotsMemoizedSerializedSize = dataSize;
             }
-            if (length_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(length_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(8, length_);
             }
             if (used_ != false) {
                 size += com.google.protobuf.CodedOutputStream.computeBoolSize(9, used_);
             }
-            if (!getIDBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(iD_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, iD_);
             }
             if (fiberUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(11, getFiberUuid());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -76168,7 +73028,7 @@ public final class ContextOuterClass {
                 if (!getFiberUuid().equals(other.getFiberUuid()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -76210,7 +73070,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + FIBER_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getFiberUuid().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -76304,39 +73164,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Fiber.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 iD_ = "";
                 srcPort_ = "";
                 dstPort_ = "";
                 localPeerPort_ = "";
                 remotePeerPort_ = "";
                 cSlots_ = emptyIntList();
-                bitField0_ = (bitField0_ & ~0x00000001);
                 lSlots_ = emptyIntList();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 sSlots_ = emptyIntList();
-                bitField0_ = (bitField0_ & ~0x00000004);
                 length_ = 0F;
                 used_ = false;
-                if (fiberUuidBuilder_ == null) {
-                    fiberUuid_ = null;
-                } else {
-                    fiberUuid_ = null;
+                fiberUuid_ = null;
+                if (fiberUuidBuilder_ != null) {
+                    fiberUuidBuilder_.dispose();
                     fiberUuidBuilder_ = null;
                 }
                 return this;
@@ -76364,66 +73214,58 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Fiber buildPartial() {
                 context.ContextOuterClass.Fiber result = new context.ContextOuterClass.Fiber(this);
-                int from_bitField0_ = bitField0_;
-                result.iD_ = iD_;
-                result.srcPort_ = srcPort_;
-                result.dstPort_ = dstPort_;
-                result.localPeerPort_ = localPeerPort_;
-                result.remotePeerPort_ = remotePeerPort_;
-                if (((bitField0_ & 0x00000001) != 0)) {
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.Fiber result) {
+                if (((bitField0_ & 0x00000020) != 0)) {
                     cSlots_.makeImmutable();
-                    bitField0_ = (bitField0_ & ~0x00000001);
+                    bitField0_ = (bitField0_ & ~0x00000020);
                 }
                 result.cSlots_ = cSlots_;
-                if (((bitField0_ & 0x00000002) != 0)) {
+                if (((bitField0_ & 0x00000040) != 0)) {
                     lSlots_.makeImmutable();
-                    bitField0_ = (bitField0_ & ~0x00000002);
+                    bitField0_ = (bitField0_ & ~0x00000040);
                 }
                 result.lSlots_ = lSlots_;
-                if (((bitField0_ & 0x00000004) != 0)) {
+                if (((bitField0_ & 0x00000080) != 0)) {
                     sSlots_.makeImmutable();
-                    bitField0_ = (bitField0_ & ~0x00000004);
+                    bitField0_ = (bitField0_ & ~0x00000080);
                 }
                 result.sSlots_ = sSlots_;
-                result.length_ = length_;
-                result.used_ = used_;
-                if (fiberUuidBuilder_ == null) {
-                    result.fiberUuid_ = fiberUuid_;
-                } else {
-                    result.fiberUuid_ = fiberUuidBuilder_.build();
-                }
-                onBuilt();
-                return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.Fiber result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.iD_ = iD_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.srcPort_ = srcPort_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.dstPort_ = dstPort_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.localPeerPort_ = localPeerPort_;
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.remotePeerPort_ = remotePeerPort_;
+                }
+                if (((from_bitField0_ & 0x00000100) != 0)) {
+                    result.length_ = length_;
+                }
+                if (((from_bitField0_ & 0x00000200) != 0)) {
+                    result.used_ = used_;
+                }
+                if (((from_bitField0_ & 0x00000400) != 0)) {
+                    result.fiberUuid_ = fiberUuidBuilder_ == null ? fiberUuid_ : fiberUuidBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -76441,28 +73283,33 @@ public final class ContextOuterClass {
                     return this;
                 if (!other.getID().isEmpty()) {
                     iD_ = other.iD_;
+                    bitField0_ |= 0x00000001;
                     onChanged();
                 }
                 if (!other.getSrcPort().isEmpty()) {
                     srcPort_ = other.srcPort_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (!other.getDstPort().isEmpty()) {
                     dstPort_ = other.dstPort_;
+                    bitField0_ |= 0x00000004;
                     onChanged();
                 }
                 if (!other.getLocalPeerPort().isEmpty()) {
                     localPeerPort_ = other.localPeerPort_;
+                    bitField0_ |= 0x00000008;
                     onChanged();
                 }
                 if (!other.getRemotePeerPort().isEmpty()) {
                     remotePeerPort_ = other.remotePeerPort_;
+                    bitField0_ |= 0x00000010;
                     onChanged();
                 }
                 if (!other.cSlots_.isEmpty()) {
                     if (cSlots_.isEmpty()) {
                         cSlots_ = other.cSlots_;
-                        bitField0_ = (bitField0_ & ~0x00000001);
+                        bitField0_ = (bitField0_ & ~0x00000020);
                     } else {
                         ensureCSlotsIsMutable();
                         cSlots_.addAll(other.cSlots_);
@@ -76472,7 +73319,7 @@ public final class ContextOuterClass {
                 if (!other.lSlots_.isEmpty()) {
                     if (lSlots_.isEmpty()) {
                         lSlots_ = other.lSlots_;
-                        bitField0_ = (bitField0_ & ~0x00000002);
+                        bitField0_ = (bitField0_ & ~0x00000040);
                     } else {
                         ensureLSlotsIsMutable();
                         lSlots_.addAll(other.lSlots_);
@@ -76482,7 +73329,7 @@ public final class ContextOuterClass {
                 if (!other.sSlots_.isEmpty()) {
                     if (sSlots_.isEmpty()) {
                         sSlots_ = other.sSlots_;
-                        bitField0_ = (bitField0_ & ~0x00000004);
+                        bitField0_ = (bitField0_ & ~0x00000080);
                     } else {
                         ensureSSlotsIsMutable();
                         sSlots_.addAll(other.sSlots_);
@@ -76498,7 +73345,7 @@ public final class ContextOuterClass {
                 if (other.hasFiberUuid()) {
                     mergeFiberUuid(other.getFiberUuid());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -76510,17 +73357,151 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Fiber parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    srcPort_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    dstPort_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    localPeerPort_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    remotePeerPort_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 34
+                            case 40:
+                                {
+                                    int v = input.readInt32();
+                                    ensureCSlotsIsMutable();
+                                    cSlots_.addInt(v);
+                                    break;
+                                }
+                            // case 40
+                            case 42:
+                                {
+                                    int length = input.readRawVarint32();
+                                    int limit = input.pushLimit(length);
+                                    ensureCSlotsIsMutable();
+                                    while (input.getBytesUntilLimit() > 0) {
+                                        cSlots_.addInt(input.readInt32());
+                                    }
+                                    input.popLimit(limit);
+                                    break;
+                                }
+                            // case 42
+                            case 48:
+                                {
+                                    int v = input.readInt32();
+                                    ensureLSlotsIsMutable();
+                                    lSlots_.addInt(v);
+                                    break;
+                                }
+                            // case 48
+                            case 50:
+                                {
+                                    int length = input.readRawVarint32();
+                                    int limit = input.pushLimit(length);
+                                    ensureLSlotsIsMutable();
+                                    while (input.getBytesUntilLimit() > 0) {
+                                        lSlots_.addInt(input.readInt32());
+                                    }
+                                    input.popLimit(limit);
+                                    break;
+                                }
+                            // case 50
+                            case 56:
+                                {
+                                    int v = input.readInt32();
+                                    ensureSSlotsIsMutable();
+                                    sSlots_.addInt(v);
+                                    break;
+                                }
+                            // case 56
+                            case 58:
+                                {
+                                    int length = input.readRawVarint32();
+                                    int limit = input.pushLimit(length);
+                                    ensureSSlotsIsMutable();
+                                    while (input.getBytesUntilLimit() > 0) {
+                                        sSlots_.addInt(input.readInt32());
+                                    }
+                                    input.popLimit(limit);
+                                    break;
+                                }
+                            // case 58
+                            case 69:
+                                {
+                                    length_ = input.readFloat();
+                                    bitField0_ |= 0x00000100;
+                                    break;
+                                }
+                            // case 69
+                            case 72:
+                                {
+                                    used_ = input.readBool();
+                                    bitField0_ |= 0x00000200;
+                                    break;
+                                }
+                            // case 72
+                            case 82:
+                                {
+                                    iD_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 82
+                            case 90:
+                                {
+                                    input.readMessage(getFiberUuidFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000400;
+                                    break;
+                                }
+                            // case 90
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Fiber) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -76569,6 +73550,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 iD_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -76579,6 +73561,7 @@ public final class ContextOuterClass {
              */
             public Builder clearID() {
                 iD_ = getDefaultInstance().getID();
+                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -76594,6 +73577,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 iD_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -76641,6 +73625,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 srcPort_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -76651,6 +73636,7 @@ public final class ContextOuterClass {
              */
             public Builder clearSrcPort() {
                 srcPort_ = getDefaultInstance().getSrcPort();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -76666,6 +73652,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 srcPort_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -76713,6 +73700,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 dstPort_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -76723,6 +73711,7 @@ public final class ContextOuterClass {
              */
             public Builder clearDstPort() {
                 dstPort_ = getDefaultInstance().getDstPort();
+                bitField0_ = (bitField0_ & ~0x00000004);
                 onChanged();
                 return this;
             }
@@ -76738,6 +73727,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 dstPort_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -76785,6 +73775,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 localPeerPort_ = value;
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -76795,6 +73786,7 @@ public final class ContextOuterClass {
              */
             public Builder clearLocalPeerPort() {
                 localPeerPort_ = getDefaultInstance().getLocalPeerPort();
+                bitField0_ = (bitField0_ & ~0x00000008);
                 onChanged();
                 return this;
             }
@@ -76810,6 +73802,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 localPeerPort_ = value;
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -76857,6 +73850,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 remotePeerPort_ = value;
+                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -76867,6 +73861,7 @@ public final class ContextOuterClass {
              */
             public Builder clearRemotePeerPort() {
                 remotePeerPort_ = getDefaultInstance().getRemotePeerPort();
+                bitField0_ = (bitField0_ & ~0x00000010);
                 onChanged();
                 return this;
             }
@@ -76882,6 +73877,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 remotePeerPort_ = value;
+                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -76889,9 +73885,9 @@ public final class ContextOuterClass {
             private com.google.protobuf.Internal.IntList cSlots_ = emptyIntList();
 
             private void ensureCSlotsIsMutable() {
-                if (!((bitField0_ & 0x00000001) != 0)) {
+                if (!((bitField0_ & 0x00000020) != 0)) {
                     cSlots_ = mutableCopy(cSlots_);
-                    bitField0_ |= 0x00000001;
+                    bitField0_ |= 0x00000020;
                 }
             }
 
@@ -76900,7 +73896,7 @@ public final class ContextOuterClass {
              * @return A list containing the cSlots.
              */
             public java.util.List getCSlotsList() {
-                return ((bitField0_ & 0x00000001) != 0) ? java.util.Collections.unmodifiableList(cSlots_) : cSlots_;
+                return ((bitField0_ & 0x00000020) != 0) ? java.util.Collections.unmodifiableList(cSlots_) : cSlots_;
             }
 
             /**
@@ -76963,7 +73959,7 @@ public final class ContextOuterClass {
              */
             public Builder clearCSlots() {
                 cSlots_ = emptyIntList();
-                bitField0_ = (bitField0_ & ~0x00000001);
+                bitField0_ = (bitField0_ & ~0x00000020);
                 onChanged();
                 return this;
             }
@@ -76971,9 +73967,9 @@ public final class ContextOuterClass {
             private com.google.protobuf.Internal.IntList lSlots_ = emptyIntList();
 
             private void ensureLSlotsIsMutable() {
-                if (!((bitField0_ & 0x00000002) != 0)) {
+                if (!((bitField0_ & 0x00000040) != 0)) {
                     lSlots_ = mutableCopy(lSlots_);
-                    bitField0_ |= 0x00000002;
+                    bitField0_ |= 0x00000040;
                 }
             }
 
@@ -76982,7 +73978,7 @@ public final class ContextOuterClass {
              * @return A list containing the lSlots.
              */
             public java.util.List getLSlotsList() {
-                return ((bitField0_ & 0x00000002) != 0) ? java.util.Collections.unmodifiableList(lSlots_) : lSlots_;
+                return ((bitField0_ & 0x00000040) != 0) ? java.util.Collections.unmodifiableList(lSlots_) : lSlots_;
             }
 
             /**
@@ -77045,7 +74041,7 @@ public final class ContextOuterClass {
              */
             public Builder clearLSlots() {
                 lSlots_ = emptyIntList();
-                bitField0_ = (bitField0_ & ~0x00000002);
+                bitField0_ = (bitField0_ & ~0x00000040);
                 onChanged();
                 return this;
             }
@@ -77053,9 +74049,9 @@ public final class ContextOuterClass {
             private com.google.protobuf.Internal.IntList sSlots_ = emptyIntList();
 
             private void ensureSSlotsIsMutable() {
-                if (!((bitField0_ & 0x00000004) != 0)) {
+                if (!((bitField0_ & 0x00000080) != 0)) {
                     sSlots_ = mutableCopy(sSlots_);
-                    bitField0_ |= 0x00000004;
+                    bitField0_ |= 0x00000080;
                 }
             }
 
@@ -77064,7 +74060,7 @@ public final class ContextOuterClass {
              * @return A list containing the sSlots.
              */
             public java.util.List getSSlotsList() {
-                return ((bitField0_ & 0x00000004) != 0) ? java.util.Collections.unmodifiableList(sSlots_) : sSlots_;
+                return ((bitField0_ & 0x00000080) != 0) ? java.util.Collections.unmodifiableList(sSlots_) : sSlots_;
             }
 
             /**
@@ -77127,7 +74123,7 @@ public final class ContextOuterClass {
              */
             public Builder clearSSlots() {
                 sSlots_ = emptyIntList();
-                bitField0_ = (bitField0_ & ~0x00000004);
+                bitField0_ = (bitField0_ & ~0x00000080);
                 onChanged();
                 return this;
             }
@@ -77150,6 +74146,7 @@ public final class ContextOuterClass {
              */
             public Builder setLength(float value) {
                 length_ = value;
+                bitField0_ |= 0x00000100;
                 onChanged();
                 return this;
             }
@@ -77159,6 +74156,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearLength() {
+                bitField0_ = (bitField0_ & ~0x00000100);
                 length_ = 0F;
                 onChanged();
                 return this;
@@ -77182,6 +74180,7 @@ public final class ContextOuterClass {
              */
             public Builder setUsed(boolean value) {
                 used_ = value;
+                bitField0_ |= 0x00000200;
                 onChanged();
                 return this;
             }
@@ -77191,6 +74190,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearUsed() {
+                bitField0_ = (bitField0_ & ~0x00000200);
                 used_ = false;
                 onChanged();
                 return this;
@@ -77205,7 +74205,7 @@ public final class ContextOuterClass {
              * @return Whether the fiberUuid field is set.
              */
             public boolean hasFiberUuid() {
-                return fiberUuidBuilder_ != null || fiberUuid_ != null;
+                return ((bitField0_ & 0x00000400) != 0);
             }
 
             /**
@@ -77229,10 +74229,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     fiberUuid_ = value;
-                    onChanged();
                 } else {
                     fiberUuidBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000400;
+                onChanged();
                 return this;
             }
 
@@ -77242,10 +74243,11 @@ public final class ContextOuterClass {
             public Builder setFiberUuid(context.ContextOuterClass.FiberId.Builder builderForValue) {
                 if (fiberUuidBuilder_ == null) {
                     fiberUuid_ = builderForValue.build();
-                    onChanged();
                 } else {
                     fiberUuidBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000400;
+                onChanged();
                 return this;
             }
 
@@ -77254,15 +74256,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeFiberUuid(context.ContextOuterClass.FiberId value) {
                 if (fiberUuidBuilder_ == null) {
-                    if (fiberUuid_ != null) {
-                        fiberUuid_ = context.ContextOuterClass.FiberId.newBuilder(fiberUuid_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000400) != 0) && fiberUuid_ != null && fiberUuid_ != context.ContextOuterClass.FiberId.getDefaultInstance()) {
+                        getFiberUuidBuilder().mergeFrom(value);
                     } else {
                         fiberUuid_ = value;
                     }
-                    onChanged();
                 } else {
                     fiberUuidBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000400;
+                onChanged();
                 return this;
             }
 
@@ -77270,13 +74273,13 @@ public final class ContextOuterClass {
              * .context.FiberId fiber_uuid = 11;
              */
             public Builder clearFiberUuid() {
-                if (fiberUuidBuilder_ == null) {
-                    fiberUuid_ = null;
-                    onChanged();
-                } else {
-                    fiberUuid_ = null;
+                bitField0_ = (bitField0_ & ~0x00000400);
+                fiberUuid_ = null;
+                if (fiberUuidBuilder_ != null) {
+                    fiberUuidBuilder_.dispose();
                     fiberUuidBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -77284,6 +74287,7 @@ public final class ContextOuterClass {
              * .context.FiberId fiber_uuid = 11;
              */
             public context.ContextOuterClass.FiberId.Builder getFiberUuidBuilder() {
+                bitField0_ |= 0x00000400;
                 onChanged();
                 return getFiberUuidFieldBuilder().getBuilder();
             }
@@ -77337,7 +74341,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Fiber parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Fiber(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -77440,74 +74454,6 @@ public final class ContextOuterClass {
             return new OpticalLinkDetails();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private OpticalLinkDetails(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 13:
-                            {
-                                length_ = input.readFloat();
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                source_ = s;
-                                break;
-                            }
-                        case 26:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                target_ = s;
-                                break;
-                            }
-                        case 34:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    fibers_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                fibers_.add(input.readMessage(context.ContextOuterClass.Fiber.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    fibers_ = java.util.Collections.unmodifiableList(fibers_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_descriptor;
         }
@@ -77519,7 +74465,7 @@ public final class ContextOuterClass {
 
         public static final int LENGTH_FIELD_NUMBER = 1;
 
-        private float length_;
+        private float length_ = 0F;
 
         /**
          * float length = 1;
@@ -77532,7 +74478,8 @@ public final class ContextOuterClass {
 
         public static final int SOURCE_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object source_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object source_ = "";
 
         /**
          * string source = 2;
@@ -77569,7 +74516,8 @@ public final class ContextOuterClass {
 
         public static final int TARGET_FIELD_NUMBER = 3;
 
-        private volatile java.lang.Object target_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object target_ = "";
 
         /**
          * string target = 3;
@@ -77606,6 +74554,7 @@ public final class ContextOuterClass {
 
         public static final int FIBERS_FIELD_NUMBER = 4;
 
+        @SuppressWarnings("serial")
         private java.util.List fibers_;
 
         /**
@@ -77663,19 +74612,19 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (length_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(length_) != 0) {
                 output.writeFloat(1, length_);
             }
-            if (!getSourceBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(source_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, source_);
             }
-            if (!getTargetBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(target_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 3, target_);
             }
             for (int i = 0; i < fibers_.size(); i++) {
                 output.writeMessage(4, fibers_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -77684,19 +74633,19 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (length_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(length_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, length_);
             }
-            if (!getSourceBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(source_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, source_);
             }
-            if (!getTargetBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(target_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, target_);
             }
             for (int i = 0; i < fibers_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, fibers_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -77718,7 +74667,7 @@ public final class ContextOuterClass {
                 return false;
             if (!getFibersList().equals(other.getFibersList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -77740,7 +74689,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + FIBERS_FIELD_NUMBER;
                 hash = (53 * hash) + getFibersList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -77834,32 +74783,26 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.OpticalLinkDetails.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getFibersFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 length_ = 0F;
                 source_ = "";
                 target_ = "";
                 if (fibersBuilder_ == null) {
                     fibers_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    fibers_ = null;
                     fibersBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000008);
                 return this;
             }
 
@@ -77885,51 +74828,37 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.OpticalLinkDetails buildPartial() {
                 context.ContextOuterClass.OpticalLinkDetails result = new context.ContextOuterClass.OpticalLinkDetails(this);
-                int from_bitField0_ = bitField0_;
-                result.length_ = length_;
-                result.source_ = source_;
-                result.target_ = target_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.OpticalLinkDetails result) {
                 if (fibersBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0)) {
+                    if (((bitField0_ & 0x00000008) != 0)) {
                         fibers_ = java.util.Collections.unmodifiableList(fibers_);
-                        bitField0_ = (bitField0_ & ~0x00000001);
+                        bitField0_ = (bitField0_ & ~0x00000008);
                     }
                     result.fibers_ = fibers_;
                 } else {
                     result.fibers_ = fibersBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
             }
 
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.OpticalLinkDetails result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.length_ = length_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.source_ = source_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.target_ = target_;
+                }
             }
 
             @java.lang.Override
@@ -77950,17 +74879,19 @@ public final class ContextOuterClass {
                 }
                 if (!other.getSource().isEmpty()) {
                     source_ = other.source_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (!other.getTarget().isEmpty()) {
                     target_ = other.target_;
+                    bitField0_ |= 0x00000004;
                     onChanged();
                 }
                 if (fibersBuilder_ == null) {
                     if (!other.fibers_.isEmpty()) {
                         if (fibers_.isEmpty()) {
                             fibers_ = other.fibers_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000008);
                         } else {
                             ensureFibersIsMutable();
                             fibers_.addAll(other.fibers_);
@@ -77973,14 +74904,14 @@ public final class ContextOuterClass {
                             fibersBuilder_.dispose();
                             fibersBuilder_ = null;
                             fibers_ = other.fibers_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000008);
                             fibersBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getFibersFieldBuilder() : null;
                         } else {
                             fibersBuilder_.addAllMessages(other.fibers_);
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -77992,17 +74923,68 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.OpticalLinkDetails parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 13:
+                                {
+                                    length_ = input.readFloat();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 13
+                            case 18:
+                                {
+                                    source_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    target_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    context.ContextOuterClass.Fiber m = input.readMessage(context.ContextOuterClass.Fiber.parser(), extensionRegistry);
+                                    if (fibersBuilder_ == null) {
+                                        ensureFibersIsMutable();
+                                        fibers_.add(m);
+                                    } else {
+                                        fibersBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 34
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.OpticalLinkDetails) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -78026,6 +75008,7 @@ public final class ContextOuterClass {
              */
             public Builder setLength(float value) {
                 length_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -78035,6 +75018,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearLength() {
+                bitField0_ = (bitField0_ & ~0x00000001);
                 length_ = 0F;
                 onChanged();
                 return this;
@@ -78083,6 +75067,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 source_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -78093,6 +75078,7 @@ public final class ContextOuterClass {
              */
             public Builder clearSource() {
                 source_ = getDefaultInstance().getSource();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -78108,6 +75094,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 source_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -78155,6 +75142,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 target_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -78165,6 +75153,7 @@ public final class ContextOuterClass {
              */
             public Builder clearTarget() {
                 target_ = getDefaultInstance().getTarget();
+                bitField0_ = (bitField0_ & ~0x00000004);
                 onChanged();
                 return this;
             }
@@ -78180,6 +75169,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 target_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -78187,9 +75177,9 @@ public final class ContextOuterClass {
             private java.util.List fibers_ = java.util.Collections.emptyList();
 
             private void ensureFibersIsMutable() {
-                if (!((bitField0_ & 0x00000001) != 0)) {
+                if (!((bitField0_ & 0x00000008) != 0)) {
                     fibers_ = new java.util.ArrayList(fibers_);
-                    bitField0_ |= 0x00000001;
+                    bitField0_ |= 0x00000008;
                 }
             }
 
@@ -78341,7 +75331,7 @@ public final class ContextOuterClass {
             public Builder clearFibers() {
                 if (fibersBuilder_ == null) {
                     fibers_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
+                    bitField0_ = (bitField0_ & ~0x00000008);
                     onChanged();
                 } else {
                     fibersBuilder_.clear();
@@ -78415,7 +75405,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getFibersFieldBuilder() {
                 if (fibersBuilder_ == null) {
-                    fibersBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(fibers_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    fibersBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(fibers_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
                     fibers_ = null;
                 }
                 return fibersBuilder_;
@@ -78448,7 +75438,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public OpticalLinkDetails parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new OpticalLinkDetails(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -78540,76 +75540,6 @@ public final class ContextOuterClass {
             return new OpticalLink();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private OpticalLink(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                name_ = s;
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.OpticalLinkDetails.Builder subBuilder = null;
-                                if (details_ != null) {
-                                    subBuilder = details_.toBuilder();
-                                }
-                                details_ = input.readMessage(context.ContextOuterClass.OpticalLinkDetails.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(details_);
-                                    details_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 26:
-                            {
-                                context.ContextOuterClass.OpticalLinkId.Builder subBuilder = null;
-                                if (opticalLinkUuid_ != null) {
-                                    subBuilder = opticalLinkUuid_.toBuilder();
-                                }
-                                opticalLinkUuid_ = input.readMessage(context.ContextOuterClass.OpticalLinkId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(opticalLinkUuid_);
-                                    opticalLinkUuid_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_OpticalLink_descriptor;
         }
@@ -78621,7 +75551,8 @@ public final class ContextOuterClass {
 
         public static final int NAME_FIELD_NUMBER = 1;
 
-        private volatile java.lang.Object name_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object name_ = "";
 
         /**
          * string name = 1;
@@ -78683,7 +75614,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.OpticalLinkDetailsOrBuilder getDetailsOrBuilder() {
-            return getDetails();
+            return details_ == null ? context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance() : details_;
         }
 
         public static final int OPTICAL_LINK_UUID_FIELD_NUMBER = 3;
@@ -78713,7 +75644,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.OpticalLinkIdOrBuilder getOpticalLinkUuidOrBuilder() {
-            return getOpticalLinkUuid();
+            return opticalLinkUuid_ == null ? context.ContextOuterClass.OpticalLinkId.getDefaultInstance() : opticalLinkUuid_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -78731,7 +75662,7 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (!getNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
             }
             if (details_ != null) {
@@ -78740,7 +75671,7 @@ public final class ContextOuterClass {
             if (opticalLinkUuid_ != null) {
                 output.writeMessage(3, getOpticalLinkUuid());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -78749,7 +75680,7 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (!getNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
             }
             if (details_ != null) {
@@ -78758,7 +75689,7 @@ public final class ContextOuterClass {
             if (opticalLinkUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getOpticalLinkUuid());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -78786,7 +75717,7 @@ public final class ContextOuterClass {
                 if (!getOpticalLinkUuid().equals(other.getOpticalLinkUuid()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -78808,7 +75739,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + OPTICAL_LINK_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getOpticalLinkUuid().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -78902,33 +75833,25 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.OpticalLink.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 name_ = "";
-                if (detailsBuilder_ == null) {
-                    details_ = null;
-                } else {
-                    details_ = null;
+                details_ = null;
+                if (detailsBuilder_ != null) {
+                    detailsBuilder_.dispose();
                     detailsBuilder_ = null;
                 }
-                if (opticalLinkUuidBuilder_ == null) {
-                    opticalLinkUuid_ = null;
-                } else {
-                    opticalLinkUuid_ = null;
+                opticalLinkUuid_ = null;
+                if (opticalLinkUuidBuilder_ != null) {
+                    opticalLinkUuidBuilder_.dispose();
                     opticalLinkUuidBuilder_ = null;
                 }
                 return this;
@@ -78956,49 +75879,24 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.OpticalLink buildPartial() {
                 context.ContextOuterClass.OpticalLink result = new context.ContextOuterClass.OpticalLink(this);
-                result.name_ = name_;
-                if (detailsBuilder_ == null) {
-                    result.details_ = details_;
-                } else {
-                    result.details_ = detailsBuilder_.build();
-                }
-                if (opticalLinkUuidBuilder_ == null) {
-                    result.opticalLinkUuid_ = opticalLinkUuid_;
-                } else {
-                    result.opticalLinkUuid_ = opticalLinkUuidBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.OpticalLink result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.name_ = name_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.details_ = detailsBuilder_ == null ? details_ : detailsBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.opticalLinkUuid_ = opticalLinkUuidBuilder_ == null ? opticalLinkUuid_ : opticalLinkUuidBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -79016,6 +75914,7 @@ public final class ContextOuterClass {
                     return this;
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
+                    bitField0_ |= 0x00000001;
                     onChanged();
                 }
                 if (other.hasDetails()) {
@@ -79024,7 +75923,7 @@ public final class ContextOuterClass {
                 if (other.hasOpticalLinkUuid()) {
                     mergeOpticalLinkUuid(other.getOpticalLinkUuid());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -79036,20 +75935,61 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.OpticalLink parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    name_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getDetailsFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    input.readMessage(getOpticalLinkUuidFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.OpticalLink) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private java.lang.Object name_ = "";
 
             /**
@@ -79093,6 +76033,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 name_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -79103,6 +76044,7 @@ public final class ContextOuterClass {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
+                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -79118,6 +76060,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -79131,7 +76074,7 @@ public final class ContextOuterClass {
              * @return Whether the details field is set.
              */
             public boolean hasDetails() {
-                return detailsBuilder_ != null || details_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -79155,10 +76098,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     details_ = value;
-                    onChanged();
                 } else {
                     detailsBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -79168,10 +76112,11 @@ public final class ContextOuterClass {
             public Builder setDetails(context.ContextOuterClass.OpticalLinkDetails.Builder builderForValue) {
                 if (detailsBuilder_ == null) {
                     details_ = builderForValue.build();
-                    onChanged();
                 } else {
                     detailsBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -79180,15 +76125,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeDetails(context.ContextOuterClass.OpticalLinkDetails value) {
                 if (detailsBuilder_ == null) {
-                    if (details_ != null) {
-                        details_ = context.ContextOuterClass.OpticalLinkDetails.newBuilder(details_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && details_ != null && details_ != context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance()) {
+                        getDetailsBuilder().mergeFrom(value);
                     } else {
                         details_ = value;
                     }
-                    onChanged();
                 } else {
                     detailsBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -79196,13 +76142,13 @@ public final class ContextOuterClass {
              * .context.OpticalLinkDetails details = 2;
              */
             public Builder clearDetails() {
-                if (detailsBuilder_ == null) {
-                    details_ = null;
-                    onChanged();
-                } else {
-                    details_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                details_ = null;
+                if (detailsBuilder_ != null) {
+                    detailsBuilder_.dispose();
                     detailsBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -79210,6 +76156,7 @@ public final class ContextOuterClass {
              * .context.OpticalLinkDetails details = 2;
              */
             public context.ContextOuterClass.OpticalLinkDetails.Builder getDetailsBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getDetailsFieldBuilder().getBuilder();
             }
@@ -79245,7 +76192,7 @@ public final class ContextOuterClass {
              * @return Whether the opticalLinkUuid field is set.
              */
             public boolean hasOpticalLinkUuid() {
-                return opticalLinkUuidBuilder_ != null || opticalLinkUuid_ != null;
+                return ((bitField0_ & 0x00000004) != 0);
             }
 
             /**
@@ -79269,10 +76216,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     opticalLinkUuid_ = value;
-                    onChanged();
                 } else {
                     opticalLinkUuidBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -79282,10 +76230,11 @@ public final class ContextOuterClass {
             public Builder setOpticalLinkUuid(context.ContextOuterClass.OpticalLinkId.Builder builderForValue) {
                 if (opticalLinkUuidBuilder_ == null) {
                     opticalLinkUuid_ = builderForValue.build();
-                    onChanged();
                 } else {
                     opticalLinkUuidBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -79294,15 +76243,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeOpticalLinkUuid(context.ContextOuterClass.OpticalLinkId value) {
                 if (opticalLinkUuidBuilder_ == null) {
-                    if (opticalLinkUuid_ != null) {
-                        opticalLinkUuid_ = context.ContextOuterClass.OpticalLinkId.newBuilder(opticalLinkUuid_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000004) != 0) && opticalLinkUuid_ != null && opticalLinkUuid_ != context.ContextOuterClass.OpticalLinkId.getDefaultInstance()) {
+                        getOpticalLinkUuidBuilder().mergeFrom(value);
                     } else {
                         opticalLinkUuid_ = value;
                     }
-                    onChanged();
                 } else {
                     opticalLinkUuidBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -79310,13 +76260,13 @@ public final class ContextOuterClass {
              * .context.OpticalLinkId optical_link_uuid = 3;
              */
             public Builder clearOpticalLinkUuid() {
-                if (opticalLinkUuidBuilder_ == null) {
-                    opticalLinkUuid_ = null;
-                    onChanged();
-                } else {
-                    opticalLinkUuid_ = null;
+                bitField0_ = (bitField0_ & ~0x00000004);
+                opticalLinkUuid_ = null;
+                if (opticalLinkUuidBuilder_ != null) {
+                    opticalLinkUuidBuilder_.dispose();
                     opticalLinkUuidBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -79324,6 +76274,7 @@ public final class ContextOuterClass {
              * .context.OpticalLinkId optical_link_uuid = 3;
              */
             public context.ContextOuterClass.OpticalLinkId.Builder getOpticalLinkUuidBuilder() {
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return getOpticalLinkUuidFieldBuilder().getBuilder();
             }
@@ -79377,7 +76328,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public OpticalLink parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new OpticalLink(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -79751,7 +76712,7 @@ public final class ContextOuterClass {
     private static com.google.protobuf.Descriptors.FileDescriptor descriptor;
 
     static {
-        java.lang.String[] descriptorData = { "\n\rcontext.proto\022\007context\032\tacl.proto\032\026kpi" + "_sample_types.proto\"\007\n\005Empty\"\024\n\004Uuid\022\014\n\004" + "uuid\030\001 \001(\t\"\036\n\tTimestamp\022\021\n\ttimestamp\030\001 \001" + "(\001\"Z\n\005Event\022%\n\ttimestamp\030\001 \001(\0132\022.context" + ".Timestamp\022*\n\nevent_type\030\002 \001(\0162\026.context" + ".EventTypeEnum\"0\n\tContextId\022#\n\014context_u" + "uid\030\001 \001(\0132\r.context.Uuid\"\351\001\n\007Context\022&\n\n" + "context_id\030\001 \001(\0132\022.context.ContextId\022\014\n\004" + "name\030\002 \001(\t\022)\n\014topology_ids\030\003 \003(\0132\023.conte" + "xt.TopologyId\022\'\n\013service_ids\030\004 \003(\0132\022.con" + "text.ServiceId\022#\n\tslice_ids\030\005 \003(\0132\020.cont" + "ext.SliceId\022/\n\ncontroller\030\006 \001(\0132\033.contex" + "t.TeraFlowController\"8\n\rContextIdList\022\'\n" + "\013context_ids\030\001 \003(\0132\022.context.ContextId\"1" + "\n\013ContextList\022\"\n\010contexts\030\001 \003(\0132\020.contex" + "t.Context\"U\n\014ContextEvent\022\035\n\005event\030\001 \001(\013" + "2\016.context.Event\022&\n\ncontext_id\030\002 \001(\0132\022.c" + "ontext.ContextId\"Z\n\nTopologyId\022&\n\ncontex" + "t_id\030\001 \001(\0132\022.context.ContextId\022$\n\rtopolo" + "gy_uuid\030\002 \001(\0132\r.context.Uuid\"\214\001\n\010Topolog" + "y\022(\n\013topology_id\030\001 \001(\0132\023.context.Topolog" + "yId\022\014\n\004name\030\002 \001(\t\022%\n\ndevice_ids\030\003 \003(\0132\021." + "context.DeviceId\022!\n\010link_ids\030\004 \003(\0132\017.con" + "text.LinkId\"\211\001\n\017TopologyDetails\022(\n\013topol" + "ogy_id\030\001 \001(\0132\023.context.TopologyId\022\014\n\004nam" + "e\030\002 \001(\t\022 \n\007devices\030\003 \003(\0132\017.context.Devic" + "e\022\034\n\005links\030\004 \003(\0132\r.context.Link\";\n\016Topol" + "ogyIdList\022)\n\014topology_ids\030\001 \003(\0132\023.contex" + "t.TopologyId\"5\n\014TopologyList\022%\n\ntopologi" + "es\030\001 \003(\0132\021.context.Topology\"X\n\rTopologyE" + "vent\022\035\n\005event\030\001 \001(\0132\016.context.Event\022(\n\013t" + "opology_id\030\002 \001(\0132\023.context.TopologyId\".\n" + "\010DeviceId\022\"\n\013device_uuid\030\001 \001(\0132\r.context" + ".Uuid\"\372\002\n\006Device\022$\n\tdevice_id\030\001 \001(\0132\021.co" + "ntext.DeviceId\022\014\n\004name\030\002 \001(\t\022\023\n\013device_t" + "ype\030\003 \001(\t\022,\n\rdevice_config\030\004 \001(\0132\025.conte" + "xt.DeviceConfig\022G\n\031device_operational_st" + "atus\030\005 \001(\0162$.context.DeviceOperationalSt" + "atusEnum\0221\n\016device_drivers\030\006 \003(\0162\031.conte" + "xt.DeviceDriverEnum\022+\n\020device_endpoints\030" + "\007 \003(\0132\021.context.EndPoint\022&\n\ncomponents\030\010" + " \003(\0132\022.context.Component\022(\n\rcontroller_i" + "d\030\t \001(\0132\021.context.DeviceId\"\311\001\n\tComponent" + "\022%\n\016component_uuid\030\001 \001(\0132\r.context.Uuid\022" + "\014\n\004name\030\002 \001(\t\022\014\n\004type\030\003 \001(\t\0226\n\nattribute" + "s\030\004 \003(\0132\".context.Component.AttributesEn" + "try\022\016\n\006parent\030\005 \001(\t\0321\n\017AttributesEntry\022\013" + "\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"9\n\014Device" + "Config\022)\n\014config_rules\030\001 \003(\0132\023.context.C" + "onfigRule\"5\n\014DeviceIdList\022%\n\ndevice_ids\030" + "\001 \003(\0132\021.context.DeviceId\".\n\nDeviceList\022 " + "\n\007devices\030\001 \003(\0132\017.context.Device\"\216\001\n\014Dev" + "iceFilter\022)\n\ndevice_ids\030\001 \001(\0132\025.context." + "DeviceIdList\022\031\n\021include_endpoints\030\002 \001(\010\022" + "\034\n\024include_config_rules\030\003 \001(\010\022\032\n\022include" + "_components\030\004 \001(\010\"\200\001\n\013DeviceEvent\022\035\n\005eve" + "nt\030\001 \001(\0132\016.context.Event\022$\n\tdevice_id\030\002 " + "\001(\0132\021.context.DeviceId\022,\n\rdevice_config\030" + "\003 \001(\0132\025.context.DeviceConfig\"*\n\006LinkId\022 " + "\n\tlink_uuid\030\001 \001(\0132\r.context.Uuid\"I\n\016Link" + "Attributes\022\033\n\023total_capacity_gbps\030\001 \001(\002\022" + "\032\n\022used_capacity_gbps\030\002 \001(\002\"\223\001\n\004Link\022 \n\007" + "link_id\030\001 \001(\0132\017.context.LinkId\022\014\n\004name\030\002" + " \001(\t\022.\n\021link_endpoint_ids\030\003 \003(\0132\023.contex" + "t.EndPointId\022+\n\nattributes\030\004 \001(\0132\027.conte" + "xt.LinkAttributes\"/\n\nLinkIdList\022!\n\010link_" + "ids\030\001 \003(\0132\017.context.LinkId\"(\n\010LinkList\022\034" + "\n\005links\030\001 \003(\0132\r.context.Link\"L\n\tLinkEven" + "t\022\035\n\005event\030\001 \001(\0132\016.context.Event\022 \n\007link" + "_id\030\002 \001(\0132\017.context.LinkId\"X\n\tServiceId\022" + "&\n\ncontext_id\030\001 \001(\0132\022.context.ContextId\022" + "#\n\014service_uuid\030\002 \001(\0132\r.context.Uuid\"\333\002\n" + "\007Service\022&\n\nservice_id\030\001 \001(\0132\022.context.S" + "erviceId\022\014\n\004name\030\002 \001(\t\022.\n\014service_type\030\003" + " \001(\0162\030.context.ServiceTypeEnum\0221\n\024servic" + "e_endpoint_ids\030\004 \003(\0132\023.context.EndPointI" + "d\0220\n\023service_constraints\030\005 \003(\0132\023.context" + ".Constraint\022.\n\016service_status\030\006 \001(\0132\026.co" + "ntext.ServiceStatus\022.\n\016service_config\030\007 " + "\001(\0132\026.context.ServiceConfig\022%\n\ttimestamp" + "\030\010 \001(\0132\022.context.Timestamp\"C\n\rServiceSta" + "tus\0222\n\016service_status\030\001 \001(\0162\032.context.Se" + "rviceStatusEnum\":\n\rServiceConfig\022)\n\014conf" + "ig_rules\030\001 \003(\0132\023.context.ConfigRule\"8\n\rS" + "erviceIdList\022\'\n\013service_ids\030\001 \003(\0132\022.cont" + "ext.ServiceId\"1\n\013ServiceList\022\"\n\010services" + "\030\001 \003(\0132\020.context.Service\"\225\001\n\rServiceFilt" + "er\022+\n\013service_ids\030\001 \001(\0132\026.context.Servic" + "eIdList\022\034\n\024include_endpoint_ids\030\002 \001(\010\022\033\n" + "\023include_constraints\030\003 \001(\010\022\034\n\024include_co" + "nfig_rules\030\004 \001(\010\"U\n\014ServiceEvent\022\035\n\005even" + "t\030\001 \001(\0132\016.context.Event\022&\n\nservice_id\030\002 " + "\001(\0132\022.context.ServiceId\"T\n\007SliceId\022&\n\nco" + "ntext_id\030\001 \001(\0132\022.context.ContextId\022!\n\nsl" + "ice_uuid\030\002 \001(\0132\r.context.Uuid\"\240\003\n\005Slice\022" + "\"\n\010slice_id\030\001 \001(\0132\020.context.SliceId\022\014\n\004n" + "ame\030\002 \001(\t\022/\n\022slice_endpoint_ids\030\003 \003(\0132\023." + "context.EndPointId\022.\n\021slice_constraints\030" + "\004 \003(\0132\023.context.Constraint\022-\n\021slice_serv" + "ice_ids\030\005 \003(\0132\022.context.ServiceId\022,\n\022sli" + "ce_subslice_ids\030\006 \003(\0132\020.context.SliceId\022" + "*\n\014slice_status\030\007 \001(\0132\024.context.SliceSta" + "tus\022*\n\014slice_config\030\010 \001(\0132\024.context.Slic" + "eConfig\022(\n\013slice_owner\030\t \001(\0132\023.context.S" + "liceOwner\022%\n\ttimestamp\030\n \001(\0132\022.context.T" + "imestamp\"E\n\nSliceOwner\022!\n\nowner_uuid\030\001 \001" + "(\0132\r.context.Uuid\022\024\n\014owner_string\030\002 \001(\t\"" + "=\n\013SliceStatus\022.\n\014slice_status\030\001 \001(\0162\030.c" + "ontext.SliceStatusEnum\"8\n\013SliceConfig\022)\n" + "\014config_rules\030\001 \003(\0132\023.context.ConfigRule" + "\"2\n\013SliceIdList\022#\n\tslice_ids\030\001 \003(\0132\020.con" + "text.SliceId\"+\n\tSliceList\022\036\n\006slices\030\001 \003(" + "\0132\016.context.Slice\"\312\001\n\013SliceFilter\022\'\n\tsli" + "ce_ids\030\001 \001(\0132\024.context.SliceIdList\022\034\n\024in" + "clude_endpoint_ids\030\002 \001(\010\022\033\n\023include_cons" + "traints\030\003 \001(\010\022\033\n\023include_service_ids\030\004 \001" + "(\010\022\034\n\024include_subslice_ids\030\005 \001(\010\022\034\n\024incl" + "ude_config_rules\030\006 \001(\010\"O\n\nSliceEvent\022\035\n\005" + "event\030\001 \001(\0132\016.context.Event\022\"\n\010slice_id\030" + "\002 \001(\0132\020.context.SliceId\"6\n\014ConnectionId\022" + "&\n\017connection_uuid\030\001 \001(\0132\r.context.Uuid\"" + "2\n\025ConnectionSettings_L0\022\031\n\021lsp_symbolic" + "_name\030\001 \001(\t\"\236\001\n\025ConnectionSettings_L2\022\027\n" + "\017src_mac_address\030\001 \001(\t\022\027\n\017dst_mac_addres" + "s\030\002 \001(\t\022\022\n\nether_type\030\003 \001(\r\022\017\n\007vlan_id\030\004" + " \001(\r\022\022\n\nmpls_label\030\005 \001(\r\022\032\n\022mpls_traffic" + "_class\030\006 \001(\r\"t\n\025ConnectionSettings_L3\022\026\n" + "\016src_ip_address\030\001 \001(\t\022\026\n\016dst_ip_address\030" + "\002 \001(\t\022\014\n\004dscp\030\003 \001(\r\022\020\n\010protocol\030\004 \001(\r\022\013\n" + "\003ttl\030\005 \001(\r\"[\n\025ConnectionSettings_L4\022\020\n\010s" + "rc_port\030\001 \001(\r\022\020\n\010dst_port\030\002 \001(\r\022\021\n\ttcp_f" + "lags\030\003 \001(\r\022\013\n\003ttl\030\004 \001(\r\"\304\001\n\022ConnectionSe" + "ttings\022*\n\002l0\030\001 \001(\0132\036.context.ConnectionS" + "ettings_L0\022*\n\002l2\030\002 \001(\0132\036.context.Connect" + "ionSettings_L2\022*\n\002l3\030\003 \001(\0132\036.context.Con" + "nectionSettings_L3\022*\n\002l4\030\004 \001(\0132\036.context" + ".ConnectionSettings_L4\"\363\001\n\nConnection\022,\n" + "\rconnection_id\030\001 \001(\0132\025.context.Connectio" + "nId\022&\n\nservice_id\030\002 \001(\0132\022.context.Servic" + "eId\0223\n\026path_hops_endpoint_ids\030\003 \003(\0132\023.co" + "ntext.EndPointId\022+\n\017sub_service_ids\030\004 \003(" + "\0132\022.context.ServiceId\022-\n\010settings\030\005 \001(\0132" + "\033.context.ConnectionSettings\"A\n\020Connecti" + "onIdList\022-\n\016connection_ids\030\001 \003(\0132\025.conte" + "xt.ConnectionId\":\n\016ConnectionList\022(\n\013con" + "nections\030\001 \003(\0132\023.context.Connection\"^\n\017C" + "onnectionEvent\022\035\n\005event\030\001 \001(\0132\016.context." + "Event\022,\n\rconnection_id\030\002 \001(\0132\025.context.C" + "onnectionId\"\202\001\n\nEndPointId\022(\n\013topology_i" + "d\030\001 \001(\0132\023.context.TopologyId\022$\n\tdevice_i" + "d\030\002 \001(\0132\021.context.DeviceId\022$\n\rendpoint_u" + "uid\030\003 \001(\0132\r.context.Uuid\"\302\001\n\010EndPoint\022(\n" + "\013endpoint_id\030\001 \001(\0132\023.context.EndPointId\022" + "\014\n\004name\030\002 \001(\t\022\025\n\rendpoint_type\030\003 \001(\t\0229\n\020" + "kpi_sample_types\030\004 \003(\0162\037.kpi_sample_type" + "s.KpiSampleType\022,\n\021endpoint_location\030\005 \001" + "(\0132\021.context.Location\"{\n\014EndPointName\022(\n" + "\013endpoint_id\030\001 \001(\0132\023.context.EndPointId\022" + "\023\n\013device_name\030\002 \001(\t\022\025\n\rendpoint_name\030\003 " + "\001(\t\022\025\n\rendpoint_type\030\004 \001(\t\";\n\016EndPointId" + "List\022)\n\014endpoint_ids\030\001 \003(\0132\023.context.End" + "PointId\"A\n\020EndPointNameList\022-\n\016endpoint_" + "names\030\001 \003(\0132\025.context.EndPointName\"A\n\021Co" + "nfigRule_Custom\022\024\n\014resource_key\030\001 \001(\t\022\026\n" + "\016resource_value\030\002 \001(\t\"]\n\016ConfigRule_ACL\022" + "(\n\013endpoint_id\030\001 \001(\0132\023.context.EndPointI" + "d\022!\n\010rule_set\030\002 \001(\0132\017.acl.AclRuleSet\"\234\001\n" + "\nConfigRule\022)\n\006action\030\001 \001(\0162\031.context.Co" + "nfigActionEnum\022,\n\006custom\030\002 \001(\0132\032.context" + ".ConfigRule_CustomH\000\022&\n\003acl\030\003 \001(\0132\027.cont" + "ext.ConfigRule_ACLH\000B\r\n\013config_rule\"F\n\021C" + "onstraint_Custom\022\027\n\017constraint_type\030\001 \001(" + "\t\022\030\n\020constraint_value\030\002 \001(\t\"E\n\023Constrain" + "t_Schedule\022\027\n\017start_timestamp\030\001 \001(\002\022\025\n\rd" + "uration_days\030\002 \001(\002\"3\n\014GPS_Position\022\020\n\010la" + "titude\030\001 \001(\002\022\021\n\tlongitude\030\002 \001(\002\"W\n\010Locat" + "ion\022\020\n\006region\030\001 \001(\tH\000\022-\n\014gps_position\030\002 " + "\001(\0132\025.context.GPS_PositionH\000B\n\n\010location" + "\"l\n\033Constraint_EndPointLocation\022(\n\013endpo" + "int_id\030\001 \001(\0132\023.context.EndPointId\022#\n\010loc" + "ation\030\002 \001(\0132\021.context.Location\"Y\n\033Constr" + "aint_EndPointPriority\022(\n\013endpoint_id\030\001 \001" + "(\0132\023.context.EndPointId\022\020\n\010priority\030\002 \001(" + "\r\"0\n\026Constraint_SLA_Latency\022\026\n\016e2e_laten" + "cy_ms\030\001 \001(\002\"0\n\027Constraint_SLA_Capacity\022\025" + "\n\rcapacity_gbps\030\001 \001(\002\"c\n\033Constraint_SLA_" + "Availability\022\032\n\022num_disjoint_paths\030\001 \001(\r" + "\022\022\n\nall_active\030\002 \001(\010\022\024\n\014availability\030\003 \001" + "(\002\"V\n\036Constraint_SLA_Isolation_level\0224\n\017" + "isolation_level\030\001 \003(\0162\033.context.Isolatio" + "nLevelEnum\"\242\001\n\025Constraint_Exclusions\022\024\n\014" + "is_permanent\030\001 \001(\010\022%\n\ndevice_ids\030\002 \003(\0132\021" + ".context.DeviceId\022)\n\014endpoint_ids\030\003 \003(\0132" + "\023.context.EndPointId\022!\n\010link_ids\030\004 \003(\0132\017" + ".context.LinkId\"\333\004\n\nConstraint\022-\n\006action" + "\030\001 \001(\0162\035.context.ConstraintActionEnum\022,\n" + "\006custom\030\002 \001(\0132\032.context.Constraint_Custo" + "mH\000\0220\n\010schedule\030\003 \001(\0132\034.context.Constrai" + "nt_ScheduleH\000\022A\n\021endpoint_location\030\004 \001(\013" + "2$.context.Constraint_EndPointLocationH\000" + "\022A\n\021endpoint_priority\030\005 \001(\0132$.context.Co" + "nstraint_EndPointPriorityH\000\0228\n\014sla_capac" + "ity\030\006 \001(\0132 .context.Constraint_SLA_Capac" + "ityH\000\0226\n\013sla_latency\030\007 \001(\0132\037.context.Con" + "straint_SLA_LatencyH\000\022@\n\020sla_availabilit" + "y\030\010 \001(\0132$.context.Constraint_SLA_Availab" + "ilityH\000\022@\n\rsla_isolation\030\t \001(\0132\'.context" + ".Constraint_SLA_Isolation_levelH\000\0224\n\nexc" + "lusions\030\n \001(\0132\036.context.Constraint_Exclu" + "sionsH\000B\014\n\nconstraint\"^\n\022TeraFlowControl" + "ler\022&\n\ncontext_id\030\001 \001(\0132\022.context.Contex" + "tId\022\022\n\nip_address\030\002 \001(\t\022\014\n\004port\030\003 \001(\r\"U\n" + "\024AuthenticationResult\022&\n\ncontext_id\030\001 \001(" + "\0132\022.context.ContextId\022\025\n\rauthenticated\030\002" + " \001(\010\"-\n\017OpticalConfigId\022\032\n\022opticalconfig" + "_uuid\030\001 \001(\t\"S\n\rOpticalConfig\0222\n\020opticalc" + "onfig_id\030\001 \001(\0132\030.context.OpticalConfigId" + "\022\016\n\006config\030\002 \001(\t\"C\n\021OpticalConfigList\022.\n" + "\016opticalconfigs\030\001 \003(\0132\026.context.OpticalC" + "onfig\"9\n\rOpticalLinkId\022(\n\021optical_link_u" + "uid\030\001 \001(\0132\r.context.Uuid\",\n\007FiberId\022!\n\nf" + "iber_uuid\030\001 \001(\0132\r.context.Uuid\"\341\001\n\005Fiber" + "\022\n\n\002ID\030\n \001(\t\022\020\n\010src_port\030\001 \001(\t\022\020\n\010dst_po" + "rt\030\002 \001(\t\022\027\n\017local_peer_port\030\003 \001(\t\022\030\n\020rem" + "ote_peer_port\030\004 \001(\t\022\017\n\007c_slots\030\005 \003(\005\022\017\n\007" + "l_slots\030\006 \003(\005\022\017\n\007s_slots\030\007 \003(\005\022\016\n\006length" + "\030\010 \001(\002\022\014\n\004used\030\t \001(\010\022$\n\nfiber_uuid\030\013 \001(\013" + "2\020.context.FiberId\"d\n\022OpticalLinkDetails" + "\022\016\n\006length\030\001 \001(\002\022\016\n\006source\030\002 \001(\t\022\016\n\006targ" + "et\030\003 \001(\t\022\036\n\006fibers\030\004 \003(\0132\016.context.Fiber" + "\"|\n\013OpticalLink\022\014\n\004name\030\001 \001(\t\022,\n\007details" + "\030\002 \001(\0132\033.context.OpticalLinkDetails\0221\n\021o" + "ptical_link_uuid\030\003 \001(\0132\026.context.Optical" + "LinkId*j\n\rEventTypeEnum\022\027\n\023EVENTTYPE_UND" + "EFINED\020\000\022\024\n\020EVENTTYPE_CREATE\020\001\022\024\n\020EVENTT" + "YPE_UPDATE\020\002\022\024\n\020EVENTTYPE_REMOVE\020\003*\350\002\n\020D" + "eviceDriverEnum\022\032\n\026DEVICEDRIVER_UNDEFINE" + "D\020\000\022\033\n\027DEVICEDRIVER_OPENCONFIG\020\001\022\036\n\032DEVI" + "CEDRIVER_TRANSPORT_API\020\002\022\023\n\017DEVICEDRIVER" + "_P4\020\003\022&\n\"DEVICEDRIVER_IETF_NETWORK_TOPOL" + "OGY\020\004\022\033\n\027DEVICEDRIVER_ONF_TR_532\020\005\022\023\n\017DE" + "VICEDRIVER_XR\020\006\022\033\n\027DEVICEDRIVER_IETF_L2V" + "PN\020\007\022 \n\034DEVICEDRIVER_GNMI_OPENCONFIG\020\010\022\034" + "\n\030DEVICEDRIVER_OPTICAL_TFS\020\t\022\032\n\026DEVICEDR" + "IVER_IETF_ACTN\020\n\022\023\n\017DEVICEDRIVER_OC\020\013*\217\001" + "\n\033DeviceOperationalStatusEnum\022%\n!DEVICEO" + "PERATIONALSTATUS_UNDEFINED\020\000\022$\n DEVICEOP" + "ERATIONALSTATUS_DISABLED\020\001\022#\n\037DEVICEOPER" + "ATIONALSTATUS_ENABLED\020\002*\320\001\n\017ServiceTypeE" + "num\022\027\n\023SERVICETYPE_UNKNOWN\020\000\022\024\n\020SERVICET" + "YPE_L3NM\020\001\022\024\n\020SERVICETYPE_L2NM\020\002\022)\n%SERV" + "ICETYPE_TAPI_CONNECTIVITY_SERVICE\020\003\022\022\n\016S" + "ERVICETYPE_TE\020\004\022\023\n\017SERVICETYPE_E2E\020\005\022$\n " + "SERVICETYPE_OPTICAL_CONNECTIVITY\020\006*\304\001\n\021S" + "erviceStatusEnum\022\033\n\027SERVICESTATUS_UNDEFI" + "NED\020\000\022\031\n\025SERVICESTATUS_PLANNED\020\001\022\030\n\024SERV" + "ICESTATUS_ACTIVE\020\002\022\032\n\026SERVICESTATUS_UPDA" + "TING\020\003\022!\n\035SERVICESTATUS_PENDING_REMOVAL\020" + "\004\022\036\n\032SERVICESTATUS_SLA_VIOLATED\020\005*\251\001\n\017Sl" + "iceStatusEnum\022\031\n\025SLICESTATUS_UNDEFINED\020\000" + "\022\027\n\023SLICESTATUS_PLANNED\020\001\022\024\n\020SLICESTATUS" + "_INIT\020\002\022\026\n\022SLICESTATUS_ACTIVE\020\003\022\026\n\022SLICE" + "STATUS_DEINIT\020\004\022\034\n\030SLICESTATUS_SLA_VIOLA" + "TED\020\005*]\n\020ConfigActionEnum\022\032\n\026CONFIGACTIO" + "N_UNDEFINED\020\000\022\024\n\020CONFIGACTION_SET\020\001\022\027\n\023C" + "ONFIGACTION_DELETE\020\002*m\n\024ConstraintAction" + "Enum\022\036\n\032CONSTRAINTACTION_UNDEFINED\020\000\022\030\n\024" + "CONSTRAINTACTION_SET\020\001\022\033\n\027CONSTRAINTACTI" + "ON_DELETE\020\002*\203\002\n\022IsolationLevelEnum\022\020\n\014NO" + "_ISOLATION\020\000\022\026\n\022PHYSICAL_ISOLATION\020\001\022\025\n\021" + "LOGICAL_ISOLATION\020\002\022\025\n\021PROCESS_ISOLATION" + "\020\003\022\035\n\031PHYSICAL_MEMORY_ISOLATION\020\004\022\036\n\032PHY" + "SICAL_NETWORK_ISOLATION\020\005\022\036\n\032VIRTUAL_RES" + "OURCE_ISOLATION\020\006\022\037\n\033NETWORK_FUNCTIONS_I" + "SOLATION\020\007\022\025\n\021SERVICE_ISOLATION\020\0102\246\031\n\016Co" + "ntextService\022:\n\016ListContextIds\022\016.context" + ".Empty\032\026.context.ContextIdList\"\000\0226\n\014List" + "Contexts\022\016.context.Empty\032\024.context.Conte" + "xtList\"\000\0224\n\nGetContext\022\022.context.Context" + "Id\032\020.context.Context\"\000\0224\n\nSetContext\022\020.c" + "ontext.Context\032\022.context.ContextId\"\000\0225\n\r" + "RemoveContext\022\022.context.ContextId\032\016.cont" + "ext.Empty\"\000\022=\n\020GetContextEvents\022\016.contex" + "t.Empty\032\025.context.ContextEvent\"\0000\001\022@\n\017Li" + "stTopologyIds\022\022.context.ContextId\032\027.cont" + "ext.TopologyIdList\"\000\022=\n\016ListTopologies\022\022" + ".context.ContextId\032\025.context.TopologyLis" + "t\"\000\0227\n\013GetTopology\022\023.context.TopologyId\032" + "\021.context.Topology\"\000\022E\n\022GetTopologyDetai" + "ls\022\023.context.TopologyId\032\030.context.Topolo" + "gyDetails\"\000\0227\n\013SetTopology\022\021.context.Top" + "ology\032\023.context.TopologyId\"\000\0227\n\016RemoveTo" + "pology\022\023.context.TopologyId\032\016.context.Em" + "pty\"\000\022?\n\021GetTopologyEvents\022\016.context.Emp" + "ty\032\026.context.TopologyEvent\"\0000\001\0228\n\rListDe" + "viceIds\022\016.context.Empty\032\025.context.Device" + "IdList\"\000\0224\n\013ListDevices\022\016.context.Empty\032" + "\023.context.DeviceList\"\000\0221\n\tGetDevice\022\021.co" + "ntext.DeviceId\032\017.context.Device\"\000\0221\n\tSet" + "Device\022\017.context.Device\032\021.context.Device" + "Id\"\000\0223\n\014RemoveDevice\022\021.context.DeviceId\032" + "\016.context.Empty\"\000\022;\n\017GetDeviceEvents\022\016.c" + "ontext.Empty\032\024.context.DeviceEvent\"\0000\001\022<" + "\n\014SelectDevice\022\025.context.DeviceFilter\032\023." + "context.DeviceList\"\000\022I\n\021ListEndPointName" + "s\022\027.context.EndPointIdList\032\031.context.End" + "PointNameList\"\000\0224\n\013ListLinkIds\022\016.context" + ".Empty\032\023.context.LinkIdList\"\000\0220\n\tListLin" + "ks\022\016.context.Empty\032\021.context.LinkList\"\000\022" + "+\n\007GetLink\022\017.context.LinkId\032\r.context.Li" + "nk\"\000\022+\n\007SetLink\022\r.context.Link\032\017.context" + ".LinkId\"\000\022/\n\nRemoveLink\022\017.context.LinkId" + "\032\016.context.Empty\"\000\0227\n\rGetLinkEvents\022\016.co" + "ntext.Empty\032\022.context.LinkEvent\"\0000\001\022>\n\016L" + "istServiceIds\022\022.context.ContextId\032\026.cont" + "ext.ServiceIdList\"\000\022:\n\014ListServices\022\022.co" + "ntext.ContextId\032\024.context.ServiceList\"\000\022" + "4\n\nGetService\022\022.context.ServiceId\032\020.cont" + "ext.Service\"\000\0224\n\nSetService\022\020.context.Se" + "rvice\032\022.context.ServiceId\"\000\0226\n\014UnsetServ" + "ice\022\020.context.Service\032\022.context.ServiceI" + "d\"\000\0225\n\rRemoveService\022\022.context.ServiceId" + "\032\016.context.Empty\"\000\022=\n\020GetServiceEvents\022\016" + ".context.Empty\032\025.context.ServiceEvent\"\0000" + "\001\022?\n\rSelectService\022\026.context.ServiceFilt" + "er\032\024.context.ServiceList\"\000\022:\n\014ListSliceI" + "ds\022\022.context.ContextId\032\024.context.SliceId" + "List\"\000\0226\n\nListSlices\022\022.context.ContextId" + "\032\022.context.SliceList\"\000\022.\n\010GetSlice\022\020.con" + "text.SliceId\032\016.context.Slice\"\000\022.\n\010SetSli" + "ce\022\016.context.Slice\032\020.context.SliceId\"\000\0220" + "\n\nUnsetSlice\022\016.context.Slice\032\020.context.S" + "liceId\"\000\0221\n\013RemoveSlice\022\020.context.SliceI" + "d\032\016.context.Empty\"\000\0229\n\016GetSliceEvents\022\016." + "context.Empty\032\023.context.SliceEvent\"\0000\001\0229" + "\n\013SelectSlice\022\024.context.SliceFilter\032\022.co" + "ntext.SliceList\"\000\022D\n\021ListConnectionIds\022\022" + ".context.ServiceId\032\031.context.ConnectionI" + "dList\"\000\022@\n\017ListConnections\022\022.context.Ser" + "viceId\032\027.context.ConnectionList\"\000\022=\n\rGet" + "Connection\022\025.context.ConnectionId\032\023.cont" + "ext.Connection\"\000\022=\n\rSetConnection\022\023.cont" + "ext.Connection\032\025.context.ConnectionId\"\000\022" + ";\n\020RemoveConnection\022\025.context.Connection" + "Id\032\016.context.Empty\"\000\022C\n\023GetConnectionEve" + "nts\022\016.context.Empty\032\030.context.Connection" + "Event\"\0000\001\022@\n\020GetOpticalConfig\022\016.context." + "Empty\032\032.context.OpticalConfigList\"\000\022F\n\020S" + "etOpticalConfig\022\026.context.OpticalConfig\032" + "\030.context.OpticalConfigId\"\000\022I\n\023SelectOpt" + "icalConfig\022\030.context.OpticalConfigId\032\026.c" + "ontext.OpticalConfig\"\000\0228\n\016SetOpticalLink" + "\022\024.context.OpticalLink\032\016.context.Empty\"\000" + "\022@\n\016GetOpticalLink\022\026.context.OpticalLink" + "Id\032\024.context.OpticalLink\"\000\022.\n\010GetFiber\022\020" + ".context.FiberId\032\016.context.Fiber\"\000b\006prot" + "o3" };
+        java.lang.String[] descriptorData = { "\n\rcontext.proto\022\007context\032\tacl.proto\032\026kpi" + "_sample_types.proto\"\007\n\005Empty\"\024\n\004Uuid\022\014\n\004" + "uuid\030\001 \001(\t\"\036\n\tTimestamp\022\021\n\ttimestamp\030\001 \001" + "(\001\"Z\n\005Event\022%\n\ttimestamp\030\001 \001(\0132\022.context" + ".Timestamp\022*\n\nevent_type\030\002 \001(\0162\026.context" + ".EventTypeEnum\"0\n\tContextId\022#\n\014context_u" + "uid\030\001 \001(\0132\r.context.Uuid\"\351\001\n\007Context\022&\n\n" + "context_id\030\001 \001(\0132\022.context.ContextId\022\014\n\004" + "name\030\002 \001(\t\022)\n\014topology_ids\030\003 \003(\0132\023.conte" + "xt.TopologyId\022\'\n\013service_ids\030\004 \003(\0132\022.con" + "text.ServiceId\022#\n\tslice_ids\030\005 \003(\0132\020.cont" + "ext.SliceId\022/\n\ncontroller\030\006 \001(\0132\033.contex" + "t.TeraFlowController\"8\n\rContextIdList\022\'\n" + "\013context_ids\030\001 \003(\0132\022.context.ContextId\"1" + "\n\013ContextList\022\"\n\010contexts\030\001 \003(\0132\020.contex" + "t.Context\"U\n\014ContextEvent\022\035\n\005event\030\001 \001(\013" + "2\016.context.Event\022&\n\ncontext_id\030\002 \001(\0132\022.c" + "ontext.ContextId\"Z\n\nTopologyId\022&\n\ncontex" + "t_id\030\001 \001(\0132\022.context.ContextId\022$\n\rtopolo" + "gy_uuid\030\002 \001(\0132\r.context.Uuid\"\214\001\n\010Topolog" + "y\022(\n\013topology_id\030\001 \001(\0132\023.context.Topolog" + "yId\022\014\n\004name\030\002 \001(\t\022%\n\ndevice_ids\030\003 \003(\0132\021." + "context.DeviceId\022!\n\010link_ids\030\004 \003(\0132\017.con" + "text.LinkId\"\211\001\n\017TopologyDetails\022(\n\013topol" + "ogy_id\030\001 \001(\0132\023.context.TopologyId\022\014\n\004nam" + "e\030\002 \001(\t\022 \n\007devices\030\003 \003(\0132\017.context.Devic" + "e\022\034\n\005links\030\004 \003(\0132\r.context.Link\";\n\016Topol" + "ogyIdList\022)\n\014topology_ids\030\001 \003(\0132\023.contex" + "t.TopologyId\"5\n\014TopologyList\022%\n\ntopologi" + "es\030\001 \003(\0132\021.context.Topology\"X\n\rTopologyE" + "vent\022\035\n\005event\030\001 \001(\0132\016.context.Event\022(\n\013t" + "opology_id\030\002 \001(\0132\023.context.TopologyId\".\n" + "\010DeviceId\022\"\n\013device_uuid\030\001 \001(\0132\r.context" + ".Uuid\"\372\002\n\006Device\022$\n\tdevice_id\030\001 \001(\0132\021.co" + "ntext.DeviceId\022\014\n\004name\030\002 \001(\t\022\023\n\013device_t" + "ype\030\003 \001(\t\022,\n\rdevice_config\030\004 \001(\0132\025.conte" + "xt.DeviceConfig\022G\n\031device_operational_st" + "atus\030\005 \001(\0162$.context.DeviceOperationalSt" + "atusEnum\0221\n\016device_drivers\030\006 \003(\0162\031.conte" + "xt.DeviceDriverEnum\022+\n\020device_endpoints\030" + "\007 \003(\0132\021.context.EndPoint\022&\n\ncomponents\030\010" + " \003(\0132\022.context.Component\022(\n\rcontroller_i" + "d\030\t \001(\0132\021.context.DeviceId\"\311\001\n\tComponent" + "\022%\n\016component_uuid\030\001 \001(\0132\r.context.Uuid\022" + "\014\n\004name\030\002 \001(\t\022\014\n\004type\030\003 \001(\t\0226\n\nattribute" + "s\030\004 \003(\0132\".context.Component.AttributesEn" + "try\022\016\n\006parent\030\005 \001(\t\0321\n\017AttributesEntry\022\013" + "\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"9\n\014Device" + "Config\022)\n\014config_rules\030\001 \003(\0132\023.context.C" + "onfigRule\"5\n\014DeviceIdList\022%\n\ndevice_ids\030" + "\001 \003(\0132\021.context.DeviceId\".\n\nDeviceList\022 " + "\n\007devices\030\001 \003(\0132\017.context.Device\"\216\001\n\014Dev" + "iceFilter\022)\n\ndevice_ids\030\001 \001(\0132\025.context." + "DeviceIdList\022\031\n\021include_endpoints\030\002 \001(\010\022" + "\034\n\024include_config_rules\030\003 \001(\010\022\032\n\022include" + "_components\030\004 \001(\010\"\200\001\n\013DeviceEvent\022\035\n\005eve" + "nt\030\001 \001(\0132\016.context.Event\022$\n\tdevice_id\030\002 " + "\001(\0132\021.context.DeviceId\022,\n\rdevice_config\030" + "\003 \001(\0132\025.context.DeviceConfig\"*\n\006LinkId\022 " + "\n\tlink_uuid\030\001 \001(\0132\r.context.Uuid\"I\n\016Link" + "Attributes\022\033\n\023total_capacity_gbps\030\001 \001(\002\022" + "\032\n\022used_capacity_gbps\030\002 \001(\002\"\223\001\n\004Link\022 \n\007" + "link_id\030\001 \001(\0132\017.context.LinkId\022\014\n\004name\030\002" + " \001(\t\022.\n\021link_endpoint_ids\030\003 \003(\0132\023.contex" + "t.EndPointId\022+\n\nattributes\030\004 \001(\0132\027.conte" + "xt.LinkAttributes\"/\n\nLinkIdList\022!\n\010link_" + "ids\030\001 \003(\0132\017.context.LinkId\"(\n\010LinkList\022\034" + "\n\005links\030\001 \003(\0132\r.context.Link\"L\n\tLinkEven" + "t\022\035\n\005event\030\001 \001(\0132\016.context.Event\022 \n\007link" + "_id\030\002 \001(\0132\017.context.LinkId\"X\n\tServiceId\022" + "&\n\ncontext_id\030\001 \001(\0132\022.context.ContextId\022" + "#\n\014service_uuid\030\002 \001(\0132\r.context.Uuid\"\333\002\n" + "\007Service\022&\n\nservice_id\030\001 \001(\0132\022.context.S" + "erviceId\022\014\n\004name\030\002 \001(\t\022.\n\014service_type\030\003" + " \001(\0162\030.context.ServiceTypeEnum\0221\n\024servic" + "e_endpoint_ids\030\004 \003(\0132\023.context.EndPointI" + "d\0220\n\023service_constraints\030\005 \003(\0132\023.context" + ".Constraint\022.\n\016service_status\030\006 \001(\0132\026.co" + "ntext.ServiceStatus\022.\n\016service_config\030\007 " + "\001(\0132\026.context.ServiceConfig\022%\n\ttimestamp" + "\030\010 \001(\0132\022.context.Timestamp\"C\n\rServiceSta" + "tus\0222\n\016service_status\030\001 \001(\0162\032.context.Se" + "rviceStatusEnum\":\n\rServiceConfig\022)\n\014conf" + "ig_rules\030\001 \003(\0132\023.context.ConfigRule\"8\n\rS" + "erviceIdList\022\'\n\013service_ids\030\001 \003(\0132\022.cont" + "ext.ServiceId\"1\n\013ServiceList\022\"\n\010services" + "\030\001 \003(\0132\020.context.Service\"\225\001\n\rServiceFilt" + "er\022+\n\013service_ids\030\001 \001(\0132\026.context.Servic" + "eIdList\022\034\n\024include_endpoint_ids\030\002 \001(\010\022\033\n" + "\023include_constraints\030\003 \001(\010\022\034\n\024include_co" + "nfig_rules\030\004 \001(\010\"U\n\014ServiceEvent\022\035\n\005even" + "t\030\001 \001(\0132\016.context.Event\022&\n\nservice_id\030\002 " + "\001(\0132\022.context.ServiceId\"T\n\007SliceId\022&\n\nco" + "ntext_id\030\001 \001(\0132\022.context.ContextId\022!\n\nsl" + "ice_uuid\030\002 \001(\0132\r.context.Uuid\"\240\003\n\005Slice\022" + "\"\n\010slice_id\030\001 \001(\0132\020.context.SliceId\022\014\n\004n" + "ame\030\002 \001(\t\022/\n\022slice_endpoint_ids\030\003 \003(\0132\023." + "context.EndPointId\022.\n\021slice_constraints\030" + "\004 \003(\0132\023.context.Constraint\022-\n\021slice_serv" + "ice_ids\030\005 \003(\0132\022.context.ServiceId\022,\n\022sli" + "ce_subslice_ids\030\006 \003(\0132\020.context.SliceId\022" + "*\n\014slice_status\030\007 \001(\0132\024.context.SliceSta" + "tus\022*\n\014slice_config\030\010 \001(\0132\024.context.Slic" + "eConfig\022(\n\013slice_owner\030\t \001(\0132\023.context.S" + "liceOwner\022%\n\ttimestamp\030\n \001(\0132\022.context.T" + "imestamp\"E\n\nSliceOwner\022!\n\nowner_uuid\030\001 \001" + "(\0132\r.context.Uuid\022\024\n\014owner_string\030\002 \001(\t\"" + "=\n\013SliceStatus\022.\n\014slice_status\030\001 \001(\0162\030.c" + "ontext.SliceStatusEnum\"8\n\013SliceConfig\022)\n" + "\014config_rules\030\001 \003(\0132\023.context.ConfigRule" + "\"2\n\013SliceIdList\022#\n\tslice_ids\030\001 \003(\0132\020.con" + "text.SliceId\"+\n\tSliceList\022\036\n\006slices\030\001 \003(" + "\0132\016.context.Slice\"\312\001\n\013SliceFilter\022\'\n\tsli" + "ce_ids\030\001 \001(\0132\024.context.SliceIdList\022\034\n\024in" + "clude_endpoint_ids\030\002 \001(\010\022\033\n\023include_cons" + "traints\030\003 \001(\010\022\033\n\023include_service_ids\030\004 \001" + "(\010\022\034\n\024include_subslice_ids\030\005 \001(\010\022\034\n\024incl" + "ude_config_rules\030\006 \001(\010\"O\n\nSliceEvent\022\035\n\005" + "event\030\001 \001(\0132\016.context.Event\022\"\n\010slice_id\030" + "\002 \001(\0132\020.context.SliceId\"6\n\014ConnectionId\022" + "&\n\017connection_uuid\030\001 \001(\0132\r.context.Uuid\"" + "2\n\025ConnectionSettings_L0\022\031\n\021lsp_symbolic" + "_name\030\001 \001(\t\"\236\001\n\025ConnectionSettings_L2\022\027\n" + "\017src_mac_address\030\001 \001(\t\022\027\n\017dst_mac_addres" + "s\030\002 \001(\t\022\022\n\nether_type\030\003 \001(\r\022\017\n\007vlan_id\030\004" + " \001(\r\022\022\n\nmpls_label\030\005 \001(\r\022\032\n\022mpls_traffic" + "_class\030\006 \001(\r\"t\n\025ConnectionSettings_L3\022\026\n" + "\016src_ip_address\030\001 \001(\t\022\026\n\016dst_ip_address\030" + "\002 \001(\t\022\014\n\004dscp\030\003 \001(\r\022\020\n\010protocol\030\004 \001(\r\022\013\n" + "\003ttl\030\005 \001(\r\"[\n\025ConnectionSettings_L4\022\020\n\010s" + "rc_port\030\001 \001(\r\022\020\n\010dst_port\030\002 \001(\r\022\021\n\ttcp_f" + "lags\030\003 \001(\r\022\013\n\003ttl\030\004 \001(\r\"\304\001\n\022ConnectionSe" + "ttings\022*\n\002l0\030\001 \001(\0132\036.context.ConnectionS" + "ettings_L0\022*\n\002l2\030\002 \001(\0132\036.context.Connect" + "ionSettings_L2\022*\n\002l3\030\003 \001(\0132\036.context.Con" + "nectionSettings_L3\022*\n\002l4\030\004 \001(\0132\036.context" + ".ConnectionSettings_L4\"\363\001\n\nConnection\022,\n" + "\rconnection_id\030\001 \001(\0132\025.context.Connectio" + "nId\022&\n\nservice_id\030\002 \001(\0132\022.context.Servic" + "eId\0223\n\026path_hops_endpoint_ids\030\003 \003(\0132\023.co" + "ntext.EndPointId\022+\n\017sub_service_ids\030\004 \003(" + "\0132\022.context.ServiceId\022-\n\010settings\030\005 \001(\0132" + "\033.context.ConnectionSettings\"A\n\020Connecti" + "onIdList\022-\n\016connection_ids\030\001 \003(\0132\025.conte" + "xt.ConnectionId\":\n\016ConnectionList\022(\n\013con" + "nections\030\001 \003(\0132\023.context.Connection\"^\n\017C" + "onnectionEvent\022\035\n\005event\030\001 \001(\0132\016.context." + "Event\022,\n\rconnection_id\030\002 \001(\0132\025.context.C" + "onnectionId\"\202\001\n\nEndPointId\022(\n\013topology_i" + "d\030\001 \001(\0132\023.context.TopologyId\022$\n\tdevice_i" + "d\030\002 \001(\0132\021.context.DeviceId\022$\n\rendpoint_u" + "uid\030\003 \001(\0132\r.context.Uuid\"\302\001\n\010EndPoint\022(\n" + "\013endpoint_id\030\001 \001(\0132\023.context.EndPointId\022" + "\014\n\004name\030\002 \001(\t\022\025\n\rendpoint_type\030\003 \001(\t\0229\n\020" + "kpi_sample_types\030\004 \003(\0162\037.kpi_sample_type" + "s.KpiSampleType\022,\n\021endpoint_location\030\005 \001" + "(\0132\021.context.Location\"{\n\014EndPointName\022(\n" + "\013endpoint_id\030\001 \001(\0132\023.context.EndPointId\022" + "\023\n\013device_name\030\002 \001(\t\022\025\n\rendpoint_name\030\003 " + "\001(\t\022\025\n\rendpoint_type\030\004 \001(\t\";\n\016EndPointId" + "List\022)\n\014endpoint_ids\030\001 \003(\0132\023.context.End" + "PointId\"A\n\020EndPointNameList\022-\n\016endpoint_" + "names\030\001 \003(\0132\025.context.EndPointName\"A\n\021Co" + "nfigRule_Custom\022\024\n\014resource_key\030\001 \001(\t\022\026\n" + "\016resource_value\030\002 \001(\t\"]\n\016ConfigRule_ACL\022" + "(\n\013endpoint_id\030\001 \001(\0132\023.context.EndPointI" + "d\022!\n\010rule_set\030\002 \001(\0132\017.acl.AclRuleSet\"\234\001\n" + "\nConfigRule\022)\n\006action\030\001 \001(\0162\031.context.Co" + "nfigActionEnum\022,\n\006custom\030\002 \001(\0132\032.context" + ".ConfigRule_CustomH\000\022&\n\003acl\030\003 \001(\0132\027.cont" + "ext.ConfigRule_ACLH\000B\r\n\013config_rule\"F\n\021C" + "onstraint_Custom\022\027\n\017constraint_type\030\001 \001(" + "\t\022\030\n\020constraint_value\030\002 \001(\t\"E\n\023Constrain" + "t_Schedule\022\027\n\017start_timestamp\030\001 \001(\002\022\025\n\rd" + "uration_days\030\002 \001(\002\"3\n\014GPS_Position\022\020\n\010la" + "titude\030\001 \001(\002\022\021\n\tlongitude\030\002 \001(\002\"W\n\010Locat" + "ion\022\020\n\006region\030\001 \001(\tH\000\022-\n\014gps_position\030\002 " + "\001(\0132\025.context.GPS_PositionH\000B\n\n\010location" + "\"l\n\033Constraint_EndPointLocation\022(\n\013endpo" + "int_id\030\001 \001(\0132\023.context.EndPointId\022#\n\010loc" + "ation\030\002 \001(\0132\021.context.Location\"Y\n\033Constr" + "aint_EndPointPriority\022(\n\013endpoint_id\030\001 \001" + "(\0132\023.context.EndPointId\022\020\n\010priority\030\002 \001(" + "\r\"0\n\026Constraint_SLA_Latency\022\026\n\016e2e_laten" + "cy_ms\030\001 \001(\002\"0\n\027Constraint_SLA_Capacity\022\025" + "\n\rcapacity_gbps\030\001 \001(\002\"c\n\033Constraint_SLA_" + "Availability\022\032\n\022num_disjoint_paths\030\001 \001(\r" + "\022\022\n\nall_active\030\002 \001(\010\022\024\n\014availability\030\003 \001" + "(\002\"V\n\036Constraint_SLA_Isolation_level\0224\n\017" + "isolation_level\030\001 \003(\0162\033.context.Isolatio" + "nLevelEnum\"\242\001\n\025Constraint_Exclusions\022\024\n\014" + "is_permanent\030\001 \001(\010\022%\n\ndevice_ids\030\002 \003(\0132\021" + ".context.DeviceId\022)\n\014endpoint_ids\030\003 \003(\0132" + "\023.context.EndPointId\022!\n\010link_ids\030\004 \003(\0132\017" + ".context.LinkId\"\333\004\n\nConstraint\022-\n\006action" + "\030\001 \001(\0162\035.context.ConstraintActionEnum\022,\n" + "\006custom\030\002 \001(\0132\032.context.Constraint_Custo" + "mH\000\0220\n\010schedule\030\003 \001(\0132\034.context.Constrai" + "nt_ScheduleH\000\022A\n\021endpoint_location\030\004 \001(\013" + "2$.context.Constraint_EndPointLocationH\000" + "\022A\n\021endpoint_priority\030\005 \001(\0132$.context.Co" + "nstraint_EndPointPriorityH\000\0228\n\014sla_capac" + "ity\030\006 \001(\0132 .context.Constraint_SLA_Capac" + "ityH\000\0226\n\013sla_latency\030\007 \001(\0132\037.context.Con" + "straint_SLA_LatencyH\000\022@\n\020sla_availabilit" + "y\030\010 \001(\0132$.context.Constraint_SLA_Availab" + "ilityH\000\022@\n\rsla_isolation\030\t \001(\0132\'.context" + ".Constraint_SLA_Isolation_levelH\000\0224\n\nexc" + "lusions\030\n \001(\0132\036.context.Constraint_Exclu" + "sionsH\000B\014\n\nconstraint\"^\n\022TeraFlowControl" + "ler\022&\n\ncontext_id\030\001 \001(\0132\022.context.Contex" + "tId\022\022\n\nip_address\030\002 \001(\t\022\014\n\004port\030\003 \001(\r\"U\n" + "\024AuthenticationResult\022&\n\ncontext_id\030\001 \001(" + "\0132\022.context.ContextId\022\025\n\rauthenticated\030\002" + " \001(\010\"-\n\017OpticalConfigId\022\032\n\022opticalconfig" + "_uuid\030\001 \001(\t\"S\n\rOpticalConfig\0222\n\020opticalc" + "onfig_id\030\001 \001(\0132\030.context.OpticalConfigId" + "\022\016\n\006config\030\002 \001(\t\"C\n\021OpticalConfigList\022.\n" + "\016opticalconfigs\030\001 \003(\0132\026.context.OpticalC" + "onfig\"9\n\rOpticalLinkId\022(\n\021optical_link_u" + "uid\030\001 \001(\0132\r.context.Uuid\",\n\007FiberId\022!\n\nf" + "iber_uuid\030\001 \001(\0132\r.context.Uuid\"\341\001\n\005Fiber" + "\022\n\n\002ID\030\n \001(\t\022\020\n\010src_port\030\001 \001(\t\022\020\n\010dst_po" + "rt\030\002 \001(\t\022\027\n\017local_peer_port\030\003 \001(\t\022\030\n\020rem" + "ote_peer_port\030\004 \001(\t\022\017\n\007c_slots\030\005 \003(\005\022\017\n\007" + "l_slots\030\006 \003(\005\022\017\n\007s_slots\030\007 \003(\005\022\016\n\006length" + "\030\010 \001(\002\022\014\n\004used\030\t \001(\010\022$\n\nfiber_uuid\030\013 \001(\013" + "2\020.context.FiberId\"d\n\022OpticalLinkDetails" + "\022\016\n\006length\030\001 \001(\002\022\016\n\006source\030\002 \001(\t\022\016\n\006targ" + "et\030\003 \001(\t\022\036\n\006fibers\030\004 \003(\0132\016.context.Fiber" + "\"|\n\013OpticalLink\022\014\n\004name\030\001 \001(\t\022,\n\007details" + "\030\002 \001(\0132\033.context.OpticalLinkDetails\0221\n\021o" + "ptical_link_uuid\030\003 \001(\0132\026.context.Optical" + "LinkId*j\n\rEventTypeEnum\022\027\n\023EVENTTYPE_UND" + "EFINED\020\000\022\024\n\020EVENTTYPE_CREATE\020\001\022\024\n\020EVENTT" + "YPE_UPDATE\020\002\022\024\n\020EVENTTYPE_REMOVE\020\003*\376\002\n\020D" + "eviceDriverEnum\022\032\n\026DEVICEDRIVER_UNDEFINE" + "D\020\000\022\033\n\027DEVICEDRIVER_OPENCONFIG\020\001\022\036\n\032DEVI" + "CEDRIVER_TRANSPORT_API\020\002\022\023\n\017DEVICEDRIVER" + "_P4\020\003\022&\n\"DEVICEDRIVER_IETF_NETWORK_TOPOL" + "OGY\020\004\022\033\n\027DEVICEDRIVER_ONF_TR_532\020\005\022\023\n\017DE" + "VICEDRIVER_XR\020\006\022\033\n\027DEVICEDRIVER_IETF_L2V" + "PN\020\007\022 \n\034DEVICEDRIVER_GNMI_OPENCONFIG\020\010\022\034" + "\n\030DEVICEDRIVER_OPTICAL_TFS\020\t\022\032\n\026DEVICEDR" + "IVER_IETF_ACTN\020\n\022\023\n\017DEVICEDRIVER_OC\020\013\022\024\n" + "\020DEVICEDRIVER_QKD\020\014*\217\001\n\033DeviceOperationa" + "lStatusEnum\022%\n!DEVICEOPERATIONALSTATUS_U" + "NDEFINED\020\000\022$\n DEVICEOPERATIONALSTATUS_DI" + "SABLED\020\001\022#\n\037DEVICEOPERATIONALSTATUS_ENAB" + "LED\020\002*\345\001\n\017ServiceTypeEnum\022\027\n\023SERVICETYPE" + "_UNKNOWN\020\000\022\024\n\020SERVICETYPE_L3NM\020\001\022\024\n\020SERV" + "ICETYPE_L2NM\020\002\022)\n%SERVICETYPE_TAPI_CONNE" + "CTIVITY_SERVICE\020\003\022\022\n\016SERVICETYPE_TE\020\004\022\023\n" + "\017SERVICETYPE_E2E\020\005\022$\n SERVICETYPE_OPTICA" + "L_CONNECTIVITY\020\006\022\023\n\017SERVICETYPE_QKD\020\007*\304\001" + "\n\021ServiceStatusEnum\022\033\n\027SERVICESTATUS_UND" + "EFINED\020\000\022\031\n\025SERVICESTATUS_PLANNED\020\001\022\030\n\024S" + "ERVICESTATUS_ACTIVE\020\002\022\032\n\026SERVICESTATUS_U" + "PDATING\020\003\022!\n\035SERVICESTATUS_PENDING_REMOV" + "AL\020\004\022\036\n\032SERVICESTATUS_SLA_VIOLATED\020\005*\251\001\n" + "\017SliceStatusEnum\022\031\n\025SLICESTATUS_UNDEFINE" + "D\020\000\022\027\n\023SLICESTATUS_PLANNED\020\001\022\024\n\020SLICESTA" + "TUS_INIT\020\002\022\026\n\022SLICESTATUS_ACTIVE\020\003\022\026\n\022SL" + "ICESTATUS_DEINIT\020\004\022\034\n\030SLICESTATUS_SLA_VI" + "OLATED\020\005*]\n\020ConfigActionEnum\022\032\n\026CONFIGAC" + "TION_UNDEFINED\020\000\022\024\n\020CONFIGACTION_SET\020\001\022\027" + "\n\023CONFIGACTION_DELETE\020\002*m\n\024ConstraintAct" + "ionEnum\022\036\n\032CONSTRAINTACTION_UNDEFINED\020\000\022" + "\030\n\024CONSTRAINTACTION_SET\020\001\022\033\n\027CONSTRAINTA" + "CTION_DELETE\020\002*\203\002\n\022IsolationLevelEnum\022\020\n" + "\014NO_ISOLATION\020\000\022\026\n\022PHYSICAL_ISOLATION\020\001\022" + "\025\n\021LOGICAL_ISOLATION\020\002\022\025\n\021PROCESS_ISOLAT" + "ION\020\003\022\035\n\031PHYSICAL_MEMORY_ISOLATION\020\004\022\036\n\032" + "PHYSICAL_NETWORK_ISOLATION\020\005\022\036\n\032VIRTUAL_" + "RESOURCE_ISOLATION\020\006\022\037\n\033NETWORK_FUNCTION" + "S_ISOLATION\020\007\022\025\n\021SERVICE_ISOLATION\020\0102\246\031\n" + "\016ContextService\022:\n\016ListContextIds\022\016.cont" + "ext.Empty\032\026.context.ContextIdList\"\000\0226\n\014L" + "istContexts\022\016.context.Empty\032\024.context.Co" + "ntextList\"\000\0224\n\nGetContext\022\022.context.Cont" + "extId\032\020.context.Context\"\000\0224\n\nSetContext\022" + "\020.context.Context\032\022.context.ContextId\"\000\022" + "5\n\rRemoveContext\022\022.context.ContextId\032\016.c" + "ontext.Empty\"\000\022=\n\020GetContextEvents\022\016.con" + "text.Empty\032\025.context.ContextEvent\"\0000\001\022@\n" + "\017ListTopologyIds\022\022.context.ContextId\032\027.c" + "ontext.TopologyIdList\"\000\022=\n\016ListTopologie" + "s\022\022.context.ContextId\032\025.context.Topology" + "List\"\000\0227\n\013GetTopology\022\023.context.Topology" + "Id\032\021.context.Topology\"\000\022E\n\022GetTopologyDe" + "tails\022\023.context.TopologyId\032\030.context.Top" + "ologyDetails\"\000\0227\n\013SetTopology\022\021.context." + "Topology\032\023.context.TopologyId\"\000\0227\n\016Remov" + "eTopology\022\023.context.TopologyId\032\016.context" + ".Empty\"\000\022?\n\021GetTopologyEvents\022\016.context." + "Empty\032\026.context.TopologyEvent\"\0000\001\0228\n\rLis" + "tDeviceIds\022\016.context.Empty\032\025.context.Dev" + "iceIdList\"\000\0224\n\013ListDevices\022\016.context.Emp" + "ty\032\023.context.DeviceList\"\000\0221\n\tGetDevice\022\021" + ".context.DeviceId\032\017.context.Device\"\000\0221\n\t" + "SetDevice\022\017.context.Device\032\021.context.Dev" + "iceId\"\000\0223\n\014RemoveDevice\022\021.context.Device" + "Id\032\016.context.Empty\"\000\022;\n\017GetDeviceEvents\022" + "\016.context.Empty\032\024.context.DeviceEvent\"\0000" + "\001\022<\n\014SelectDevice\022\025.context.DeviceFilter" + "\032\023.context.DeviceList\"\000\022I\n\021ListEndPointN" + "ames\022\027.context.EndPointIdList\032\031.context." + "EndPointNameList\"\000\0224\n\013ListLinkIds\022\016.cont" + "ext.Empty\032\023.context.LinkIdList\"\000\0220\n\tList" + "Links\022\016.context.Empty\032\021.context.LinkList" + "\"\000\022+\n\007GetLink\022\017.context.LinkId\032\r.context" + ".Link\"\000\022+\n\007SetLink\022\r.context.Link\032\017.cont" + "ext.LinkId\"\000\022/\n\nRemoveLink\022\017.context.Lin" + "kId\032\016.context.Empty\"\000\0227\n\rGetLinkEvents\022\016" + ".context.Empty\032\022.context.LinkEvent\"\0000\001\022>" + "\n\016ListServiceIds\022\022.context.ContextId\032\026.c" + "ontext.ServiceIdList\"\000\022:\n\014ListServices\022\022" + ".context.ContextId\032\024.context.ServiceList" + "\"\000\0224\n\nGetService\022\022.context.ServiceId\032\020.c" + "ontext.Service\"\000\0224\n\nSetService\022\020.context" + ".Service\032\022.context.ServiceId\"\000\0226\n\014UnsetS" + "ervice\022\020.context.Service\032\022.context.Servi" + "ceId\"\000\0225\n\rRemoveService\022\022.context.Servic" + "eId\032\016.context.Empty\"\000\022=\n\020GetServiceEvent" + "s\022\016.context.Empty\032\025.context.ServiceEvent" + "\"\0000\001\022?\n\rSelectService\022\026.context.ServiceF" + "ilter\032\024.context.ServiceList\"\000\022:\n\014ListSli" + "ceIds\022\022.context.ContextId\032\024.context.Slic" + "eIdList\"\000\0226\n\nListSlices\022\022.context.Contex" + "tId\032\022.context.SliceList\"\000\022.\n\010GetSlice\022\020." + "context.SliceId\032\016.context.Slice\"\000\022.\n\010Set" + "Slice\022\016.context.Slice\032\020.context.SliceId\"" + "\000\0220\n\nUnsetSlice\022\016.context.Slice\032\020.contex" + "t.SliceId\"\000\0221\n\013RemoveSlice\022\020.context.Sli" + "ceId\032\016.context.Empty\"\000\0229\n\016GetSliceEvents" + "\022\016.context.Empty\032\023.context.SliceEvent\"\0000" + "\001\0229\n\013SelectSlice\022\024.context.SliceFilter\032\022" + ".context.SliceList\"\000\022D\n\021ListConnectionId" + "s\022\022.context.ServiceId\032\031.context.Connecti" + "onIdList\"\000\022@\n\017ListConnections\022\022.context." + "ServiceId\032\027.context.ConnectionList\"\000\022=\n\r" + "GetConnection\022\025.context.ConnectionId\032\023.c" + "ontext.Connection\"\000\022=\n\rSetConnection\022\023.c" + "ontext.Connection\032\025.context.ConnectionId" + "\"\000\022;\n\020RemoveConnection\022\025.context.Connect" + "ionId\032\016.context.Empty\"\000\022C\n\023GetConnection" + "Events\022\016.context.Empty\032\030.context.Connect" + "ionEvent\"\0000\001\022@\n\020GetOpticalConfig\022\016.conte" + "xt.Empty\032\032.context.OpticalConfigList\"\000\022F" + "\n\020SetOpticalConfig\022\026.context.OpticalConf" + "ig\032\030.context.OpticalConfigId\"\000\022I\n\023Select" + "OpticalConfig\022\030.context.OpticalConfigId\032" + "\026.context.OpticalConfig\"\000\0228\n\016SetOpticalL" + "ink\022\024.context.OpticalLink\032\016.context.Empt" + "y\"\000\022@\n\016GetOpticalLink\022\026.context.OpticalL" + "inkId\032\024.context.OpticalLink\"\000\022.\n\010GetFibe" + "r\022\020.context.FiberId\032\016.context.Fiber\"\000b\006p" + "roto3" };
         descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { acl.Acl.getDescriptor(), kpi_sample_types.KpiSampleTypes.getDescriptor() });
         internal_static_context_Empty_descriptor = getDescriptor().getMessageTypes().get(0);
         internal_static_context_Empty_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Empty_descriptor, new java.lang.String[] {});
diff --git a/src/policy/target/generated-sources/grpc/context/ContextServiceGrpc.java b/src/policy/target/generated-sources/grpc/context/ContextServiceGrpc.java
index a03f7e9491a695b715ef6bcadcf82150bdc3a231..233312dd76b68ffefd109cd2ec4ca48df68275fd 100644
--- a/src/policy/target/generated-sources/grpc/context/ContextServiceGrpc.java
+++ b/src/policy/target/generated-sources/grpc/context/ContextServiceGrpc.java
@@ -4,7 +4,8 @@ import static io.grpc.MethodDescriptor.generateFullMethodName;
 
 /**
  */
-@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.38.1)", comments = "Source: context.proto")
+@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.55.1)", comments = "Source: context.proto")
+@io.grpc.stub.annotations.GrpcGenerated
 public final class ContextServiceGrpc {
 
     private ContextServiceGrpc() {
@@ -882,299 +883,299 @@ public final class ContextServiceGrpc {
 
     /**
      */
-    public static abstract class ContextServiceImplBase implements io.grpc.BindableService {
+    public interface AsyncService {
 
         /**
          */
-        public void listContextIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
+        default void listContextIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListContextIdsMethod(), responseObserver);
         }
 
         /**
          */
-        public void listContexts(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
+        default void listContexts(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListContextsMethod(), responseObserver);
         }
 
         /**
          */
-        public void getContext(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getContext(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetContextMethod(), responseObserver);
         }
 
         /**
          */
-        public void setContext(context.ContextOuterClass.Context request, io.grpc.stub.StreamObserver responseObserver) {
+        default void setContext(context.ContextOuterClass.Context request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetContextMethod(), responseObserver);
         }
 
         /**
          */
-        public void removeContext(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void removeContext(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveContextMethod(), responseObserver);
         }
 
         /**
          */
-        public void getContextEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getContextEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetContextEventsMethod(), responseObserver);
         }
 
         /**
          */
-        public void listTopologyIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void listTopologyIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListTopologyIdsMethod(), responseObserver);
         }
 
         /**
          */
-        public void listTopologies(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void listTopologies(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListTopologiesMethod(), responseObserver);
         }
 
         /**
          */
-        public void getTopology(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getTopology(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetTopologyMethod(), responseObserver);
         }
 
         /**
          */
-        public void getTopologyDetails(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getTopologyDetails(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetTopologyDetailsMethod(), responseObserver);
         }
 
         /**
          */
-        public void setTopology(context.ContextOuterClass.Topology request, io.grpc.stub.StreamObserver responseObserver) {
+        default void setTopology(context.ContextOuterClass.Topology request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetTopologyMethod(), responseObserver);
         }
 
         /**
          */
-        public void removeTopology(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void removeTopology(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveTopologyMethod(), responseObserver);
         }
 
         /**
          */
-        public void getTopologyEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getTopologyEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetTopologyEventsMethod(), responseObserver);
         }
 
         /**
          */
-        public void listDeviceIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
+        default void listDeviceIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListDeviceIdsMethod(), responseObserver);
         }
 
         /**
          */
-        public void listDevices(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
+        default void listDevices(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListDevicesMethod(), responseObserver);
         }
 
         /**
          */
-        public void getDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetDeviceMethod(), responseObserver);
         }
 
         /**
          */
-        public void setDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver responseObserver) {
+        default void setDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetDeviceMethod(), responseObserver);
         }
 
         /**
          */
-        public void removeDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void removeDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveDeviceMethod(), responseObserver);
         }
 
         /**
          */
-        public void getDeviceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getDeviceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetDeviceEventsMethod(), responseObserver);
         }
 
         /**
          */
-        public void selectDevice(context.ContextOuterClass.DeviceFilter request, io.grpc.stub.StreamObserver responseObserver) {
+        default void selectDevice(context.ContextOuterClass.DeviceFilter request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSelectDeviceMethod(), responseObserver);
         }
 
         /**
          */
-        public void listEndPointNames(context.ContextOuterClass.EndPointIdList request, io.grpc.stub.StreamObserver responseObserver) {
+        default void listEndPointNames(context.ContextOuterClass.EndPointIdList request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListEndPointNamesMethod(), responseObserver);
         }
 
         /**
          */
-        public void listLinkIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
+        default void listLinkIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListLinkIdsMethod(), responseObserver);
         }
 
         /**
          */
-        public void listLinks(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
+        default void listLinks(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListLinksMethod(), responseObserver);
         }
 
         /**
          */
-        public void getLink(context.ContextOuterClass.LinkId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getLink(context.ContextOuterClass.LinkId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetLinkMethod(), responseObserver);
         }
 
         /**
          */
-        public void setLink(context.ContextOuterClass.Link request, io.grpc.stub.StreamObserver responseObserver) {
+        default void setLink(context.ContextOuterClass.Link request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetLinkMethod(), responseObserver);
         }
 
         /**
          */
-        public void removeLink(context.ContextOuterClass.LinkId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void removeLink(context.ContextOuterClass.LinkId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveLinkMethod(), responseObserver);
         }
 
         /**
          */
-        public void getLinkEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getLinkEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetLinkEventsMethod(), responseObserver);
         }
 
         /**
          */
-        public void listServiceIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void listServiceIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListServiceIdsMethod(), responseObserver);
         }
 
         /**
          */
-        public void listServices(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void listServices(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListServicesMethod(), responseObserver);
         }
 
         /**
          */
-        public void getService(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getService(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetServiceMethod(), responseObserver);
         }
 
         /**
          */
-        public void setService(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver responseObserver) {
+        default void setService(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetServiceMethod(), responseObserver);
         }
 
         /**
          */
-        public void unsetService(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver responseObserver) {
+        default void unsetService(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getUnsetServiceMethod(), responseObserver);
         }
 
         /**
          */
-        public void removeService(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void removeService(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveServiceMethod(), responseObserver);
         }
 
         /**
          */
-        public void getServiceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getServiceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetServiceEventsMethod(), responseObserver);
         }
 
         /**
          */
-        public void selectService(context.ContextOuterClass.ServiceFilter request, io.grpc.stub.StreamObserver responseObserver) {
+        default void selectService(context.ContextOuterClass.ServiceFilter request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSelectServiceMethod(), responseObserver);
         }
 
         /**
          */
-        public void listSliceIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void listSliceIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListSliceIdsMethod(), responseObserver);
         }
 
         /**
          */
-        public void listSlices(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void listSlices(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListSlicesMethod(), responseObserver);
         }
 
         /**
          */
-        public void getSlice(context.ContextOuterClass.SliceId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getSlice(context.ContextOuterClass.SliceId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSliceMethod(), responseObserver);
         }
 
         /**
          */
-        public void setSlice(context.ContextOuterClass.Slice request, io.grpc.stub.StreamObserver responseObserver) {
+        default void setSlice(context.ContextOuterClass.Slice request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetSliceMethod(), responseObserver);
         }
 
         /**
          */
-        public void unsetSlice(context.ContextOuterClass.Slice request, io.grpc.stub.StreamObserver responseObserver) {
+        default void unsetSlice(context.ContextOuterClass.Slice request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getUnsetSliceMethod(), responseObserver);
         }
 
         /**
          */
-        public void removeSlice(context.ContextOuterClass.SliceId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void removeSlice(context.ContextOuterClass.SliceId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveSliceMethod(), responseObserver);
         }
 
         /**
          */
-        public void getSliceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getSliceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSliceEventsMethod(), responseObserver);
         }
 
         /**
          */
-        public void selectSlice(context.ContextOuterClass.SliceFilter request, io.grpc.stub.StreamObserver responseObserver) {
+        default void selectSlice(context.ContextOuterClass.SliceFilter request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSelectSliceMethod(), responseObserver);
         }
 
         /**
          */
-        public void listConnectionIds(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void listConnectionIds(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListConnectionIdsMethod(), responseObserver);
         }
 
         /**
          */
-        public void listConnections(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void listConnections(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListConnectionsMethod(), responseObserver);
         }
 
         /**
          */
-        public void getConnection(context.ContextOuterClass.ConnectionId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getConnection(context.ContextOuterClass.ConnectionId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetConnectionMethod(), responseObserver);
         }
 
         /**
          */
-        public void setConnection(context.ContextOuterClass.Connection request, io.grpc.stub.StreamObserver responseObserver) {
+        default void setConnection(context.ContextOuterClass.Connection request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetConnectionMethod(), responseObserver);
         }
 
         /**
          */
-        public void removeConnection(context.ContextOuterClass.ConnectionId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void removeConnection(context.ContextOuterClass.ConnectionId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveConnectionMethod(), responseObserver);
         }
 
         /**
          */
-        public void getConnectionEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getConnectionEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetConnectionEventsMethod(), responseObserver);
         }
 
@@ -1183,47 +1184,54 @@ public final class ContextServiceGrpc {
          * ------------------------------ Experimental -----------------------------
          * 
*/ - public void getOpticalConfig(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { + default void getOpticalConfig(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetOpticalConfigMethod(), responseObserver); } /** */ - public void setOpticalConfig(context.ContextOuterClass.OpticalConfig request, io.grpc.stub.StreamObserver responseObserver) { + default void setOpticalConfig(context.ContextOuterClass.OpticalConfig request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetOpticalConfigMethod(), responseObserver); } /** */ - public void selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request, io.grpc.stub.StreamObserver responseObserver) { + default void selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSelectOpticalConfigMethod(), responseObserver); } /** */ - public void setOpticalLink(context.ContextOuterClass.OpticalLink request, io.grpc.stub.StreamObserver responseObserver) { + default void setOpticalLink(context.ContextOuterClass.OpticalLink request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetOpticalLinkMethod(), responseObserver); } /** */ - public void getOpticalLink(context.ContextOuterClass.OpticalLinkId request, io.grpc.stub.StreamObserver responseObserver) { + default void getOpticalLink(context.ContextOuterClass.OpticalLinkId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetOpticalLinkMethod(), responseObserver); } /** */ - public void getFiber(context.ContextOuterClass.FiberId request, io.grpc.stub.StreamObserver responseObserver) { + default void getFiber(context.ContextOuterClass.FiberId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetFiberMethod(), responseObserver); } + } + + /** + * Base class for the server implementation of the service ContextService. + */ + public static abstract class ContextServiceImplBase implements io.grpc.BindableService, AsyncService { @java.lang.Override public io.grpc.ServerServiceDefinition bindService() { - return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getListContextIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_CONTEXT_IDS))).addMethod(getListContextsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_CONTEXTS))).addMethod(getGetContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_CONTEXT))).addMethod(getSetContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SET_CONTEXT))).addMethod(getRemoveContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_CONTEXT))).addMethod(getGetContextEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_CONTEXT_EVENTS))).addMethod(getListTopologyIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_TOPOLOGY_IDS))).addMethod(getListTopologiesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_TOPOLOGIES))).addMethod(getGetTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_TOPOLOGY))).addMethod(getGetTopologyDetailsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_TOPOLOGY_DETAILS))).addMethod(getSetTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SET_TOPOLOGY))).addMethod(getRemoveTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_TOPOLOGY))).addMethod(getGetTopologyEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_TOPOLOGY_EVENTS))).addMethod(getListDeviceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_DEVICE_IDS))).addMethod(getListDevicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_DEVICES))).addMethod(getGetDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_DEVICE))).addMethod(getSetDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SET_DEVICE))).addMethod(getRemoveDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_DEVICE))).addMethod(getGetDeviceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_DEVICE_EVENTS))).addMethod(getSelectDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SELECT_DEVICE))).addMethod(getListEndPointNamesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_END_POINT_NAMES))).addMethod(getListLinkIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_LINK_IDS))).addMethod(getListLinksMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_LINKS))).addMethod(getGetLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_LINK))).addMethod(getSetLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SET_LINK))).addMethod(getRemoveLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_LINK))).addMethod(getGetLinkEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_LINK_EVENTS))).addMethod(getListServiceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_SERVICE_IDS))).addMethod(getListServicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_SERVICES))).addMethod(getGetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_SERVICE))).addMethod(getSetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SET_SERVICE))).addMethod(getUnsetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_UNSET_SERVICE))).addMethod(getRemoveServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_SERVICE))).addMethod(getGetServiceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_SERVICE_EVENTS))).addMethod(getSelectServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SELECT_SERVICE))).addMethod(getListSliceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_SLICE_IDS))).addMethod(getListSlicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_SLICES))).addMethod(getGetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_SLICE))).addMethod(getSetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SET_SLICE))).addMethod(getUnsetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_UNSET_SLICE))).addMethod(getRemoveSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_SLICE))).addMethod(getGetSliceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_SLICE_EVENTS))).addMethod(getSelectSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SELECT_SLICE))).addMethod(getListConnectionIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_CONNECTION_IDS))).addMethod(getListConnectionsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_CONNECTIONS))).addMethod(getGetConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_CONNECTION))).addMethod(getSetConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SET_CONNECTION))).addMethod(getRemoveConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_CONNECTION))).addMethod(getGetConnectionEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_CONNECTION_EVENTS))).addMethod(getGetOpticalConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_OPTICAL_CONFIG))).addMethod(getSetOpticalConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SET_OPTICAL_CONFIG))).addMethod(getSelectOpticalConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SELECT_OPTICAL_CONFIG))).addMethod(getSetOpticalLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SET_OPTICAL_LINK))).addMethod(getGetOpticalLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_OPTICAL_LINK))).addMethod(getGetFiberMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_FIBER))).build(); + return ContextServiceGrpc.bindService(this); } } /** + * A stub to allow clients to do asynchronous rpc calls to service ContextService. */ public static class ContextServiceStub extends io.grpc.stub.AbstractAsyncStub { @@ -1571,6 +1579,7 @@ public final class ContextServiceGrpc { } /** + * A stub to allow clients to do synchronous rpc calls to service ContextService. */ public static class ContextServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub { @@ -1918,6 +1927,7 @@ public final class ContextServiceGrpc { } /** + * A stub to allow clients to do ListenableFuture-style rpc calls to service ContextService. */ public static class ContextServiceFutureStub extends io.grpc.stub.AbstractFutureStub { @@ -2334,11 +2344,11 @@ public final class ContextServiceGrpc { private static final class MethodHandlers implements io.grpc.stub.ServerCalls.UnaryMethod, io.grpc.stub.ServerCalls.ServerStreamingMethod, io.grpc.stub.ServerCalls.ClientStreamingMethod, io.grpc.stub.ServerCalls.BidiStreamingMethod { - private final ContextServiceImplBase serviceImpl; + private final AsyncService serviceImpl; private final int methodId; - MethodHandlers(ContextServiceImplBase serviceImpl, int methodId) { + MethodHandlers(AsyncService serviceImpl, int methodId) { this.serviceImpl = serviceImpl; this.methodId = methodId; } @@ -2527,6 +2537,10 @@ public final class ContextServiceGrpc { } } + public static io.grpc.ServerServiceDefinition bindService(AsyncService service) { + return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getListContextIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_CONTEXT_IDS))).addMethod(getListContextsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_CONTEXTS))).addMethod(getGetContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_CONTEXT))).addMethod(getSetContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_CONTEXT))).addMethod(getRemoveContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_REMOVE_CONTEXT))).addMethod(getGetContextEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_CONTEXT_EVENTS))).addMethod(getListTopologyIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_TOPOLOGY_IDS))).addMethod(getListTopologiesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_TOPOLOGIES))).addMethod(getGetTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_TOPOLOGY))).addMethod(getGetTopologyDetailsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_TOPOLOGY_DETAILS))).addMethod(getSetTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_TOPOLOGY))).addMethod(getRemoveTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_REMOVE_TOPOLOGY))).addMethod(getGetTopologyEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_TOPOLOGY_EVENTS))).addMethod(getListDeviceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_DEVICE_IDS))).addMethod(getListDevicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_DEVICES))).addMethod(getGetDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_DEVICE))).addMethod(getSetDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_DEVICE))).addMethod(getRemoveDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_REMOVE_DEVICE))).addMethod(getGetDeviceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_DEVICE_EVENTS))).addMethod(getSelectDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SELECT_DEVICE))).addMethod(getListEndPointNamesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_END_POINT_NAMES))).addMethod(getListLinkIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_LINK_IDS))).addMethod(getListLinksMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_LINKS))).addMethod(getGetLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_LINK))).addMethod(getSetLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_LINK))).addMethod(getRemoveLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_REMOVE_LINK))).addMethod(getGetLinkEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_LINK_EVENTS))).addMethod(getListServiceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_SERVICE_IDS))).addMethod(getListServicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_SERVICES))).addMethod(getGetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_SERVICE))).addMethod(getSetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_SERVICE))).addMethod(getUnsetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_UNSET_SERVICE))).addMethod(getRemoveServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_REMOVE_SERVICE))).addMethod(getGetServiceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_SERVICE_EVENTS))).addMethod(getSelectServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SELECT_SERVICE))).addMethod(getListSliceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_SLICE_IDS))).addMethod(getListSlicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_SLICES))).addMethod(getGetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_SLICE))).addMethod(getSetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_SLICE))).addMethod(getUnsetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_UNSET_SLICE))).addMethod(getRemoveSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_REMOVE_SLICE))).addMethod(getGetSliceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_SLICE_EVENTS))).addMethod(getSelectSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SELECT_SLICE))).addMethod(getListConnectionIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_CONNECTION_IDS))).addMethod(getListConnectionsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_CONNECTIONS))).addMethod(getGetConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_CONNECTION))).addMethod(getSetConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_CONNECTION))).addMethod(getRemoveConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_REMOVE_CONNECTION))).addMethod(getGetConnectionEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_CONNECTION_EVENTS))).addMethod(getGetOpticalConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_OPTICAL_CONFIG))).addMethod(getSetOpticalConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_OPTICAL_CONFIG))).addMethod(getSelectOpticalConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SELECT_OPTICAL_CONFIG))).addMethod(getSetOpticalLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_OPTICAL_LINK))).addMethod(getGetOpticalLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_OPTICAL_LINK))).addMethod(getGetFiberMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_FIBER))).build(); + } + private static abstract class ContextServiceBaseDescriptorSupplier implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier { ContextServiceBaseDescriptorSupplier() { diff --git a/src/policy/target/generated-sources/grpc/context_policy/ContextPolicyServiceGrpc.java b/src/policy/target/generated-sources/grpc/context_policy/ContextPolicyServiceGrpc.java index f7123f88ff428fc2d67fc631e10d563dc9b224f8..721493b1e76ee46e66bccf1b193eb1f192247d1c 100644 --- a/src/policy/target/generated-sources/grpc/context_policy/ContextPolicyServiceGrpc.java +++ b/src/policy/target/generated-sources/grpc/context_policy/ContextPolicyServiceGrpc.java @@ -7,7 +7,8 @@ import static io.grpc.MethodDescriptor.generateFullMethodName; * created as a separate service to prevent import-loops in context and policy *
*/ -@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.38.1)", comments = "Source: context_policy.proto") +@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.55.1)", comments = "Source: context_policy.proto") +@io.grpc.stub.annotations.GrpcGenerated public final class ContextPolicyServiceGrpc { private ContextPolicyServiceGrpc() { @@ -138,45 +139,55 @@ public final class ContextPolicyServiceGrpc { * created as a separate service to prevent import-loops in context and policy * */ - public static abstract class ContextPolicyServiceImplBase implements io.grpc.BindableService { + public interface AsyncService { /** */ - public void listPolicyRuleIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { + default void listPolicyRuleIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListPolicyRuleIdsMethod(), responseObserver); } /** */ - public void listPolicyRules(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { + default void listPolicyRules(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListPolicyRulesMethod(), responseObserver); } /** */ - public void getPolicyRule(policy.Policy.PolicyRuleId request, io.grpc.stub.StreamObserver responseObserver) { + default void getPolicyRule(policy.Policy.PolicyRuleId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetPolicyRuleMethod(), responseObserver); } /** */ - public void setPolicyRule(policy.Policy.PolicyRule request, io.grpc.stub.StreamObserver responseObserver) { + default void setPolicyRule(policy.Policy.PolicyRule request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetPolicyRuleMethod(), responseObserver); } /** */ - public void removePolicyRule(policy.Policy.PolicyRuleId request, io.grpc.stub.StreamObserver responseObserver) { + default void removePolicyRule(policy.Policy.PolicyRuleId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemovePolicyRuleMethod(), responseObserver); } + } + + /** + * Base class for the server implementation of the service ContextPolicyService. + *
+     * created as a separate service to prevent import-loops in context and policy
+     * 
+ */ + public static abstract class ContextPolicyServiceImplBase implements io.grpc.BindableService, AsyncService { @java.lang.Override public io.grpc.ServerServiceDefinition bindService() { - return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getListPolicyRuleIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_POLICY_RULE_IDS))).addMethod(getListPolicyRulesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_POLICY_RULES))).addMethod(getGetPolicyRuleMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_POLICY_RULE))).addMethod(getSetPolicyRuleMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SET_POLICY_RULE))).addMethod(getRemovePolicyRuleMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_POLICY_RULE))).build(); + return ContextPolicyServiceGrpc.bindService(this); } } /** + * A stub to allow clients to do asynchronous rpc calls to service ContextPolicyService. *
      * created as a separate service to prevent import-loops in context and policy
      * 
@@ -224,6 +235,7 @@ public final class ContextPolicyServiceGrpc { } /** + * A stub to allow clients to do synchronous rpc calls to service ContextPolicyService. *
      * created as a separate service to prevent import-loops in context and policy
      * 
@@ -271,6 +283,7 @@ public final class ContextPolicyServiceGrpc { } /** + * A stub to allow clients to do ListenableFuture-style rpc calls to service ContextPolicyService. *
      * created as a separate service to prevent import-loops in context and policy
      * 
@@ -329,11 +342,11 @@ public final class ContextPolicyServiceGrpc { private static final class MethodHandlers implements io.grpc.stub.ServerCalls.UnaryMethod, io.grpc.stub.ServerCalls.ServerStreamingMethod, io.grpc.stub.ServerCalls.ClientStreamingMethod, io.grpc.stub.ServerCalls.BidiStreamingMethod { - private final ContextPolicyServiceImplBase serviceImpl; + private final AsyncService serviceImpl; private final int methodId; - MethodHandlers(ContextPolicyServiceImplBase serviceImpl, int methodId) { + MethodHandlers(AsyncService serviceImpl, int methodId) { this.serviceImpl = serviceImpl; this.methodId = methodId; } @@ -372,6 +385,10 @@ public final class ContextPolicyServiceGrpc { } } + public static io.grpc.ServerServiceDefinition bindService(AsyncService service) { + return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getListPolicyRuleIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_POLICY_RULE_IDS))).addMethod(getListPolicyRulesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_POLICY_RULES))).addMethod(getGetPolicyRuleMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_POLICY_RULE))).addMethod(getSetPolicyRuleMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_POLICY_RULE))).addMethod(getRemovePolicyRuleMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_REMOVE_POLICY_RULE))).build(); + } + private static abstract class ContextPolicyServiceBaseDescriptorSupplier implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier { ContextPolicyServiceBaseDescriptorSupplier() { diff --git a/src/policy/target/generated-sources/grpc/device/Device.java b/src/policy/target/generated-sources/grpc/device/Device.java index 93bd490405da36c7ee2f26121e5abd94c3ec13a5..53ac328d63c864c382dea28aa7d9202939f49cac 100644 --- a/src/policy/target/generated-sources/grpc/device/Device.java +++ b/src/policy/target/generated-sources/grpc/device/Device.java @@ -18,35 +18,59 @@ public final class Device { com.google.protobuf.MessageOrBuilder { /** + *
+         * to be migrated to: "kpi_manager.KpiId"
+         * 
+ * * .monitoring.KpiId kpi_id = 1; * @return Whether the kpiId field is set. */ boolean hasKpiId(); /** + *
+         * to be migrated to: "kpi_manager.KpiId"
+         * 
+ * * .monitoring.KpiId kpi_id = 1; * @return The kpiId. */ monitoring.Monitoring.KpiId getKpiId(); /** + *
+         * to be migrated to: "kpi_manager.KpiId"
+         * 
+ * * .monitoring.KpiId kpi_id = 1; */ monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder(); /** + *
+         * to be migrated to: "kpi_manager.KpiDescriptor"
+         * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; * @return Whether the kpiDescriptor field is set. */ boolean hasKpiDescriptor(); /** + *
+         * to be migrated to: "kpi_manager.KpiDescriptor"
+         * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; * @return The kpiDescriptor. */ monitoring.Monitoring.KpiDescriptor getKpiDescriptor(); /** + *
+         * to be migrated to: "kpi_manager.KpiDescriptor"
+         * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; */ monitoring.Monitoring.KpiDescriptorOrBuilder getKpiDescriptorOrBuilder(); @@ -86,80 +110,6 @@ public final class Device { return new MonitoringSettings(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private MonitoringSettings(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - monitoring.Monitoring.KpiId.Builder subBuilder = null; - if (kpiId_ != null) { - subBuilder = kpiId_.toBuilder(); - } - kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(kpiId_); - kpiId_ = subBuilder.buildPartial(); - } - break; - } - case 18: - { - monitoring.Monitoring.KpiDescriptor.Builder subBuilder = null; - if (kpiDescriptor_ != null) { - subBuilder = kpiDescriptor_.toBuilder(); - } - kpiDescriptor_ = input.readMessage(monitoring.Monitoring.KpiDescriptor.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(kpiDescriptor_); - kpiDescriptor_ = subBuilder.buildPartial(); - } - break; - } - case 29: - { - samplingDurationS_ = input.readFloat(); - break; - } - case 37: - { - samplingIntervalS_ = input.readFloat(); - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return device.Device.internal_static_device_MonitoringSettings_descriptor; } @@ -174,6 +124,10 @@ public final class Device { private monitoring.Monitoring.KpiId kpiId_; /** + *
+         * to be migrated to: "kpi_manager.KpiId"
+         * 
+ * * .monitoring.KpiId kpi_id = 1; * @return Whether the kpiId field is set. */ @@ -183,6 +137,10 @@ public final class Device { } /** + *
+         * to be migrated to: "kpi_manager.KpiId"
+         * 
+ * * .monitoring.KpiId kpi_id = 1; * @return The kpiId. */ @@ -192,11 +150,15 @@ public final class Device { } /** + *
+         * to be migrated to: "kpi_manager.KpiId"
+         * 
+ * * .monitoring.KpiId kpi_id = 1; */ @java.lang.Override public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() { - return getKpiId(); + return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_; } public static final int KPI_DESCRIPTOR_FIELD_NUMBER = 2; @@ -204,6 +166,10 @@ public final class Device { private monitoring.Monitoring.KpiDescriptor kpiDescriptor_; /** + *
+         * to be migrated to: "kpi_manager.KpiDescriptor"
+         * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; * @return Whether the kpiDescriptor field is set. */ @@ -213,6 +179,10 @@ public final class Device { } /** + *
+         * to be migrated to: "kpi_manager.KpiDescriptor"
+         * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; * @return The kpiDescriptor. */ @@ -222,16 +192,20 @@ public final class Device { } /** + *
+         * to be migrated to: "kpi_manager.KpiDescriptor"
+         * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; */ @java.lang.Override public monitoring.Monitoring.KpiDescriptorOrBuilder getKpiDescriptorOrBuilder() { - return getKpiDescriptor(); + return kpiDescriptor_ == null ? monitoring.Monitoring.KpiDescriptor.getDefaultInstance() : kpiDescriptor_; } public static final int SAMPLING_DURATION_S_FIELD_NUMBER = 3; - private float samplingDurationS_; + private float samplingDurationS_ = 0F; /** * float sampling_duration_s = 3; @@ -244,7 +218,7 @@ public final class Device { public static final int SAMPLING_INTERVAL_S_FIELD_NUMBER = 4; - private float samplingIntervalS_; + private float samplingIntervalS_ = 0F; /** * float sampling_interval_s = 4; @@ -276,13 +250,13 @@ public final class Device { if (kpiDescriptor_ != null) { output.writeMessage(2, getKpiDescriptor()); } - if (samplingDurationS_ != 0F) { + if (java.lang.Float.floatToRawIntBits(samplingDurationS_) != 0) { output.writeFloat(3, samplingDurationS_); } - if (samplingIntervalS_ != 0F) { + if (java.lang.Float.floatToRawIntBits(samplingIntervalS_) != 0) { output.writeFloat(4, samplingIntervalS_); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -297,13 +271,13 @@ public final class Device { if (kpiDescriptor_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getKpiDescriptor()); } - if (samplingDurationS_ != 0F) { + if (java.lang.Float.floatToRawIntBits(samplingDurationS_) != 0) { size += com.google.protobuf.CodedOutputStream.computeFloatSize(3, samplingDurationS_); } - if (samplingIntervalS_ != 0F) { + if (java.lang.Float.floatToRawIntBits(samplingIntervalS_) != 0) { size += com.google.protobuf.CodedOutputStream.computeFloatSize(4, samplingIntervalS_); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -333,7 +307,7 @@ public final class Device { return false; if (java.lang.Float.floatToIntBits(getSamplingIntervalS()) != java.lang.Float.floatToIntBits(other.getSamplingIntervalS())) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -357,7 +331,7 @@ public final class Device { hash = (53 * hash) + java.lang.Float.floatToIntBits(getSamplingDurationS()); hash = (37 * hash) + SAMPLING_INTERVAL_S_FIELD_NUMBER; hash = (53 * hash) + java.lang.Float.floatToIntBits(getSamplingIntervalS()); - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -451,32 +425,24 @@ public final class Device { // Construct using device.Device.MonitoringSettings.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); - if (kpiIdBuilder_ == null) { - kpiId_ = null; - } else { - kpiId_ = null; + bitField0_ = 0; + kpiId_ = null; + if (kpiIdBuilder_ != null) { + kpiIdBuilder_.dispose(); kpiIdBuilder_ = null; } - if (kpiDescriptorBuilder_ == null) { - kpiDescriptor_ = null; - } else { - kpiDescriptor_ = null; + kpiDescriptor_ = null; + if (kpiDescriptorBuilder_ != null) { + kpiDescriptorBuilder_.dispose(); kpiDescriptorBuilder_ = null; } samplingDurationS_ = 0F; @@ -506,50 +472,27 @@ public final class Device { @java.lang.Override public device.Device.MonitoringSettings buildPartial() { device.Device.MonitoringSettings result = new device.Device.MonitoringSettings(this); - if (kpiIdBuilder_ == null) { - result.kpiId_ = kpiId_; - } else { - result.kpiId_ = kpiIdBuilder_.build(); - } - if (kpiDescriptorBuilder_ == null) { - result.kpiDescriptor_ = kpiDescriptor_; - } else { - result.kpiDescriptor_ = kpiDescriptorBuilder_.build(); + if (bitField0_ != 0) { + buildPartial0(result); } - result.samplingDurationS_ = samplingDurationS_; - result.samplingIntervalS_ = samplingIntervalS_; onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(device.Device.MonitoringSettings result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.kpiDescriptor_ = kpiDescriptorBuilder_ == null ? kpiDescriptor_ : kpiDescriptorBuilder_.build(); + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.samplingDurationS_ = samplingDurationS_; + } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.samplingIntervalS_ = samplingIntervalS_; + } } @java.lang.Override @@ -577,7 +520,7 @@ public final class Device { if (other.getSamplingIntervalS() != 0F) { setSamplingIntervalS(other.getSamplingIntervalS()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -589,33 +532,89 @@ public final class Device { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - device.Device.MonitoringSettings parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 18: + { + input.readMessage(getKpiDescriptorFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000002; + break; + } + // case 18 + case 29: + { + samplingDurationS_ = input.readFloat(); + bitField0_ |= 0x00000004; + break; + } + // case 29 + case 37: + { + samplingIntervalS_ = input.readFloat(); + bitField0_ |= 0x00000008; + break; + } + // case 37 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (device.Device.MonitoringSettings) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } + private int bitField0_; + private monitoring.Monitoring.KpiId kpiId_; private com.google.protobuf.SingleFieldBuilderV3 kpiIdBuilder_; /** + *
+             * to be migrated to: "kpi_manager.KpiId"
+             * 
+ * * .monitoring.KpiId kpi_id = 1; * @return Whether the kpiId field is set. */ public boolean hasKpiId() { - return kpiIdBuilder_ != null || kpiId_ != null; + return ((bitField0_ & 0x00000001) != 0); } /** + *
+             * to be migrated to: "kpi_manager.KpiId"
+             * 
+ * * .monitoring.KpiId kpi_id = 1; * @return The kpiId. */ @@ -628,6 +627,10 @@ public final class Device { } /** + *
+             * to be migrated to: "kpi_manager.KpiId"
+             * 
+ * * .monitoring.KpiId kpi_id = 1; */ public Builder setKpiId(monitoring.Monitoring.KpiId value) { @@ -636,66 +639,90 @@ public final class Device { throw new NullPointerException(); } kpiId_ = value; - onChanged(); } else { kpiIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } /** + *
+             * to be migrated to: "kpi_manager.KpiId"
+             * 
+ * * .monitoring.KpiId kpi_id = 1; */ public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) { if (kpiIdBuilder_ == null) { kpiId_ = builderForValue.build(); - onChanged(); } else { kpiIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } /** + *
+             * to be migrated to: "kpi_manager.KpiId"
+             * 
+ * * .monitoring.KpiId kpi_id = 1; */ public Builder mergeKpiId(monitoring.Monitoring.KpiId value) { if (kpiIdBuilder_ == null) { - if (kpiId_ != null) { - kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) { + getKpiIdBuilder().mergeFrom(value); } else { kpiId_ = value; } - onChanged(); } else { kpiIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } /** + *
+             * to be migrated to: "kpi_manager.KpiId"
+             * 
+ * * .monitoring.KpiId kpi_id = 1; */ public Builder clearKpiId() { - if (kpiIdBuilder_ == null) { - kpiId_ = null; - onChanged(); - } else { - kpiId_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + kpiId_ = null; + if (kpiIdBuilder_ != null) { + kpiIdBuilder_.dispose(); kpiIdBuilder_ = null; } + onChanged(); return this; } /** + *
+             * to be migrated to: "kpi_manager.KpiId"
+             * 
+ * * .monitoring.KpiId kpi_id = 1; */ public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() { + bitField0_ |= 0x00000001; onChanged(); return getKpiIdFieldBuilder().getBuilder(); } /** + *
+             * to be migrated to: "kpi_manager.KpiId"
+             * 
+ * * .monitoring.KpiId kpi_id = 1; */ public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() { @@ -707,6 +734,10 @@ public final class Device { } /** + *
+             * to be migrated to: "kpi_manager.KpiId"
+             * 
+ * * .monitoring.KpiId kpi_id = 1; */ private com.google.protobuf.SingleFieldBuilderV3 getKpiIdFieldBuilder() { @@ -722,14 +753,22 @@ public final class Device { private com.google.protobuf.SingleFieldBuilderV3 kpiDescriptorBuilder_; /** + *
+             * to be migrated to: "kpi_manager.KpiDescriptor"
+             * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; * @return Whether the kpiDescriptor field is set. */ public boolean hasKpiDescriptor() { - return kpiDescriptorBuilder_ != null || kpiDescriptor_ != null; + return ((bitField0_ & 0x00000002) != 0); } /** + *
+             * to be migrated to: "kpi_manager.KpiDescriptor"
+             * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; * @return The kpiDescriptor. */ @@ -742,6 +781,10 @@ public final class Device { } /** + *
+             * to be migrated to: "kpi_manager.KpiDescriptor"
+             * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; */ public Builder setKpiDescriptor(monitoring.Monitoring.KpiDescriptor value) { @@ -750,66 +793,90 @@ public final class Device { throw new NullPointerException(); } kpiDescriptor_ = value; - onChanged(); } else { kpiDescriptorBuilder_.setMessage(value); } + bitField0_ |= 0x00000002; + onChanged(); return this; } /** + *
+             * to be migrated to: "kpi_manager.KpiDescriptor"
+             * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; */ public Builder setKpiDescriptor(monitoring.Monitoring.KpiDescriptor.Builder builderForValue) { if (kpiDescriptorBuilder_ == null) { kpiDescriptor_ = builderForValue.build(); - onChanged(); } else { kpiDescriptorBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000002; + onChanged(); return this; } /** + *
+             * to be migrated to: "kpi_manager.KpiDescriptor"
+             * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; */ public Builder mergeKpiDescriptor(monitoring.Monitoring.KpiDescriptor value) { if (kpiDescriptorBuilder_ == null) { - if (kpiDescriptor_ != null) { - kpiDescriptor_ = monitoring.Monitoring.KpiDescriptor.newBuilder(kpiDescriptor_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000002) != 0) && kpiDescriptor_ != null && kpiDescriptor_ != monitoring.Monitoring.KpiDescriptor.getDefaultInstance()) { + getKpiDescriptorBuilder().mergeFrom(value); } else { kpiDescriptor_ = value; } - onChanged(); } else { kpiDescriptorBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000002; + onChanged(); return this; } /** + *
+             * to be migrated to: "kpi_manager.KpiDescriptor"
+             * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; */ public Builder clearKpiDescriptor() { - if (kpiDescriptorBuilder_ == null) { - kpiDescriptor_ = null; - onChanged(); - } else { - kpiDescriptor_ = null; + bitField0_ = (bitField0_ & ~0x00000002); + kpiDescriptor_ = null; + if (kpiDescriptorBuilder_ != null) { + kpiDescriptorBuilder_.dispose(); kpiDescriptorBuilder_ = null; } + onChanged(); return this; } /** + *
+             * to be migrated to: "kpi_manager.KpiDescriptor"
+             * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; */ public monitoring.Monitoring.KpiDescriptor.Builder getKpiDescriptorBuilder() { + bitField0_ |= 0x00000002; onChanged(); return getKpiDescriptorFieldBuilder().getBuilder(); } /** + *
+             * to be migrated to: "kpi_manager.KpiDescriptor"
+             * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; */ public monitoring.Monitoring.KpiDescriptorOrBuilder getKpiDescriptorOrBuilder() { @@ -821,6 +888,10 @@ public final class Device { } /** + *
+             * to be migrated to: "kpi_manager.KpiDescriptor"
+             * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; */ private com.google.protobuf.SingleFieldBuilderV3 getKpiDescriptorFieldBuilder() { @@ -849,6 +920,7 @@ public final class Device { */ public Builder setSamplingDurationS(float value) { samplingDurationS_ = value; + bitField0_ |= 0x00000004; onChanged(); return this; } @@ -858,6 +930,7 @@ public final class Device { * @return This builder for chaining. */ public Builder clearSamplingDurationS() { + bitField0_ = (bitField0_ & ~0x00000004); samplingDurationS_ = 0F; onChanged(); return this; @@ -881,6 +954,7 @@ public final class Device { */ public Builder setSamplingIntervalS(float value) { samplingIntervalS_ = value; + bitField0_ |= 0x00000008; onChanged(); return this; } @@ -890,6 +964,7 @@ public final class Device { * @return This builder for chaining. */ public Builder clearSamplingIntervalS() { + bitField0_ = (bitField0_ & ~0x00000008); samplingIntervalS_ = 0F; onChanged(); return this; @@ -922,7 +997,17 @@ public final class Device { @java.lang.Override public MonitoringSettings parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new MonitoringSettings(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; diff --git a/src/policy/target/generated-sources/grpc/device/DeviceServiceGrpc.java b/src/policy/target/generated-sources/grpc/device/DeviceServiceGrpc.java index a6886d8d620182790146164fbfef36762cf4368b..7e0cf9a8bb4cc207f65ce27177f7307567a19f04 100644 --- a/src/policy/target/generated-sources/grpc/device/DeviceServiceGrpc.java +++ b/src/policy/target/generated-sources/grpc/device/DeviceServiceGrpc.java @@ -4,7 +4,8 @@ import static io.grpc.MethodDescriptor.generateFullMethodName; /** */ -@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.38.1)", comments = "Source: device.proto") +@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.55.1)", comments = "Source: device.proto") +@io.grpc.stub.annotations.GrpcGenerated public final class DeviceServiceGrpc { private DeviceServiceGrpc() { @@ -132,45 +133,52 @@ public final class DeviceServiceGrpc { /** */ - public static abstract class DeviceServiceImplBase implements io.grpc.BindableService { + public interface AsyncService { /** */ - public void addDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver responseObserver) { + default void addDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getAddDeviceMethod(), responseObserver); } /** */ - public void configureDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver responseObserver) { + default void configureDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getConfigureDeviceMethod(), responseObserver); } /** */ - public void deleteDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver responseObserver) { + default void deleteDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteDeviceMethod(), responseObserver); } /** */ - public void getInitialConfig(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver responseObserver) { + default void getInitialConfig(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetInitialConfigMethod(), responseObserver); } /** */ - public void monitorDeviceKpi(device.Device.MonitoringSettings request, io.grpc.stub.StreamObserver responseObserver) { + default void monitorDeviceKpi(device.Device.MonitoringSettings request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getMonitorDeviceKpiMethod(), responseObserver); } + } + + /** + * Base class for the server implementation of the service DeviceService. + */ + public static abstract class DeviceServiceImplBase implements io.grpc.BindableService, AsyncService { @java.lang.Override public io.grpc.ServerServiceDefinition bindService() { - return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getAddDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_ADD_DEVICE))).addMethod(getConfigureDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_CONFIGURE_DEVICE))).addMethod(getDeleteDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_DELETE_DEVICE))).addMethod(getGetInitialConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_INITIAL_CONFIG))).addMethod(getMonitorDeviceKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_MONITOR_DEVICE_KPI))).build(); + return DeviceServiceGrpc.bindService(this); } } /** + * A stub to allow clients to do asynchronous rpc calls to service DeviceService. */ public static class DeviceServiceStub extends io.grpc.stub.AbstractAsyncStub { @@ -215,6 +223,7 @@ public final class DeviceServiceGrpc { } /** + * A stub to allow clients to do synchronous rpc calls to service DeviceService. */ public static class DeviceServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub { @@ -259,6 +268,7 @@ public final class DeviceServiceGrpc { } /** + * A stub to allow clients to do ListenableFuture-style rpc calls to service DeviceService. */ public static class DeviceServiceFutureStub extends io.grpc.stub.AbstractFutureStub { @@ -314,11 +324,11 @@ public final class DeviceServiceGrpc { private static final class MethodHandlers implements io.grpc.stub.ServerCalls.UnaryMethod, io.grpc.stub.ServerCalls.ServerStreamingMethod, io.grpc.stub.ServerCalls.ClientStreamingMethod, io.grpc.stub.ServerCalls.BidiStreamingMethod { - private final DeviceServiceImplBase serviceImpl; + private final AsyncService serviceImpl; private final int methodId; - MethodHandlers(DeviceServiceImplBase serviceImpl, int methodId) { + MethodHandlers(AsyncService serviceImpl, int methodId) { this.serviceImpl = serviceImpl; this.methodId = methodId; } @@ -357,6 +367,10 @@ public final class DeviceServiceGrpc { } } + public static io.grpc.ServerServiceDefinition bindService(AsyncService service) { + return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getAddDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_ADD_DEVICE))).addMethod(getConfigureDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_CONFIGURE_DEVICE))).addMethod(getDeleteDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_DELETE_DEVICE))).addMethod(getGetInitialConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_INITIAL_CONFIG))).addMethod(getMonitorDeviceKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_MONITOR_DEVICE_KPI))).build(); + } + private static abstract class DeviceServiceBaseDescriptorSupplier implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier { DeviceServiceBaseDescriptorSupplier() { diff --git a/src/policy/target/generated-sources/grpc/monitoring/Monitoring.java b/src/policy/target/generated-sources/grpc/monitoring/Monitoring.java index 4c80f4a06fe9c1d408fe41a05056c76612a9c61e..2f98ce3eb35a8ba9fda3a6d6bf4c17079c720bbe 100644 --- a/src/policy/target/generated-sources/grpc/monitoring/Monitoring.java +++ b/src/policy/target/generated-sources/grpc/monitoring/Monitoring.java @@ -211,160 +211,6 @@ public final class Monitoring { return new KpiDescriptor(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private KpiDescriptor(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - monitoring.Monitoring.KpiId.Builder subBuilder = null; - if (kpiId_ != null) { - subBuilder = kpiId_.toBuilder(); - } - kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(kpiId_); - kpiId_ = subBuilder.buildPartial(); - } - break; - } - case 18: - { - java.lang.String s = input.readStringRequireUtf8(); - kpiDescription_ = s; - break; - } - case 26: - { - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - kpiIdList_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; - } - kpiIdList_.add(input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry)); - break; - } - case 32: - { - int rawValue = input.readEnum(); - kpiSampleType_ = rawValue; - break; - } - case 42: - { - context.ContextOuterClass.DeviceId.Builder subBuilder = null; - if (deviceId_ != null) { - subBuilder = deviceId_.toBuilder(); - } - deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(deviceId_); - deviceId_ = subBuilder.buildPartial(); - } - break; - } - case 50: - { - context.ContextOuterClass.EndPointId.Builder subBuilder = null; - if (endpointId_ != null) { - subBuilder = endpointId_.toBuilder(); - } - endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(endpointId_); - endpointId_ = subBuilder.buildPartial(); - } - break; - } - case 58: - { - context.ContextOuterClass.ServiceId.Builder subBuilder = null; - if (serviceId_ != null) { - subBuilder = serviceId_.toBuilder(); - } - serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(serviceId_); - serviceId_ = subBuilder.buildPartial(); - } - break; - } - case 66: - { - context.ContextOuterClass.SliceId.Builder subBuilder = null; - if (sliceId_ != null) { - subBuilder = sliceId_.toBuilder(); - } - sliceId_ = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(sliceId_); - sliceId_ = subBuilder.buildPartial(); - } - break; - } - case 74: - { - context.ContextOuterClass.ConnectionId.Builder subBuilder = null; - if (connectionId_ != null) { - subBuilder = connectionId_.toBuilder(); - } - connectionId_ = input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(connectionId_); - connectionId_ = subBuilder.buildPartial(); - } - break; - } - case 82: - { - context.ContextOuterClass.LinkId.Builder subBuilder = null; - if (linkId_ != null) { - subBuilder = linkId_.toBuilder(); - } - linkId_ = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(linkId_); - linkId_ = subBuilder.buildPartial(); - } - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000001) != 0)) { - kpiIdList_ = java.util.Collections.unmodifiableList(kpiIdList_); - } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return monitoring.Monitoring.internal_static_monitoring_KpiDescriptor_descriptor; } @@ -401,12 +247,13 @@ public final class Monitoring { */ @java.lang.Override public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() { - return getKpiId(); + return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_; } public static final int KPI_DESCRIPTION_FIELD_NUMBER = 2; - private volatile java.lang.Object kpiDescription_; + @SuppressWarnings("serial") + private volatile java.lang.Object kpiDescription_ = ""; /** * string kpi_description = 2; @@ -443,6 +290,7 @@ public final class Monitoring { public static final int KPI_ID_LIST_FIELD_NUMBER = 3; + @SuppressWarnings("serial") private java.util.List kpiIdList_; /** @@ -487,7 +335,7 @@ public final class Monitoring { public static final int KPI_SAMPLE_TYPE_FIELD_NUMBER = 4; - private int kpiSampleType_; + private int kpiSampleType_ = 0; /** * .kpi_sample_types.KpiSampleType kpi_sample_type = 4; @@ -504,8 +352,7 @@ public final class Monitoring { */ @java.lang.Override public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleType() { - @SuppressWarnings("deprecation") - kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.valueOf(kpiSampleType_); + kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.forNumber(kpiSampleType_); return result == null ? kpi_sample_types.KpiSampleTypes.KpiSampleType.UNRECOGNIZED : result; } @@ -536,7 +383,7 @@ public final class Monitoring { */ @java.lang.Override public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() { - return getDeviceId(); + return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_; } public static final int ENDPOINT_ID_FIELD_NUMBER = 6; @@ -566,7 +413,7 @@ public final class Monitoring { */ @java.lang.Override public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() { - return getEndpointId(); + return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_; } public static final int SERVICE_ID_FIELD_NUMBER = 7; @@ -596,7 +443,7 @@ public final class Monitoring { */ @java.lang.Override public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() { - return getServiceId(); + return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_; } public static final int SLICE_ID_FIELD_NUMBER = 8; @@ -626,7 +473,7 @@ public final class Monitoring { */ @java.lang.Override public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() { - return getSliceId(); + return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_; } public static final int CONNECTION_ID_FIELD_NUMBER = 9; @@ -656,7 +503,7 @@ public final class Monitoring { */ @java.lang.Override public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() { - return getConnectionId(); + return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_; } public static final int LINK_ID_FIELD_NUMBER = 10; @@ -686,7 +533,7 @@ public final class Monitoring { */ @java.lang.Override public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() { - return getLinkId(); + return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_; } private byte memoizedIsInitialized = -1; @@ -707,7 +554,7 @@ public final class Monitoring { if (kpiId_ != null) { output.writeMessage(1, getKpiId()); } - if (!getKpiDescriptionBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(kpiDescription_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 2, kpiDescription_); } for (int i = 0; i < kpiIdList_.size(); i++) { @@ -734,7 +581,7 @@ public final class Monitoring { if (linkId_ != null) { output.writeMessage(10, getLinkId()); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -746,7 +593,7 @@ public final class Monitoring { if (kpiId_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getKpiId()); } - if (!getKpiDescriptionBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(kpiDescription_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, kpiDescription_); } for (int i = 0; i < kpiIdList_.size(); i++) { @@ -773,7 +620,7 @@ public final class Monitoring { if (linkId_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(10, getLinkId()); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -835,7 +682,7 @@ public final class Monitoring { if (!getLinkId().equals(other.getLinkId())) return false; } - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -883,7 +730,7 @@ public final class Monitoring { hash = (37 * hash) + LINK_ID_FIELD_NUMBER; hash = (53 * hash) + getLinkId().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -977,71 +824,58 @@ public final class Monitoring { // Construct using monitoring.Monitoring.KpiDescriptor.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - getKpiIdListFieldBuilder(); - } } @java.lang.Override public Builder clear() { super.clear(); - if (kpiIdBuilder_ == null) { - kpiId_ = null; - } else { - kpiId_ = null; + bitField0_ = 0; + kpiId_ = null; + if (kpiIdBuilder_ != null) { + kpiIdBuilder_.dispose(); kpiIdBuilder_ = null; } kpiDescription_ = ""; if (kpiIdListBuilder_ == null) { kpiIdList_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); } else { + kpiIdList_ = null; kpiIdListBuilder_.clear(); } + bitField0_ = (bitField0_ & ~0x00000004); kpiSampleType_ = 0; - if (deviceIdBuilder_ == null) { - deviceId_ = null; - } else { - deviceId_ = null; + deviceId_ = null; + if (deviceIdBuilder_ != null) { + deviceIdBuilder_.dispose(); deviceIdBuilder_ = null; } - if (endpointIdBuilder_ == null) { - endpointId_ = null; - } else { - endpointId_ = null; + endpointId_ = null; + if (endpointIdBuilder_ != null) { + endpointIdBuilder_.dispose(); endpointIdBuilder_ = null; } - if (serviceIdBuilder_ == null) { - serviceId_ = null; - } else { - serviceId_ = null; + serviceId_ = null; + if (serviceIdBuilder_ != null) { + serviceIdBuilder_.dispose(); serviceIdBuilder_ = null; } - if (sliceIdBuilder_ == null) { - sliceId_ = null; - } else { - sliceId_ = null; + sliceId_ = null; + if (sliceIdBuilder_ != null) { + sliceIdBuilder_.dispose(); sliceIdBuilder_ = null; } - if (connectionIdBuilder_ == null) { - connectionId_ = null; - } else { - connectionId_ = null; + connectionId_ = null; + if (connectionIdBuilder_ != null) { + connectionIdBuilder_.dispose(); connectionIdBuilder_ = null; } - if (linkIdBuilder_ == null) { - linkId_ = null; - } else { - linkId_ = null; + linkId_ = null; + if (linkIdBuilder_ != null) { + linkIdBuilder_.dispose(); linkIdBuilder_ = null; } return this; @@ -1069,85 +903,55 @@ public final class Monitoring { @java.lang.Override public monitoring.Monitoring.KpiDescriptor buildPartial() { monitoring.Monitoring.KpiDescriptor result = new monitoring.Monitoring.KpiDescriptor(this); - int from_bitField0_ = bitField0_; - if (kpiIdBuilder_ == null) { - result.kpiId_ = kpiId_; - } else { - result.kpiId_ = kpiIdBuilder_.build(); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); } - result.kpiDescription_ = kpiDescription_; + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(monitoring.Monitoring.KpiDescriptor result) { if (kpiIdListBuilder_ == null) { - if (((bitField0_ & 0x00000001) != 0)) { + if (((bitField0_ & 0x00000004) != 0)) { kpiIdList_ = java.util.Collections.unmodifiableList(kpiIdList_); - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); } result.kpiIdList_ = kpiIdList_; } else { result.kpiIdList_ = kpiIdListBuilder_.build(); } - result.kpiSampleType_ = kpiSampleType_; - if (deviceIdBuilder_ == null) { - result.deviceId_ = deviceId_; - } else { - result.deviceId_ = deviceIdBuilder_.build(); + } + + private void buildPartial0(monitoring.Monitoring.KpiDescriptor result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build(); } - if (endpointIdBuilder_ == null) { - result.endpointId_ = endpointId_; - } else { - result.endpointId_ = endpointIdBuilder_.build(); + if (((from_bitField0_ & 0x00000002) != 0)) { + result.kpiDescription_ = kpiDescription_; } - if (serviceIdBuilder_ == null) { - result.serviceId_ = serviceId_; - } else { - result.serviceId_ = serviceIdBuilder_.build(); + if (((from_bitField0_ & 0x00000008) != 0)) { + result.kpiSampleType_ = kpiSampleType_; } - if (sliceIdBuilder_ == null) { - result.sliceId_ = sliceId_; - } else { - result.sliceId_ = sliceIdBuilder_.build(); + if (((from_bitField0_ & 0x00000010) != 0)) { + result.deviceId_ = deviceIdBuilder_ == null ? deviceId_ : deviceIdBuilder_.build(); } - if (connectionIdBuilder_ == null) { - result.connectionId_ = connectionId_; - } else { - result.connectionId_ = connectionIdBuilder_.build(); + if (((from_bitField0_ & 0x00000020) != 0)) { + result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build(); } - if (linkIdBuilder_ == null) { - result.linkId_ = linkId_; - } else { - result.linkId_ = linkIdBuilder_.build(); + if (((from_bitField0_ & 0x00000040) != 0)) { + result.serviceId_ = serviceIdBuilder_ == null ? serviceId_ : serviceIdBuilder_.build(); + } + if (((from_bitField0_ & 0x00000080) != 0)) { + result.sliceId_ = sliceIdBuilder_ == null ? sliceId_ : sliceIdBuilder_.build(); + } + if (((from_bitField0_ & 0x00000100) != 0)) { + result.connectionId_ = connectionIdBuilder_ == null ? connectionId_ : connectionIdBuilder_.build(); + } + if (((from_bitField0_ & 0x00000200) != 0)) { + result.linkId_ = linkIdBuilder_ == null ? linkId_ : linkIdBuilder_.build(); } - onBuilt(); - return result; - } - - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); } @java.lang.Override @@ -1168,13 +972,14 @@ public final class Monitoring { } if (!other.getKpiDescription().isEmpty()) { kpiDescription_ = other.kpiDescription_; + bitField0_ |= 0x00000002; onChanged(); } if (kpiIdListBuilder_ == null) { if (!other.kpiIdList_.isEmpty()) { if (kpiIdList_.isEmpty()) { kpiIdList_ = other.kpiIdList_; - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); } else { ensureKpiIdListIsMutable(); kpiIdList_.addAll(other.kpiIdList_); @@ -1187,7 +992,7 @@ public final class Monitoring { kpiIdListBuilder_.dispose(); kpiIdListBuilder_ = null; kpiIdList_ = other.kpiIdList_; - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); kpiIdListBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getKpiIdListFieldBuilder() : null; } else { kpiIdListBuilder_.addAllMessages(other.kpiIdList_); @@ -1215,7 +1020,7 @@ public final class Monitoring { if (other.hasLinkId()) { mergeLinkId(other.getLinkId()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -1227,17 +1032,110 @@ public final class Monitoring { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - monitoring.Monitoring.KpiDescriptor parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 18: + { + kpiDescription_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } + // case 18 + case 26: + { + monitoring.Monitoring.KpiId m = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry); + if (kpiIdListBuilder_ == null) { + ensureKpiIdListIsMutable(); + kpiIdList_.add(m); + } else { + kpiIdListBuilder_.addMessage(m); + } + break; + } + // case 26 + case 32: + { + kpiSampleType_ = input.readEnum(); + bitField0_ |= 0x00000008; + break; + } + // case 32 + case 42: + { + input.readMessage(getDeviceIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000010; + break; + } + // case 42 + case 50: + { + input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000020; + break; + } + // case 50 + case 58: + { + input.readMessage(getServiceIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000040; + break; + } + // case 58 + case 66: + { + input.readMessage(getSliceIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000080; + break; + } + // case 66 + case 74: + { + input.readMessage(getConnectionIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000100; + break; + } + // case 74 + case 82: + { + input.readMessage(getLinkIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000200; + break; + } + // case 82 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (monitoring.Monitoring.KpiDescriptor) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } @@ -1252,7 +1150,7 @@ public final class Monitoring { * @return Whether the kpiId field is set. */ public boolean hasKpiId() { - return kpiIdBuilder_ != null || kpiId_ != null; + return ((bitField0_ & 0x00000001) != 0); } /** @@ -1276,10 +1174,11 @@ public final class Monitoring { throw new NullPointerException(); } kpiId_ = value; - onChanged(); } else { kpiIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -1289,10 +1188,11 @@ public final class Monitoring { public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) { if (kpiIdBuilder_ == null) { kpiId_ = builderForValue.build(); - onChanged(); } else { kpiIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -1301,15 +1201,16 @@ public final class Monitoring { */ public Builder mergeKpiId(monitoring.Monitoring.KpiId value) { if (kpiIdBuilder_ == null) { - if (kpiId_ != null) { - kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) { + getKpiIdBuilder().mergeFrom(value); } else { kpiId_ = value; } - onChanged(); } else { kpiIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -1317,13 +1218,13 @@ public final class Monitoring { * .monitoring.KpiId kpi_id = 1; */ public Builder clearKpiId() { - if (kpiIdBuilder_ == null) { - kpiId_ = null; - onChanged(); - } else { - kpiId_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + kpiId_ = null; + if (kpiIdBuilder_ != null) { + kpiIdBuilder_.dispose(); kpiIdBuilder_ = null; } + onChanged(); return this; } @@ -1331,6 +1232,7 @@ public final class Monitoring { * .monitoring.KpiId kpi_id = 1; */ public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() { + bitField0_ |= 0x00000001; onChanged(); return getKpiIdFieldBuilder().getBuilder(); } @@ -1400,6 +1302,7 @@ public final class Monitoring { throw new NullPointerException(); } kpiDescription_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -1410,6 +1313,7 @@ public final class Monitoring { */ public Builder clearKpiDescription() { kpiDescription_ = getDefaultInstance().getKpiDescription(); + bitField0_ = (bitField0_ & ~0x00000002); onChanged(); return this; } @@ -1425,6 +1329,7 @@ public final class Monitoring { } checkByteStringIsUtf8(value); kpiDescription_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -1432,9 +1337,9 @@ public final class Monitoring { private java.util.List kpiIdList_ = java.util.Collections.emptyList(); private void ensureKpiIdListIsMutable() { - if (!((bitField0_ & 0x00000001) != 0)) { + if (!((bitField0_ & 0x00000004) != 0)) { kpiIdList_ = new java.util.ArrayList(kpiIdList_); - bitField0_ |= 0x00000001; + bitField0_ |= 0x00000004; } } @@ -1586,7 +1491,7 @@ public final class Monitoring { public Builder clearKpiIdList() { if (kpiIdListBuilder_ == null) { kpiIdList_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); onChanged(); } else { kpiIdListBuilder_.clear(); @@ -1660,7 +1565,7 @@ public final class Monitoring { private com.google.protobuf.RepeatedFieldBuilderV3 getKpiIdListFieldBuilder() { if (kpiIdListBuilder_ == null) { - kpiIdListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(kpiIdList_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); + kpiIdListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(kpiIdList_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean()); kpiIdList_ = null; } return kpiIdListBuilder_; @@ -1684,6 +1589,7 @@ public final class Monitoring { */ public Builder setKpiSampleTypeValue(int value) { kpiSampleType_ = value; + bitField0_ |= 0x00000008; onChanged(); return this; } @@ -1694,8 +1600,7 @@ public final class Monitoring { */ @java.lang.Override public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleType() { - @SuppressWarnings("deprecation") - kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.valueOf(kpiSampleType_); + kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.forNumber(kpiSampleType_); return result == null ? kpi_sample_types.KpiSampleTypes.KpiSampleType.UNRECOGNIZED : result; } @@ -1708,6 +1613,7 @@ public final class Monitoring { if (value == null) { throw new NullPointerException(); } + bitField0_ |= 0x00000008; kpiSampleType_ = value.getNumber(); onChanged(); return this; @@ -1718,6 +1624,7 @@ public final class Monitoring { * @return This builder for chaining. */ public Builder clearKpiSampleType() { + bitField0_ = (bitField0_ & ~0x00000008); kpiSampleType_ = 0; onChanged(); return this; @@ -1732,7 +1639,7 @@ public final class Monitoring { * @return Whether the deviceId field is set. */ public boolean hasDeviceId() { - return deviceIdBuilder_ != null || deviceId_ != null; + return ((bitField0_ & 0x00000010) != 0); } /** @@ -1756,10 +1663,11 @@ public final class Monitoring { throw new NullPointerException(); } deviceId_ = value; - onChanged(); } else { deviceIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000010; + onChanged(); return this; } @@ -1769,10 +1677,11 @@ public final class Monitoring { public Builder setDeviceId(context.ContextOuterClass.DeviceId.Builder builderForValue) { if (deviceIdBuilder_ == null) { deviceId_ = builderForValue.build(); - onChanged(); } else { deviceIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000010; + onChanged(); return this; } @@ -1781,15 +1690,16 @@ public final class Monitoring { */ public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) { if (deviceIdBuilder_ == null) { - if (deviceId_ != null) { - deviceId_ = context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000010) != 0) && deviceId_ != null && deviceId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) { + getDeviceIdBuilder().mergeFrom(value); } else { deviceId_ = value; } - onChanged(); } else { deviceIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000010; + onChanged(); return this; } @@ -1797,13 +1707,13 @@ public final class Monitoring { * .context.DeviceId device_id = 5; */ public Builder clearDeviceId() { - if (deviceIdBuilder_ == null) { - deviceId_ = null; - onChanged(); - } else { - deviceId_ = null; + bitField0_ = (bitField0_ & ~0x00000010); + deviceId_ = null; + if (deviceIdBuilder_ != null) { + deviceIdBuilder_.dispose(); deviceIdBuilder_ = null; } + onChanged(); return this; } @@ -1811,6 +1721,7 @@ public final class Monitoring { * .context.DeviceId device_id = 5; */ public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() { + bitField0_ |= 0x00000010; onChanged(); return getDeviceIdFieldBuilder().getBuilder(); } @@ -1846,7 +1757,7 @@ public final class Monitoring { * @return Whether the endpointId field is set. */ public boolean hasEndpointId() { - return endpointIdBuilder_ != null || endpointId_ != null; + return ((bitField0_ & 0x00000020) != 0); } /** @@ -1870,10 +1781,11 @@ public final class Monitoring { throw new NullPointerException(); } endpointId_ = value; - onChanged(); } else { endpointIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000020; + onChanged(); return this; } @@ -1883,10 +1795,11 @@ public final class Monitoring { public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) { if (endpointIdBuilder_ == null) { endpointId_ = builderForValue.build(); - onChanged(); } else { endpointIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000020; + onChanged(); return this; } @@ -1895,15 +1808,16 @@ public final class Monitoring { */ public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) { if (endpointIdBuilder_ == null) { - if (endpointId_ != null) { - endpointId_ = context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000020) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) { + getEndpointIdBuilder().mergeFrom(value); } else { endpointId_ = value; } - onChanged(); } else { endpointIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000020; + onChanged(); return this; } @@ -1911,13 +1825,13 @@ public final class Monitoring { * .context.EndPointId endpoint_id = 6; */ public Builder clearEndpointId() { - if (endpointIdBuilder_ == null) { - endpointId_ = null; - onChanged(); - } else { - endpointId_ = null; + bitField0_ = (bitField0_ & ~0x00000020); + endpointId_ = null; + if (endpointIdBuilder_ != null) { + endpointIdBuilder_.dispose(); endpointIdBuilder_ = null; } + onChanged(); return this; } @@ -1925,6 +1839,7 @@ public final class Monitoring { * .context.EndPointId endpoint_id = 6; */ public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() { + bitField0_ |= 0x00000020; onChanged(); return getEndpointIdFieldBuilder().getBuilder(); } @@ -1960,7 +1875,7 @@ public final class Monitoring { * @return Whether the serviceId field is set. */ public boolean hasServiceId() { - return serviceIdBuilder_ != null || serviceId_ != null; + return ((bitField0_ & 0x00000040) != 0); } /** @@ -1984,10 +1899,11 @@ public final class Monitoring { throw new NullPointerException(); } serviceId_ = value; - onChanged(); } else { serviceIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000040; + onChanged(); return this; } @@ -1997,10 +1913,11 @@ public final class Monitoring { public Builder setServiceId(context.ContextOuterClass.ServiceId.Builder builderForValue) { if (serviceIdBuilder_ == null) { serviceId_ = builderForValue.build(); - onChanged(); } else { serviceIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000040; + onChanged(); return this; } @@ -2009,15 +1926,16 @@ public final class Monitoring { */ public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) { if (serviceIdBuilder_ == null) { - if (serviceId_ != null) { - serviceId_ = context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000040) != 0) && serviceId_ != null && serviceId_ != context.ContextOuterClass.ServiceId.getDefaultInstance()) { + getServiceIdBuilder().mergeFrom(value); } else { serviceId_ = value; } - onChanged(); } else { serviceIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000040; + onChanged(); return this; } @@ -2025,13 +1943,13 @@ public final class Monitoring { * .context.ServiceId service_id = 7; */ public Builder clearServiceId() { - if (serviceIdBuilder_ == null) { - serviceId_ = null; - onChanged(); - } else { - serviceId_ = null; + bitField0_ = (bitField0_ & ~0x00000040); + serviceId_ = null; + if (serviceIdBuilder_ != null) { + serviceIdBuilder_.dispose(); serviceIdBuilder_ = null; } + onChanged(); return this; } @@ -2039,6 +1957,7 @@ public final class Monitoring { * .context.ServiceId service_id = 7; */ public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() { + bitField0_ |= 0x00000040; onChanged(); return getServiceIdFieldBuilder().getBuilder(); } @@ -2074,7 +1993,7 @@ public final class Monitoring { * @return Whether the sliceId field is set. */ public boolean hasSliceId() { - return sliceIdBuilder_ != null || sliceId_ != null; + return ((bitField0_ & 0x00000080) != 0); } /** @@ -2098,10 +2017,11 @@ public final class Monitoring { throw new NullPointerException(); } sliceId_ = value; - onChanged(); } else { sliceIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000080; + onChanged(); return this; } @@ -2111,10 +2031,11 @@ public final class Monitoring { public Builder setSliceId(context.ContextOuterClass.SliceId.Builder builderForValue) { if (sliceIdBuilder_ == null) { sliceId_ = builderForValue.build(); - onChanged(); } else { sliceIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000080; + onChanged(); return this; } @@ -2123,15 +2044,16 @@ public final class Monitoring { */ public Builder mergeSliceId(context.ContextOuterClass.SliceId value) { if (sliceIdBuilder_ == null) { - if (sliceId_ != null) { - sliceId_ = context.ContextOuterClass.SliceId.newBuilder(sliceId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000080) != 0) && sliceId_ != null && sliceId_ != context.ContextOuterClass.SliceId.getDefaultInstance()) { + getSliceIdBuilder().mergeFrom(value); } else { sliceId_ = value; } - onChanged(); } else { sliceIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000080; + onChanged(); return this; } @@ -2139,13 +2061,13 @@ public final class Monitoring { * .context.SliceId slice_id = 8; */ public Builder clearSliceId() { - if (sliceIdBuilder_ == null) { - sliceId_ = null; - onChanged(); - } else { - sliceId_ = null; + bitField0_ = (bitField0_ & ~0x00000080); + sliceId_ = null; + if (sliceIdBuilder_ != null) { + sliceIdBuilder_.dispose(); sliceIdBuilder_ = null; } + onChanged(); return this; } @@ -2153,6 +2075,7 @@ public final class Monitoring { * .context.SliceId slice_id = 8; */ public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() { + bitField0_ |= 0x00000080; onChanged(); return getSliceIdFieldBuilder().getBuilder(); } @@ -2188,7 +2111,7 @@ public final class Monitoring { * @return Whether the connectionId field is set. */ public boolean hasConnectionId() { - return connectionIdBuilder_ != null || connectionId_ != null; + return ((bitField0_ & 0x00000100) != 0); } /** @@ -2212,10 +2135,11 @@ public final class Monitoring { throw new NullPointerException(); } connectionId_ = value; - onChanged(); } else { connectionIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000100; + onChanged(); return this; } @@ -2225,10 +2149,11 @@ public final class Monitoring { public Builder setConnectionId(context.ContextOuterClass.ConnectionId.Builder builderForValue) { if (connectionIdBuilder_ == null) { connectionId_ = builderForValue.build(); - onChanged(); } else { connectionIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000100; + onChanged(); return this; } @@ -2237,15 +2162,16 @@ public final class Monitoring { */ public Builder mergeConnectionId(context.ContextOuterClass.ConnectionId value) { if (connectionIdBuilder_ == null) { - if (connectionId_ != null) { - connectionId_ = context.ContextOuterClass.ConnectionId.newBuilder(connectionId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000100) != 0) && connectionId_ != null && connectionId_ != context.ContextOuterClass.ConnectionId.getDefaultInstance()) { + getConnectionIdBuilder().mergeFrom(value); } else { connectionId_ = value; } - onChanged(); } else { connectionIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000100; + onChanged(); return this; } @@ -2253,13 +2179,13 @@ public final class Monitoring { * .context.ConnectionId connection_id = 9; */ public Builder clearConnectionId() { - if (connectionIdBuilder_ == null) { - connectionId_ = null; - onChanged(); - } else { - connectionId_ = null; + bitField0_ = (bitField0_ & ~0x00000100); + connectionId_ = null; + if (connectionIdBuilder_ != null) { + connectionIdBuilder_.dispose(); connectionIdBuilder_ = null; } + onChanged(); return this; } @@ -2267,6 +2193,7 @@ public final class Monitoring { * .context.ConnectionId connection_id = 9; */ public context.ContextOuterClass.ConnectionId.Builder getConnectionIdBuilder() { + bitField0_ |= 0x00000100; onChanged(); return getConnectionIdFieldBuilder().getBuilder(); } @@ -2302,7 +2229,7 @@ public final class Monitoring { * @return Whether the linkId field is set. */ public boolean hasLinkId() { - return linkIdBuilder_ != null || linkId_ != null; + return ((bitField0_ & 0x00000200) != 0); } /** @@ -2326,10 +2253,11 @@ public final class Monitoring { throw new NullPointerException(); } linkId_ = value; - onChanged(); } else { linkIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000200; + onChanged(); return this; } @@ -2339,10 +2267,11 @@ public final class Monitoring { public Builder setLinkId(context.ContextOuterClass.LinkId.Builder builderForValue) { if (linkIdBuilder_ == null) { linkId_ = builderForValue.build(); - onChanged(); } else { linkIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000200; + onChanged(); return this; } @@ -2351,15 +2280,16 @@ public final class Monitoring { */ public Builder mergeLinkId(context.ContextOuterClass.LinkId value) { if (linkIdBuilder_ == null) { - if (linkId_ != null) { - linkId_ = context.ContextOuterClass.LinkId.newBuilder(linkId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000200) != 0) && linkId_ != null && linkId_ != context.ContextOuterClass.LinkId.getDefaultInstance()) { + getLinkIdBuilder().mergeFrom(value); } else { linkId_ = value; } - onChanged(); } else { linkIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000200; + onChanged(); return this; } @@ -2367,13 +2297,13 @@ public final class Monitoring { * .context.LinkId link_id = 10; */ public Builder clearLinkId() { - if (linkIdBuilder_ == null) { - linkId_ = null; - onChanged(); - } else { - linkId_ = null; + bitField0_ = (bitField0_ & ~0x00000200); + linkId_ = null; + if (linkIdBuilder_ != null) { + linkIdBuilder_.dispose(); linkIdBuilder_ = null; } + onChanged(); return this; } @@ -2381,6 +2311,7 @@ public final class Monitoring { * .context.LinkId link_id = 10; */ public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() { + bitField0_ |= 0x00000200; onChanged(); return getLinkIdFieldBuilder().getBuilder(); } @@ -2434,7 +2365,17 @@ public final class Monitoring { @java.lang.Override public KpiDescriptor parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new KpiDescriptor(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -2512,74 +2453,13 @@ public final class Monitoring { return new MonitorKpiRequest(); } + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_descriptor; + } + @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private MonitorKpiRequest(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - monitoring.Monitoring.KpiId.Builder subBuilder = null; - if (kpiId_ != null) { - subBuilder = kpiId_.toBuilder(); - } - kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(kpiId_); - kpiId_ = subBuilder.buildPartial(); - } - break; - } - case 21: - { - monitoringWindowS_ = input.readFloat(); - break; - } - case 29: - { - samplingRateS_ = input.readFloat(); - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_descriptor; - } - - @java.lang.Override - protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.MonitorKpiRequest.class, monitoring.Monitoring.MonitorKpiRequest.Builder.class); + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { + return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.MonitorKpiRequest.class, monitoring.Monitoring.MonitorKpiRequest.Builder.class); } public static final int KPI_ID_FIELD_NUMBER = 1; @@ -2609,12 +2489,12 @@ public final class Monitoring { */ @java.lang.Override public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() { - return getKpiId(); + return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_; } public static final int MONITORING_WINDOW_S_FIELD_NUMBER = 2; - private float monitoringWindowS_; + private float monitoringWindowS_ = 0F; /** * float monitoring_window_s = 2; @@ -2627,7 +2507,7 @@ public final class Monitoring { public static final int SAMPLING_RATE_S_FIELD_NUMBER = 3; - private float samplingRateS_; + private float samplingRateS_ = 0F; /** *
@@ -2660,13 +2540,13 @@ public final class Monitoring {
             if (kpiId_ != null) {
                 output.writeMessage(1, getKpiId());
             }
-            if (monitoringWindowS_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(monitoringWindowS_) != 0) {
                 output.writeFloat(2, monitoringWindowS_);
             }
-            if (samplingRateS_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(samplingRateS_) != 0) {
                 output.writeFloat(3, samplingRateS_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -2678,13 +2558,13 @@ public final class Monitoring {
             if (kpiId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getKpiId());
             }
-            if (monitoringWindowS_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(monitoringWindowS_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, monitoringWindowS_);
             }
-            if (samplingRateS_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(samplingRateS_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(3, samplingRateS_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -2708,7 +2588,7 @@ public final class Monitoring {
                 return false;
             if (java.lang.Float.floatToIntBits(getSamplingRateS()) != java.lang.Float.floatToIntBits(other.getSamplingRateS()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -2728,7 +2608,7 @@ public final class Monitoring {
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getMonitoringWindowS());
             hash = (37 * hash) + SAMPLING_RATE_S_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getSamplingRateS());
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -2822,26 +2702,19 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.MonitorKpiRequest.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (kpiIdBuilder_ == null) {
-                    kpiId_ = null;
-                } else {
-                    kpiId_ = null;
+                bitField0_ = 0;
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
                     kpiIdBuilder_ = null;
                 }
                 monitoringWindowS_ = 0F;
@@ -2871,45 +2744,24 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.MonitorKpiRequest buildPartial() {
                 monitoring.Monitoring.MonitorKpiRequest result = new monitoring.Monitoring.MonitorKpiRequest(this);
-                if (kpiIdBuilder_ == null) {
-                    result.kpiId_ = kpiId_;
-                } else {
-                    result.kpiId_ = kpiIdBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.monitoringWindowS_ = monitoringWindowS_;
-                result.samplingRateS_ = samplingRateS_;
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.MonitorKpiRequest result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.monitoringWindowS_ = monitoringWindowS_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.samplingRateS_ = samplingRateS_;
+                }
             }
 
             @java.lang.Override
@@ -2934,7 +2786,7 @@ public final class Monitoring {
                 if (other.getSamplingRateS() != 0F) {
                     setSamplingRateS(other.getSamplingRateS());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -2946,20 +2798,61 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.MonitorKpiRequest parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 21:
+                                {
+                                    monitoringWindowS_ = input.readFloat();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 21
+                            case 29:
+                                {
+                                    samplingRateS_ = input.readFloat();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 29
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.MonitorKpiRequest) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private monitoring.Monitoring.KpiId kpiId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 kpiIdBuilder_;
@@ -2969,7 +2862,7 @@ public final class Monitoring {
              * @return Whether the kpiId field is set.
              */
             public boolean hasKpiId() {
-                return kpiIdBuilder_ != null || kpiId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -2993,10 +2886,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiId_ = value;
-                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -3006,10 +2900,11 @@ public final class Monitoring {
             public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
                 if (kpiIdBuilder_ == null) {
                     kpiId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -3018,15 +2913,16 @@ public final class Monitoring {
              */
             public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
                 if (kpiIdBuilder_ == null) {
-                    if (kpiId_ != null) {
-                        kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
+                        getKpiIdBuilder().mergeFrom(value);
                     } else {
                         kpiId_ = value;
                     }
-                    onChanged();
                 } else {
                     kpiIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -3034,13 +2930,13 @@ public final class Monitoring {
              * .monitoring.KpiId kpi_id = 1;
              */
             public Builder clearKpiId() {
-                if (kpiIdBuilder_ == null) {
-                    kpiId_ = null;
-                    onChanged();
-                } else {
-                    kpiId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
                     kpiIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -3048,6 +2944,7 @@ public final class Monitoring {
              * .monitoring.KpiId kpi_id = 1;
              */
             public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getKpiIdFieldBuilder().getBuilder();
             }
@@ -3092,6 +2989,7 @@ public final class Monitoring {
              */
             public Builder setMonitoringWindowS(float value) {
                 monitoringWindowS_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -3101,6 +2999,7 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearMonitoringWindowS() {
+                bitField0_ = (bitField0_ & ~0x00000002);
                 monitoringWindowS_ = 0F;
                 onChanged();
                 return this;
@@ -3132,6 +3031,7 @@ public final class Monitoring {
              */
             public Builder setSamplingRateS(float value) {
                 samplingRateS_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -3145,6 +3045,7 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearSamplingRateS() {
+                bitField0_ = (bitField0_ & ~0x00000004);
                 samplingRateS_ = 0F;
                 onChanged();
                 return this;
@@ -3177,7 +3078,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public MonitorKpiRequest parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new MonitorKpiRequest(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -3322,93 +3233,6 @@ public final class Monitoring {
             return new KpiQuery();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private KpiQuery(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    kpiIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                kpiIds_.add(input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry));
-                                break;
-                            }
-                        case 21:
-                            {
-                                monitoringWindowS_ = input.readFloat();
-                                break;
-                            }
-                        case 24:
-                            {
-                                lastNSamples_ = input.readUInt32();
-                                break;
-                            }
-                        case 34:
-                            {
-                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-                                if (startTimestamp_ != null) {
-                                    subBuilder = startTimestamp_.toBuilder();
-                                }
-                                startTimestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(startTimestamp_);
-                                    startTimestamp_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 42:
-                            {
-                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-                                if (endTimestamp_ != null) {
-                                    subBuilder = endTimestamp_.toBuilder();
-                                }
-                                endTimestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(endTimestamp_);
-                                    endTimestamp_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    kpiIds_ = java.util.Collections.unmodifiableList(kpiIds_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_KpiQuery_descriptor;
         }
@@ -3420,6 +3244,7 @@ public final class Monitoring {
 
         public static final int KPI_IDS_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List kpiIds_;
 
         /**
@@ -3464,7 +3289,7 @@ public final class Monitoring {
 
         public static final int MONITORING_WINDOW_S_FIELD_NUMBER = 2;
 
-        private float monitoringWindowS_;
+        private float monitoringWindowS_ = 0F;
 
         /**
          * float monitoring_window_s = 2;
@@ -3477,7 +3302,7 @@ public final class Monitoring {
 
         public static final int LAST_N_SAMPLES_FIELD_NUMBER = 3;
 
-        private int lastNSamples_;
+        private int lastNSamples_ = 0;
 
         /**
          * 
@@ -3531,7 +3356,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder() {
-            return getStartTimestamp();
+            return startTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
         }
 
         public static final int END_TIMESTAMP_FIELD_NUMBER = 5;
@@ -3573,7 +3398,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder() {
-            return getEndTimestamp();
+            return endTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -3594,7 +3419,7 @@ public final class Monitoring {
             for (int i = 0; i < kpiIds_.size(); i++) {
                 output.writeMessage(1, kpiIds_.get(i));
             }
-            if (monitoringWindowS_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(monitoringWindowS_) != 0) {
                 output.writeFloat(2, monitoringWindowS_);
             }
             if (lastNSamples_ != 0) {
@@ -3606,7 +3431,7 @@ public final class Monitoring {
             if (endTimestamp_ != null) {
                 output.writeMessage(5, getEndTimestamp());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -3618,7 +3443,7 @@ public final class Monitoring {
             for (int i = 0; i < kpiIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, kpiIds_.get(i));
             }
-            if (monitoringWindowS_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(monitoringWindowS_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, monitoringWindowS_);
             }
             if (lastNSamples_ != 0) {
@@ -3630,7 +3455,7 @@ public final class Monitoring {
             if (endTimestamp_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, getEndTimestamp());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -3662,7 +3487,7 @@ public final class Monitoring {
                 if (!getEndTimestamp().equals(other.getEndTimestamp()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -3690,7 +3515,7 @@ public final class Monitoring {
                 hash = (37 * hash) + END_TIMESTAMP_FIELD_NUMBER;
                 hash = (53 * hash) + getEndTimestamp().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -3784,41 +3609,33 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.KpiQuery.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getKpiIdsFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (kpiIdsBuilder_ == null) {
                     kpiIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    kpiIds_ = null;
                     kpiIdsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 monitoringWindowS_ = 0F;
                 lastNSamples_ = 0;
-                if (startTimestampBuilder_ == null) {
-                    startTimestamp_ = null;
-                } else {
-                    startTimestamp_ = null;
+                startTimestamp_ = null;
+                if (startTimestampBuilder_ != null) {
+                    startTimestampBuilder_.dispose();
                     startTimestampBuilder_ = null;
                 }
-                if (endTimestampBuilder_ == null) {
-                    endTimestamp_ = null;
-                } else {
-                    endTimestamp_ = null;
+                endTimestamp_ = null;
+                if (endTimestampBuilder_ != null) {
+                    endTimestampBuilder_.dispose();
                     endTimestampBuilder_ = null;
                 }
                 return this;
@@ -3846,7 +3663,15 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.KpiQuery buildPartial() {
                 monitoring.Monitoring.KpiQuery result = new monitoring.Monitoring.KpiQuery(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(monitoring.Monitoring.KpiQuery result) {
                 if (kpiIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         kpiIds_ = java.util.Collections.unmodifiableList(kpiIds_);
@@ -3856,50 +3681,22 @@ public final class Monitoring {
                 } else {
                     result.kpiIds_ = kpiIdsBuilder_.build();
                 }
-                result.monitoringWindowS_ = monitoringWindowS_;
-                result.lastNSamples_ = lastNSamples_;
-                if (startTimestampBuilder_ == null) {
-                    result.startTimestamp_ = startTimestamp_;
-                } else {
-                    result.startTimestamp_ = startTimestampBuilder_.build();
-                }
-                if (endTimestampBuilder_ == null) {
-                    result.endTimestamp_ = endTimestamp_;
-                } else {
-                    result.endTimestamp_ = endTimestampBuilder_.build();
-                }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
             }
 
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.KpiQuery result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.monitoringWindowS_ = monitoringWindowS_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.lastNSamples_ = lastNSamples_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.startTimestamp_ = startTimestampBuilder_ == null ? startTimestamp_ : startTimestampBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.endTimestamp_ = endTimestampBuilder_ == null ? endTimestamp_ : endTimestampBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -3951,7 +3748,7 @@ public final class Monitoring {
                 if (other.hasEndTimestamp()) {
                     mergeEndTimestamp(other.getEndTimestamp());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -3963,17 +3760,75 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.KpiQuery parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    monitoring.Monitoring.KpiId m = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
+                                    if (kpiIdsBuilder_ == null) {
+                                        ensureKpiIdsIsMutable();
+                                        kpiIds_.add(m);
+                                    } else {
+                                        kpiIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            case 21:
+                                {
+                                    monitoringWindowS_ = input.readFloat();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 21
+                            case 24:
+                                {
+                                    lastNSamples_ = input.readUInt32();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            case 34:
+                                {
+                                    input.readMessage(getStartTimestampFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 34
+                            case 42:
+                                {
+                                    input.readMessage(getEndTimestampFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 42
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.KpiQuery) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -4234,6 +4089,7 @@ public final class Monitoring {
              */
             public Builder setMonitoringWindowS(float value) {
                 monitoringWindowS_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -4243,6 +4099,7 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearMonitoringWindowS() {
+                bitField0_ = (bitField0_ & ~0x00000002);
                 monitoringWindowS_ = 0F;
                 onChanged();
                 return this;
@@ -4274,6 +4131,7 @@ public final class Monitoring {
              */
             public Builder setLastNSamples(int value) {
                 lastNSamples_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -4287,6 +4145,7 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearLastNSamples() {
+                bitField0_ = (bitField0_ & ~0x00000004);
                 lastNSamples_ = 0;
                 onChanged();
                 return this;
@@ -4305,7 +4164,7 @@ public final class Monitoring {
              * @return Whether the startTimestamp field is set.
              */
             public boolean hasStartTimestamp() {
-                return startTimestampBuilder_ != null || startTimestamp_ != null;
+                return ((bitField0_ & 0x00000008) != 0);
             }
 
             /**
@@ -4337,10 +4196,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     startTimestamp_ = value;
-                    onChanged();
                 } else {
                     startTimestampBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000008;
+                onChanged();
                 return this;
             }
 
@@ -4354,10 +4214,11 @@ public final class Monitoring {
             public Builder setStartTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (startTimestampBuilder_ == null) {
                     startTimestamp_ = builderForValue.build();
-                    onChanged();
                 } else {
                     startTimestampBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000008;
+                onChanged();
                 return this;
             }
 
@@ -4370,15 +4231,16 @@ public final class Monitoring {
              */
             public Builder mergeStartTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (startTimestampBuilder_ == null) {
-                    if (startTimestamp_ != null) {
-                        startTimestamp_ = context.ContextOuterClass.Timestamp.newBuilder(startTimestamp_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000008) != 0) && startTimestamp_ != null && startTimestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
+                        getStartTimestampBuilder().mergeFrom(value);
                     } else {
                         startTimestamp_ = value;
                     }
-                    onChanged();
                 } else {
                     startTimestampBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000008;
+                onChanged();
                 return this;
             }
 
@@ -4390,13 +4252,13 @@ public final class Monitoring {
              * .context.Timestamp start_timestamp = 4;
              */
             public Builder clearStartTimestamp() {
-                if (startTimestampBuilder_ == null) {
-                    startTimestamp_ = null;
-                    onChanged();
-                } else {
-                    startTimestamp_ = null;
+                bitField0_ = (bitField0_ & ~0x00000008);
+                startTimestamp_ = null;
+                if (startTimestampBuilder_ != null) {
+                    startTimestampBuilder_.dispose();
                     startTimestampBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -4408,6 +4270,7 @@ public final class Monitoring {
              * .context.Timestamp start_timestamp = 4;
              */
             public context.ContextOuterClass.Timestamp.Builder getStartTimestampBuilder() {
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return getStartTimestampFieldBuilder().getBuilder();
             }
@@ -4455,7 +4318,7 @@ public final class Monitoring {
              * @return Whether the endTimestamp field is set.
              */
             public boolean hasEndTimestamp() {
-                return endTimestampBuilder_ != null || endTimestamp_ != null;
+                return ((bitField0_ & 0x00000010) != 0);
             }
 
             /**
@@ -4487,10 +4350,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     endTimestamp_ = value;
-                    onChanged();
                 } else {
                     endTimestampBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -4504,10 +4368,11 @@ public final class Monitoring {
             public Builder setEndTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (endTimestampBuilder_ == null) {
                     endTimestamp_ = builderForValue.build();
-                    onChanged();
                 } else {
                     endTimestampBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -4520,15 +4385,16 @@ public final class Monitoring {
              */
             public Builder mergeEndTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (endTimestampBuilder_ == null) {
-                    if (endTimestamp_ != null) {
-                        endTimestamp_ = context.ContextOuterClass.Timestamp.newBuilder(endTimestamp_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000010) != 0) && endTimestamp_ != null && endTimestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
+                        getEndTimestampBuilder().mergeFrom(value);
                     } else {
                         endTimestamp_ = value;
                     }
-                    onChanged();
                 } else {
                     endTimestampBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -4540,13 +4406,13 @@ public final class Monitoring {
              * .context.Timestamp end_timestamp = 5;
              */
             public Builder clearEndTimestamp() {
-                if (endTimestampBuilder_ == null) {
-                    endTimestamp_ = null;
-                    onChanged();
-                } else {
-                    endTimestamp_ = null;
+                bitField0_ = (bitField0_ & ~0x00000010);
+                endTimestamp_ = null;
+                if (endTimestampBuilder_ != null) {
+                    endTimestampBuilder_.dispose();
                     endTimestampBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -4558,6 +4424,7 @@ public final class Monitoring {
              * .context.Timestamp end_timestamp = 5;
              */
             public context.ContextOuterClass.Timestamp.Builder getEndTimestampBuilder() {
+                bitField0_ |= 0x00000010;
                 onChanged();
                 return getEndTimestampFieldBuilder().getBuilder();
             }
@@ -4619,7 +4486,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public KpiQuery parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new KpiQuery(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -4702,70 +4579,6 @@ public final class Monitoring {
             return new RawKpi();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private RawKpi(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-                                if (timestamp_ != null) {
-                                    subBuilder = timestamp_.toBuilder();
-                                }
-                                timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(timestamp_);
-                                    timestamp_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                monitoring.Monitoring.KpiValue.Builder subBuilder = null;
-                                if (kpiValue_ != null) {
-                                    subBuilder = kpiValue_.toBuilder();
-                                }
-                                kpiValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(kpiValue_);
-                                    kpiValue_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_RawKpi_descriptor;
         }
@@ -4802,7 +4615,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-            return getTimestamp();
+            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
         }
 
         public static final int KPI_VALUE_FIELD_NUMBER = 2;
@@ -4832,7 +4645,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() {
-            return getKpiValue();
+            return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -4856,7 +4669,7 @@ public final class Monitoring {
             if (kpiValue_ != null) {
                 output.writeMessage(2, getKpiValue());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -4871,7 +4684,7 @@ public final class Monitoring {
             if (kpiValue_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getKpiValue());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -4897,7 +4710,7 @@ public final class Monitoring {
                 if (!getKpiValue().equals(other.getKpiValue()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -4917,7 +4730,7 @@ public final class Monitoring {
                 hash = (37 * hash) + KPI_VALUE_FIELD_NUMBER;
                 hash = (53 * hash) + getKpiValue().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -5015,32 +4828,24 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.RawKpi.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (timestampBuilder_ == null) {
-                    timestamp_ = null;
-                } else {
-                    timestamp_ = null;
+                bitField0_ = 0;
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
                     timestampBuilder_ = null;
                 }
-                if (kpiValueBuilder_ == null) {
-                    kpiValue_ = null;
-                } else {
-                    kpiValue_ = null;
+                kpiValue_ = null;
+                if (kpiValueBuilder_ != null) {
+                    kpiValueBuilder_.dispose();
                     kpiValueBuilder_ = null;
                 }
                 return this;
@@ -5068,48 +4873,21 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.RawKpi buildPartial() {
                 monitoring.Monitoring.RawKpi result = new monitoring.Monitoring.RawKpi(this);
-                if (timestampBuilder_ == null) {
-                    result.timestamp_ = timestamp_;
-                } else {
-                    result.timestamp_ = timestampBuilder_.build();
-                }
-                if (kpiValueBuilder_ == null) {
-                    result.kpiValue_ = kpiValue_;
-                } else {
-                    result.kpiValue_ = kpiValueBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.RawKpi result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.kpiValue_ = kpiValueBuilder_ == null ? kpiValue_ : kpiValueBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -5131,7 +4909,7 @@ public final class Monitoring {
                 if (other.hasKpiValue()) {
                     mergeKpiValue(other.getKpiValue());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -5143,20 +4921,54 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.RawKpi parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.RawKpi) e.getUnfinishedMessage();
-                    throw e.unwrapIOException();
-                } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getKpiValueFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
                     }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.Timestamp timestamp_;
 
             private com.google.protobuf.SingleFieldBuilderV3 timestampBuilder_;
@@ -5166,7 +4978,7 @@ public final class Monitoring {
              * @return Whether the timestamp field is set.
              */
             public boolean hasTimestamp() {
-                return timestampBuilder_ != null || timestamp_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -5190,10 +5002,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     timestamp_ = value;
-                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -5203,10 +5016,11 @@ public final class Monitoring {
             public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (timestampBuilder_ == null) {
                     timestamp_ = builderForValue.build();
-                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -5215,15 +5029,16 @@ public final class Monitoring {
              */
             public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (timestampBuilder_ == null) {
-                    if (timestamp_ != null) {
-                        timestamp_ = context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
+                        getTimestampBuilder().mergeFrom(value);
                     } else {
                         timestamp_ = value;
                     }
-                    onChanged();
                 } else {
                     timestampBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -5231,13 +5046,13 @@ public final class Monitoring {
              * .context.Timestamp timestamp = 1;
              */
             public Builder clearTimestamp() {
-                if (timestampBuilder_ == null) {
-                    timestamp_ = null;
-                    onChanged();
-                } else {
-                    timestamp_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
                     timestampBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -5245,6 +5060,7 @@ public final class Monitoring {
              * .context.Timestamp timestamp = 1;
              */
             public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getTimestampFieldBuilder().getBuilder();
             }
@@ -5280,7 +5096,7 @@ public final class Monitoring {
              * @return Whether the kpiValue field is set.
              */
             public boolean hasKpiValue() {
-                return kpiValueBuilder_ != null || kpiValue_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -5304,10 +5120,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiValue_ = value;
-                    onChanged();
                 } else {
                     kpiValueBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -5317,10 +5134,11 @@ public final class Monitoring {
             public Builder setKpiValue(monitoring.Monitoring.KpiValue.Builder builderForValue) {
                 if (kpiValueBuilder_ == null) {
                     kpiValue_ = builderForValue.build();
-                    onChanged();
                 } else {
                     kpiValueBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -5329,15 +5147,16 @@ public final class Monitoring {
              */
             public Builder mergeKpiValue(monitoring.Monitoring.KpiValue value) {
                 if (kpiValueBuilder_ == null) {
-                    if (kpiValue_ != null) {
-                        kpiValue_ = monitoring.Monitoring.KpiValue.newBuilder(kpiValue_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && kpiValue_ != null && kpiValue_ != monitoring.Monitoring.KpiValue.getDefaultInstance()) {
+                        getKpiValueBuilder().mergeFrom(value);
                     } else {
                         kpiValue_ = value;
                     }
-                    onChanged();
                 } else {
                     kpiValueBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -5345,13 +5164,13 @@ public final class Monitoring {
              * .monitoring.KpiValue kpi_value = 2;
              */
             public Builder clearKpiValue() {
-                if (kpiValueBuilder_ == null) {
-                    kpiValue_ = null;
-                    onChanged();
-                } else {
-                    kpiValue_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                kpiValue_ = null;
+                if (kpiValueBuilder_ != null) {
+                    kpiValueBuilder_.dispose();
                     kpiValueBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -5359,6 +5178,7 @@ public final class Monitoring {
              * .monitoring.KpiValue kpi_value = 2;
              */
             public monitoring.Monitoring.KpiValue.Builder getKpiValueBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getKpiValueFieldBuilder().getBuilder();
             }
@@ -5412,7 +5232,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public RawKpi parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new RawKpi(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -5504,70 +5334,6 @@ public final class Monitoring {
             return new RawKpiList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private RawKpiList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                monitoring.Monitoring.KpiId.Builder subBuilder = null;
-                                if (kpiId_ != null) {
-                                    subBuilder = kpiId_.toBuilder();
-                                }
-                                kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(kpiId_);
-                                    kpiId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    rawKpis_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                rawKpis_.add(input.readMessage(monitoring.Monitoring.RawKpi.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    rawKpis_ = java.util.Collections.unmodifiableList(rawKpis_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_RawKpiList_descriptor;
         }
@@ -5604,11 +5370,12 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-            return getKpiId();
+            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
         }
 
         public static final int RAW_KPIS_FIELD_NUMBER = 2;
 
+        @SuppressWarnings("serial")
         private java.util.List rawKpis_;
 
         /**
@@ -5672,7 +5439,7 @@ public final class Monitoring {
             for (int i = 0; i < rawKpis_.size(); i++) {
                 output.writeMessage(2, rawKpis_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -5687,7 +5454,7 @@ public final class Monitoring {
             for (int i = 0; i < rawKpis_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, rawKpis_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -5709,7 +5476,7 @@ public final class Monitoring {
             }
             if (!getRawKpisList().equals(other.getRawKpisList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -5729,7 +5496,7 @@ public final class Monitoring {
                 hash = (37 * hash) + RAW_KPIS_FIELD_NUMBER;
                 hash = (53 * hash) + getRawKpisList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -5827,35 +5594,28 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.RawKpiList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getRawKpisFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (kpiIdBuilder_ == null) {
-                    kpiId_ = null;
-                } else {
-                    kpiId_ = null;
+                bitField0_ = 0;
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
                     kpiIdBuilder_ = null;
                 }
                 if (rawKpisBuilder_ == null) {
                     rawKpis_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    rawKpis_ = null;
                     rawKpisBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000002);
                 return this;
             }
 
@@ -5881,53 +5641,31 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.RawKpiList buildPartial() {
                 monitoring.Monitoring.RawKpiList result = new monitoring.Monitoring.RawKpiList(this);
-                int from_bitField0_ = bitField0_;
-                if (kpiIdBuilder_ == null) {
-                    result.kpiId_ = kpiId_;
-                } else {
-                    result.kpiId_ = kpiIdBuilder_.build();
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(monitoring.Monitoring.RawKpiList result) {
                 if (rawKpisBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0)) {
+                    if (((bitField0_ & 0x00000002) != 0)) {
                         rawKpis_ = java.util.Collections.unmodifiableList(rawKpis_);
-                        bitField0_ = (bitField0_ & ~0x00000001);
+                        bitField0_ = (bitField0_ & ~0x00000002);
                     }
                     result.rawKpis_ = rawKpis_;
                 } else {
                     result.rawKpis_ = rawKpisBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
             }
 
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.RawKpiList result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -5950,7 +5688,7 @@ public final class Monitoring {
                     if (!other.rawKpis_.isEmpty()) {
                         if (rawKpis_.isEmpty()) {
                             rawKpis_ = other.rawKpis_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                         } else {
                             ensureRawKpisIsMutable();
                             rawKpis_.addAll(other.rawKpis_);
@@ -5963,14 +5701,14 @@ public final class Monitoring {
                             rawKpisBuilder_.dispose();
                             rawKpisBuilder_ = null;
                             rawKpis_ = other.rawKpis_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                             rawKpisBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getRawKpisFieldBuilder() : null;
                         } else {
                             rawKpisBuilder_.addAllMessages(other.rawKpis_);
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -5982,17 +5720,54 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.RawKpiList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    monitoring.Monitoring.RawKpi m = input.readMessage(monitoring.Monitoring.RawKpi.parser(), extensionRegistry);
+                                    if (rawKpisBuilder_ == null) {
+                                        ensureRawKpisIsMutable();
+                                        rawKpis_.add(m);
+                                    } else {
+                                        rawKpisBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.RawKpiList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -6007,7 +5782,7 @@ public final class Monitoring {
              * @return Whether the kpiId field is set.
              */
             public boolean hasKpiId() {
-                return kpiIdBuilder_ != null || kpiId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -6031,10 +5806,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiId_ = value;
-                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -6044,10 +5820,11 @@ public final class Monitoring {
             public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
                 if (kpiIdBuilder_ == null) {
                     kpiId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -6056,15 +5833,16 @@ public final class Monitoring {
              */
             public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
                 if (kpiIdBuilder_ == null) {
-                    if (kpiId_ != null) {
-                        kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
+                        getKpiIdBuilder().mergeFrom(value);
                     } else {
                         kpiId_ = value;
                     }
-                    onChanged();
                 } else {
                     kpiIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -6072,13 +5850,13 @@ public final class Monitoring {
              * .monitoring.KpiId kpi_id = 1;
              */
             public Builder clearKpiId() {
-                if (kpiIdBuilder_ == null) {
-                    kpiId_ = null;
-                    onChanged();
-                } else {
-                    kpiId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
                     kpiIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -6086,6 +5864,7 @@ public final class Monitoring {
              * .monitoring.KpiId kpi_id = 1;
              */
             public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getKpiIdFieldBuilder().getBuilder();
             }
@@ -6115,9 +5894,9 @@ public final class Monitoring {
             private java.util.List rawKpis_ = java.util.Collections.emptyList();
 
             private void ensureRawKpisIsMutable() {
-                if (!((bitField0_ & 0x00000001) != 0)) {
+                if (!((bitField0_ & 0x00000002) != 0)) {
                     rawKpis_ = new java.util.ArrayList(rawKpis_);
-                    bitField0_ |= 0x00000001;
+                    bitField0_ |= 0x00000002;
                 }
             }
 
@@ -6269,7 +6048,7 @@ public final class Monitoring {
             public Builder clearRawKpis() {
                 if (rawKpisBuilder_ == null) {
                     rawKpis_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
+                    bitField0_ = (bitField0_ & ~0x00000002);
                     onChanged();
                 } else {
                     rawKpisBuilder_.clear();
@@ -6343,7 +6122,7 @@ public final class Monitoring {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getRawKpisFieldBuilder() {
                 if (rawKpisBuilder_ == null) {
-                    rawKpisBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(rawKpis_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    rawKpisBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(rawKpis_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
                     rawKpis_ = null;
                 }
                 return rawKpisBuilder_;
@@ -6376,7 +6155,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public RawKpiList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new RawKpiList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -6451,57 +6240,6 @@ public final class Monitoring {
             return new RawKpiTable();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private RawKpiTable(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    rawKpiLists_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                rawKpiLists_.add(input.readMessage(monitoring.Monitoring.RawKpiList.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    rawKpiLists_ = java.util.Collections.unmodifiableList(rawKpiLists_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_RawKpiTable_descriptor;
         }
@@ -6513,6 +6251,7 @@ public final class Monitoring {
 
         public static final int RAW_KPI_LISTS_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List rawKpiLists_;
 
         /**
@@ -6573,7 +6312,7 @@ public final class Monitoring {
             for (int i = 0; i < rawKpiLists_.size(); i++) {
                 output.writeMessage(1, rawKpiLists_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -6585,7 +6324,7 @@ public final class Monitoring {
             for (int i = 0; i < rawKpiLists_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, rawKpiLists_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -6601,7 +6340,7 @@ public final class Monitoring {
             monitoring.Monitoring.RawKpiTable other = (monitoring.Monitoring.RawKpiTable) obj;
             if (!getRawKpiListsList().equals(other.getRawKpiListsList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -6617,7 +6356,7 @@ public final class Monitoring {
                 hash = (37 * hash) + RAW_KPI_LISTS_FIELD_NUMBER;
                 hash = (53 * hash) + getRawKpiListsList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -6715,29 +6454,23 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.RawKpiTable.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getRawKpiListsFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (rawKpiListsBuilder_ == null) {
                     rawKpiLists_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    rawKpiLists_ = null;
                     rawKpiListsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -6763,7 +6496,15 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.RawKpiTable buildPartial() {
                 monitoring.Monitoring.RawKpiTable result = new monitoring.Monitoring.RawKpiTable(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(monitoring.Monitoring.RawKpiTable result) {
                 if (rawKpiListsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         rawKpiLists_ = java.util.Collections.unmodifiableList(rawKpiLists_);
@@ -6773,38 +6514,10 @@ public final class Monitoring {
                 } else {
                     result.rawKpiLists_ = rawKpiListsBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
             }
 
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.RawKpiTable result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -6844,7 +6557,7 @@ public final class Monitoring {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -6856,17 +6569,47 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.RawKpiTable parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    monitoring.Monitoring.RawKpiList m = input.readMessage(monitoring.Monitoring.RawKpiList.parser(), extensionRegistry);
+                                    if (rawKpiListsBuilder_ == null) {
+                                        ensureRawKpiListsIsMutable();
+                                        rawKpiLists_.add(m);
+                                    } else {
+                                        rawKpiListsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.RawKpiTable) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -7136,7 +6879,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public RawKpiTable parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new RawKpiTable(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -7198,57 +6951,6 @@ public final class Monitoring {
             return new KpiId();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private KpiId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
-                                if (kpiId_ != null) {
-                                    subBuilder = kpiId_.toBuilder();
-                                }
-                                kpiId_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(kpiId_);
-                                    kpiId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_KpiId_descriptor;
         }
@@ -7285,7 +6987,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getKpiIdOrBuilder() {
-            return getKpiId();
+            return kpiId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : kpiId_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -7306,7 +7008,7 @@ public final class Monitoring {
             if (kpiId_ != null) {
                 output.writeMessage(1, getKpiId());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -7318,7 +7020,7 @@ public final class Monitoring {
             if (kpiId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getKpiId());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -7338,7 +7040,7 @@ public final class Monitoring {
                 if (!getKpiId().equals(other.getKpiId()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -7354,7 +7056,7 @@ public final class Monitoring {
                 hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getKpiId().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -7448,26 +7150,19 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.KpiId.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (kpiIdBuilder_ == null) {
-                    kpiId_ = null;
-                } else {
-                    kpiId_ = null;
+                bitField0_ = 0;
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
                     kpiIdBuilder_ = null;
                 }
                 return this;
@@ -7495,43 +7190,18 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.KpiId buildPartial() {
                 monitoring.Monitoring.KpiId result = new monitoring.Monitoring.KpiId(this);
-                if (kpiIdBuilder_ == null) {
-                    result.kpiId_ = kpiId_;
-                } else {
-                    result.kpiId_ = kpiIdBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.KpiId result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -7550,7 +7220,7 @@ public final class Monitoring {
                 if (other.hasKpiId()) {
                     mergeKpiId(other.getKpiId());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -7562,20 +7232,47 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.KpiId parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.KpiId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.Uuid kpiId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 kpiIdBuilder_;
@@ -7585,7 +7282,7 @@ public final class Monitoring {
              * @return Whether the kpiId field is set.
              */
             public boolean hasKpiId() {
-                return kpiIdBuilder_ != null || kpiId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -7609,10 +7306,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiId_ = value;
-                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -7622,10 +7320,11 @@ public final class Monitoring {
             public Builder setKpiId(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (kpiIdBuilder_ == null) {
                     kpiId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -7634,15 +7333,16 @@ public final class Monitoring {
              */
             public Builder mergeKpiId(context.ContextOuterClass.Uuid value) {
                 if (kpiIdBuilder_ == null) {
-                    if (kpiId_ != null) {
-                        kpiId_ = context.ContextOuterClass.Uuid.newBuilder(kpiId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getKpiIdBuilder().mergeFrom(value);
                     } else {
                         kpiId_ = value;
                     }
-                    onChanged();
                 } else {
                     kpiIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -7650,13 +7350,13 @@ public final class Monitoring {
              * .context.Uuid kpi_id = 1;
              */
             public Builder clearKpiId() {
-                if (kpiIdBuilder_ == null) {
-                    kpiId_ = null;
-                    onChanged();
-                } else {
-                    kpiId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
                     kpiIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -7664,6 +7364,7 @@ public final class Monitoring {
              * .context.Uuid kpi_id = 1;
              */
             public context.ContextOuterClass.Uuid.Builder getKpiIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getKpiIdFieldBuilder().getBuilder();
             }
@@ -7717,7 +7418,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public KpiId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new KpiId(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -7813,83 +7524,6 @@ public final class Monitoring {
             return new Kpi();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Kpi(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                monitoring.Monitoring.KpiId.Builder subBuilder = null;
-                                if (kpiId_ != null) {
-                                    subBuilder = kpiId_.toBuilder();
-                                }
-                                kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(kpiId_);
-                                    kpiId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-                                if (timestamp_ != null) {
-                                    subBuilder = timestamp_.toBuilder();
-                                }
-                                timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(timestamp_);
-                                    timestamp_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 26:
-                            {
-                                monitoring.Monitoring.KpiValue.Builder subBuilder = null;
-                                if (kpiValue_ != null) {
-                                    subBuilder = kpiValue_.toBuilder();
-                                }
-                                kpiValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(kpiValue_);
-                                    kpiValue_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_Kpi_descriptor;
         }
@@ -7926,7 +7560,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-            return getKpiId();
+            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
         }
 
         public static final int TIMESTAMP_FIELD_NUMBER = 2;
@@ -7956,7 +7590,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-            return getTimestamp();
+            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
         }
 
         public static final int KPI_VALUE_FIELD_NUMBER = 3;
@@ -7986,7 +7620,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() {
-            return getKpiValue();
+            return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -8013,7 +7647,7 @@ public final class Monitoring {
             if (kpiValue_ != null) {
                 output.writeMessage(3, getKpiValue());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -8031,7 +7665,7 @@ public final class Monitoring {
             if (kpiValue_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getKpiValue());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -8063,7 +7697,7 @@ public final class Monitoring {
                 if (!getKpiValue().equals(other.getKpiValue()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -8087,7 +7721,7 @@ public final class Monitoring {
                 hash = (37 * hash) + KPI_VALUE_FIELD_NUMBER;
                 hash = (53 * hash) + getKpiValue().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -8181,38 +7815,29 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.Kpi.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (kpiIdBuilder_ == null) {
-                    kpiId_ = null;
-                } else {
-                    kpiId_ = null;
+                bitField0_ = 0;
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
                     kpiIdBuilder_ = null;
                 }
-                if (timestampBuilder_ == null) {
-                    timestamp_ = null;
-                } else {
-                    timestamp_ = null;
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
                     timestampBuilder_ = null;
                 }
-                if (kpiValueBuilder_ == null) {
-                    kpiValue_ = null;
-                } else {
-                    kpiValue_ = null;
+                kpiValue_ = null;
+                if (kpiValueBuilder_ != null) {
+                    kpiValueBuilder_.dispose();
                     kpiValueBuilder_ = null;
                 }
                 return this;
@@ -8240,53 +7865,24 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.Kpi buildPartial() {
                 monitoring.Monitoring.Kpi result = new monitoring.Monitoring.Kpi(this);
-                if (kpiIdBuilder_ == null) {
-                    result.kpiId_ = kpiId_;
-                } else {
-                    result.kpiId_ = kpiIdBuilder_.build();
-                }
-                if (timestampBuilder_ == null) {
-                    result.timestamp_ = timestamp_;
-                } else {
-                    result.timestamp_ = timestampBuilder_.build();
-                }
-                if (kpiValueBuilder_ == null) {
-                    result.kpiValue_ = kpiValue_;
-                } else {
-                    result.kpiValue_ = kpiValueBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.Kpi result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.kpiValue_ = kpiValueBuilder_ == null ? kpiValue_ : kpiValueBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -8311,7 +7907,7 @@ public final class Monitoring {
                 if (other.hasKpiValue()) {
                     mergeKpiValue(other.getKpiValue());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -8323,20 +7919,61 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.Kpi parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    input.readMessage(getKpiValueFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.Kpi) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private monitoring.Monitoring.KpiId kpiId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 kpiIdBuilder_;
@@ -8346,7 +7983,7 @@ public final class Monitoring {
              * @return Whether the kpiId field is set.
              */
             public boolean hasKpiId() {
-                return kpiIdBuilder_ != null || kpiId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -8370,10 +8007,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiId_ = value;
-                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -8383,10 +8021,11 @@ public final class Monitoring {
             public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
                 if (kpiIdBuilder_ == null) {
                     kpiId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -8395,15 +8034,16 @@ public final class Monitoring {
              */
             public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
                 if (kpiIdBuilder_ == null) {
-                    if (kpiId_ != null) {
-                        kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
+                        getKpiIdBuilder().mergeFrom(value);
                     } else {
                         kpiId_ = value;
                     }
-                    onChanged();
                 } else {
                     kpiIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -8411,13 +8051,13 @@ public final class Monitoring {
              * .monitoring.KpiId kpi_id = 1;
              */
             public Builder clearKpiId() {
-                if (kpiIdBuilder_ == null) {
-                    kpiId_ = null;
-                    onChanged();
-                } else {
-                    kpiId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
                     kpiIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -8425,6 +8065,7 @@ public final class Monitoring {
              * .monitoring.KpiId kpi_id = 1;
              */
             public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getKpiIdFieldBuilder().getBuilder();
             }
@@ -8460,7 +8101,7 @@ public final class Monitoring {
              * @return Whether the timestamp field is set.
              */
             public boolean hasTimestamp() {
-                return timestampBuilder_ != null || timestamp_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -8484,10 +8125,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     timestamp_ = value;
-                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -8497,10 +8139,11 @@ public final class Monitoring {
             public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (timestampBuilder_ == null) {
                     timestamp_ = builderForValue.build();
-                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -8509,15 +8152,16 @@ public final class Monitoring {
              */
             public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (timestampBuilder_ == null) {
-                    if (timestamp_ != null) {
-                        timestamp_ = context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
+                        getTimestampBuilder().mergeFrom(value);
                     } else {
                         timestamp_ = value;
                     }
-                    onChanged();
                 } else {
                     timestampBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -8525,13 +8169,13 @@ public final class Monitoring {
              * .context.Timestamp timestamp = 2;
              */
             public Builder clearTimestamp() {
-                if (timestampBuilder_ == null) {
-                    timestamp_ = null;
-                    onChanged();
-                } else {
-                    timestamp_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
                     timestampBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -8539,6 +8183,7 @@ public final class Monitoring {
              * .context.Timestamp timestamp = 2;
              */
             public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getTimestampFieldBuilder().getBuilder();
             }
@@ -8574,7 +8219,7 @@ public final class Monitoring {
              * @return Whether the kpiValue field is set.
              */
             public boolean hasKpiValue() {
-                return kpiValueBuilder_ != null || kpiValue_ != null;
+                return ((bitField0_ & 0x00000004) != 0);
             }
 
             /**
@@ -8598,10 +8243,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiValue_ = value;
-                    onChanged();
                 } else {
                     kpiValueBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -8611,10 +8257,11 @@ public final class Monitoring {
             public Builder setKpiValue(monitoring.Monitoring.KpiValue.Builder builderForValue) {
                 if (kpiValueBuilder_ == null) {
                     kpiValue_ = builderForValue.build();
-                    onChanged();
                 } else {
                     kpiValueBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -8623,15 +8270,16 @@ public final class Monitoring {
              */
             public Builder mergeKpiValue(monitoring.Monitoring.KpiValue value) {
                 if (kpiValueBuilder_ == null) {
-                    if (kpiValue_ != null) {
-                        kpiValue_ = monitoring.Monitoring.KpiValue.newBuilder(kpiValue_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000004) != 0) && kpiValue_ != null && kpiValue_ != monitoring.Monitoring.KpiValue.getDefaultInstance()) {
+                        getKpiValueBuilder().mergeFrom(value);
                     } else {
                         kpiValue_ = value;
                     }
-                    onChanged();
                 } else {
                     kpiValueBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -8639,13 +8287,13 @@ public final class Monitoring {
              * .monitoring.KpiValue kpi_value = 3;
              */
             public Builder clearKpiValue() {
-                if (kpiValueBuilder_ == null) {
-                    kpiValue_ = null;
-                    onChanged();
-                } else {
-                    kpiValue_ = null;
+                bitField0_ = (bitField0_ & ~0x00000004);
+                kpiValue_ = null;
+                if (kpiValueBuilder_ != null) {
+                    kpiValueBuilder_.dispose();
                     kpiValueBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -8653,6 +8301,7 @@ public final class Monitoring {
              * .monitoring.KpiValue kpi_value = 3;
              */
             public monitoring.Monitoring.KpiValue.Builder getKpiValueBuilder() {
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return getKpiValueFieldBuilder().getBuilder();
             }
@@ -8706,7 +8355,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public Kpi parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Kpi(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -8815,85 +8474,6 @@ public final class Monitoring {
             return new KpiValueRange();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private KpiValueRange(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                monitoring.Monitoring.KpiValue.Builder subBuilder = null;
-                                if (kpiMinValue_ != null) {
-                                    subBuilder = kpiMinValue_.toBuilder();
-                                }
-                                kpiMinValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(kpiMinValue_);
-                                    kpiMinValue_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                monitoring.Monitoring.KpiValue.Builder subBuilder = null;
-                                if (kpiMaxValue_ != null) {
-                                    subBuilder = kpiMaxValue_.toBuilder();
-                                }
-                                kpiMaxValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(kpiMaxValue_);
-                                    kpiMaxValue_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 24:
-                            {
-                                inRange_ = input.readBool();
-                                break;
-                            }
-                        case 32:
-                            {
-                                includeMinValue_ = input.readBool();
-                                break;
-                            }
-                        case 40:
-                            {
-                                includeMaxValue_ = input.readBool();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_KpiValueRange_descriptor;
         }
@@ -8930,7 +8510,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiValueOrBuilder getKpiMinValueOrBuilder() {
-            return getKpiMinValue();
+            return kpiMinValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMinValue_;
         }
 
         public static final int KPIMAXVALUE_FIELD_NUMBER = 2;
@@ -8960,12 +8540,12 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiValueOrBuilder getKpiMaxValueOrBuilder() {
-            return getKpiMaxValue();
+            return kpiMaxValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMaxValue_;
         }
 
         public static final int INRANGE_FIELD_NUMBER = 3;
 
-        private boolean inRange_;
+        private boolean inRange_ = false;
 
         /**
          * 
@@ -8982,7 +8562,7 @@ public final class Monitoring {
 
         public static final int INCLUDEMINVALUE_FIELD_NUMBER = 4;
 
-        private boolean includeMinValue_;
+        private boolean includeMinValue_ = false;
 
         /**
          * 
@@ -8999,7 +8579,7 @@ public final class Monitoring {
 
         public static final int INCLUDEMAXVALUE_FIELD_NUMBER = 5;
 
-        private boolean includeMaxValue_;
+        private boolean includeMaxValue_ = false;
 
         /**
          * 
@@ -9044,7 +8624,7 @@ public final class Monitoring {
             if (includeMaxValue_ != false) {
                 output.writeBool(5, includeMaxValue_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -9068,7 +8648,7 @@ public final class Monitoring {
             if (includeMaxValue_ != false) {
                 size += com.google.protobuf.CodedOutputStream.computeBoolSize(5, includeMaxValue_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -9100,7 +8680,7 @@ public final class Monitoring {
                 return false;
             if (getIncludeMaxValue() != other.getIncludeMaxValue())
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -9126,7 +8706,7 @@ public final class Monitoring {
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeMinValue());
             hash = (37 * hash) + INCLUDEMAXVALUE_FIELD_NUMBER;
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeMaxValue());
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -9220,32 +8800,24 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.KpiValueRange.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (kpiMinValueBuilder_ == null) {
-                    kpiMinValue_ = null;
-                } else {
-                    kpiMinValue_ = null;
+                bitField0_ = 0;
+                kpiMinValue_ = null;
+                if (kpiMinValueBuilder_ != null) {
+                    kpiMinValueBuilder_.dispose();
                     kpiMinValueBuilder_ = null;
                 }
-                if (kpiMaxValueBuilder_ == null) {
-                    kpiMaxValue_ = null;
-                } else {
-                    kpiMaxValue_ = null;
+                kpiMaxValue_ = null;
+                if (kpiMaxValueBuilder_ != null) {
+                    kpiMaxValueBuilder_.dispose();
                     kpiMaxValueBuilder_ = null;
                 }
                 inRange_ = false;
@@ -9276,51 +8848,30 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.KpiValueRange buildPartial() {
                 monitoring.Monitoring.KpiValueRange result = new monitoring.Monitoring.KpiValueRange(this);
-                if (kpiMinValueBuilder_ == null) {
-                    result.kpiMinValue_ = kpiMinValue_;
-                } else {
-                    result.kpiMinValue_ = kpiMinValueBuilder_.build();
-                }
-                if (kpiMaxValueBuilder_ == null) {
-                    result.kpiMaxValue_ = kpiMaxValue_;
-                } else {
-                    result.kpiMaxValue_ = kpiMaxValueBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.inRange_ = inRange_;
-                result.includeMinValue_ = includeMinValue_;
-                result.includeMaxValue_ = includeMaxValue_;
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.KpiValueRange result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.kpiMinValue_ = kpiMinValueBuilder_ == null ? kpiMinValue_ : kpiMinValueBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.kpiMaxValue_ = kpiMaxValueBuilder_ == null ? kpiMaxValue_ : kpiMaxValueBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.inRange_ = inRange_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.includeMinValue_ = includeMinValue_;
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.includeMaxValue_ = includeMaxValue_;
+                }
             }
 
             @java.lang.Override
@@ -9351,7 +8902,7 @@ public final class Monitoring {
                 if (other.getIncludeMaxValue() != false) {
                     setIncludeMaxValue(other.getIncludeMaxValue());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -9363,20 +8914,75 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.KpiValueRange parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getKpiMinValueFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getKpiMaxValueFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 24:
+                                {
+                                    inRange_ = input.readBool();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            case 32:
+                                {
+                                    includeMinValue_ = input.readBool();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 32
+                            case 40:
+                                {
+                                    includeMaxValue_ = input.readBool();
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 40
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.KpiValueRange) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private monitoring.Monitoring.KpiValue kpiMinValue_;
 
             private com.google.protobuf.SingleFieldBuilderV3 kpiMinValueBuilder_;
@@ -9386,7 +8992,7 @@ public final class Monitoring {
              * @return Whether the kpiMinValue field is set.
              */
             public boolean hasKpiMinValue() {
-                return kpiMinValueBuilder_ != null || kpiMinValue_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -9410,10 +9016,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiMinValue_ = value;
-                    onChanged();
                 } else {
                     kpiMinValueBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -9423,10 +9030,11 @@ public final class Monitoring {
             public Builder setKpiMinValue(monitoring.Monitoring.KpiValue.Builder builderForValue) {
                 if (kpiMinValueBuilder_ == null) {
                     kpiMinValue_ = builderForValue.build();
-                    onChanged();
                 } else {
                     kpiMinValueBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -9435,15 +9043,16 @@ public final class Monitoring {
              */
             public Builder mergeKpiMinValue(monitoring.Monitoring.KpiValue value) {
                 if (kpiMinValueBuilder_ == null) {
-                    if (kpiMinValue_ != null) {
-                        kpiMinValue_ = monitoring.Monitoring.KpiValue.newBuilder(kpiMinValue_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && kpiMinValue_ != null && kpiMinValue_ != monitoring.Monitoring.KpiValue.getDefaultInstance()) {
+                        getKpiMinValueBuilder().mergeFrom(value);
                     } else {
                         kpiMinValue_ = value;
                     }
-                    onChanged();
                 } else {
                     kpiMinValueBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -9451,13 +9060,13 @@ public final class Monitoring {
              * .monitoring.KpiValue kpiMinValue = 1;
              */
             public Builder clearKpiMinValue() {
-                if (kpiMinValueBuilder_ == null) {
-                    kpiMinValue_ = null;
-                    onChanged();
-                } else {
-                    kpiMinValue_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                kpiMinValue_ = null;
+                if (kpiMinValueBuilder_ != null) {
+                    kpiMinValueBuilder_.dispose();
                     kpiMinValueBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -9465,6 +9074,7 @@ public final class Monitoring {
              * .monitoring.KpiValue kpiMinValue = 1;
              */
             public monitoring.Monitoring.KpiValue.Builder getKpiMinValueBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getKpiMinValueFieldBuilder().getBuilder();
             }
@@ -9500,7 +9110,7 @@ public final class Monitoring {
              * @return Whether the kpiMaxValue field is set.
              */
             public boolean hasKpiMaxValue() {
-                return kpiMaxValueBuilder_ != null || kpiMaxValue_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -9524,10 +9134,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiMaxValue_ = value;
-                    onChanged();
                 } else {
                     kpiMaxValueBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -9537,10 +9148,11 @@ public final class Monitoring {
             public Builder setKpiMaxValue(monitoring.Monitoring.KpiValue.Builder builderForValue) {
                 if (kpiMaxValueBuilder_ == null) {
                     kpiMaxValue_ = builderForValue.build();
-                    onChanged();
                 } else {
                     kpiMaxValueBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -9549,15 +9161,16 @@ public final class Monitoring {
              */
             public Builder mergeKpiMaxValue(monitoring.Monitoring.KpiValue value) {
                 if (kpiMaxValueBuilder_ == null) {
-                    if (kpiMaxValue_ != null) {
-                        kpiMaxValue_ = monitoring.Monitoring.KpiValue.newBuilder(kpiMaxValue_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && kpiMaxValue_ != null && kpiMaxValue_ != monitoring.Monitoring.KpiValue.getDefaultInstance()) {
+                        getKpiMaxValueBuilder().mergeFrom(value);
                     } else {
                         kpiMaxValue_ = value;
                     }
-                    onChanged();
                 } else {
                     kpiMaxValueBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -9565,13 +9178,13 @@ public final class Monitoring {
              * .monitoring.KpiValue kpiMaxValue = 2;
              */
             public Builder clearKpiMaxValue() {
-                if (kpiMaxValueBuilder_ == null) {
-                    kpiMaxValue_ = null;
-                    onChanged();
-                } else {
-                    kpiMaxValue_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                kpiMaxValue_ = null;
+                if (kpiMaxValueBuilder_ != null) {
+                    kpiMaxValueBuilder_.dispose();
                     kpiMaxValueBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -9579,6 +9192,7 @@ public final class Monitoring {
              * .monitoring.KpiValue kpiMaxValue = 2;
              */
             public monitoring.Monitoring.KpiValue.Builder getKpiMaxValueBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getKpiMaxValueFieldBuilder().getBuilder();
             }
@@ -9631,6 +9245,7 @@ public final class Monitoring {
              */
             public Builder setInRange(boolean value) {
                 inRange_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -9644,6 +9259,7 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearInRange() {
+                bitField0_ = (bitField0_ & ~0x00000004);
                 inRange_ = false;
                 onChanged();
                 return this;
@@ -9675,6 +9291,7 @@ public final class Monitoring {
              */
             public Builder setIncludeMinValue(boolean value) {
                 includeMinValue_ = value;
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -9688,6 +9305,7 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearIncludeMinValue() {
+                bitField0_ = (bitField0_ & ~0x00000008);
                 includeMinValue_ = false;
                 onChanged();
                 return this;
@@ -9719,6 +9337,7 @@ public final class Monitoring {
              */
             public Builder setIncludeMaxValue(boolean value) {
                 includeMaxValue_ = value;
+                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -9732,6 +9351,7 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearIncludeMaxValue() {
+                bitField0_ = (bitField0_ & ~0x00000010);
                 includeMaxValue_ = false;
                 onChanged();
                 return this;
@@ -9764,7 +9384,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public KpiValueRange parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new KpiValueRange(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -9876,7 +9506,7 @@ public final class Monitoring {
          */
         boolean getBoolVal();
 
-        public monitoring.Monitoring.KpiValue.ValueCase getValueCase();
+        monitoring.Monitoring.KpiValue.ValueCase getValueCase();
     }
 
     /**
@@ -9901,87 +9531,6 @@ public final class Monitoring {
             return new KpiValue();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private KpiValue(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 8:
-                            {
-                                valueCase_ = 1;
-                                value_ = input.readInt32();
-                                break;
-                            }
-                        case 16:
-                            {
-                                valueCase_ = 2;
-                                value_ = input.readUInt32();
-                                break;
-                            }
-                        case 24:
-                            {
-                                valueCase_ = 3;
-                                value_ = input.readInt64();
-                                break;
-                            }
-                        case 32:
-                            {
-                                valueCase_ = 4;
-                                value_ = input.readUInt64();
-                                break;
-                            }
-                        case 45:
-                            {
-                                valueCase_ = 5;
-                                value_ = input.readFloat();
-                                break;
-                            }
-                        case 50:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                valueCase_ = 6;
-                                value_ = s;
-                                break;
-                            }
-                        case 56:
-                            {
-                                valueCase_ = 7;
-                                value_ = input.readBool();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_KpiValue_descriptor;
         }
@@ -9993,6 +9542,7 @@ public final class Monitoring {
 
         private int valueCase_ = 0;
 
+        @SuppressWarnings("serial")
         private java.lang.Object value_;
 
         public enum ValueCase implements com.google.protobuf.Internal.EnumLite, com.google.protobuf.AbstractMessage.InternalOneOfEnum {
@@ -10279,7 +9829,7 @@ public final class Monitoring {
             if (valueCase_ == 7) {
                 output.writeBool(7, (boolean) ((java.lang.Boolean) value_));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -10309,7 +9859,7 @@ public final class Monitoring {
             if (valueCase_ == 7) {
                 size += com.google.protobuf.CodedOutputStream.computeBoolSize(7, (boolean) ((java.lang.Boolean) value_));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -10357,7 +9907,7 @@ public final class Monitoring {
                 case 0:
                 default:
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -10401,7 +9951,7 @@ public final class Monitoring {
                 case 0:
                 default:
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -10495,22 +10045,16 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.KpiValue.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 valueCase_ = 0;
                 value_ = null;
                 return this;
@@ -10538,60 +10082,21 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.KpiValue buildPartial() {
                 monitoring.Monitoring.KpiValue result = new monitoring.Monitoring.KpiValue(this);
-                if (valueCase_ == 1) {
-                    result.value_ = value_;
-                }
-                if (valueCase_ == 2) {
-                    result.value_ = value_;
-                }
-                if (valueCase_ == 3) {
-                    result.value_ = value_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                if (valueCase_ == 4) {
-                    result.value_ = value_;
-                }
-                if (valueCase_ == 5) {
-                    result.value_ = value_;
-                }
-                if (valueCase_ == 6) {
-                    result.value_ = value_;
-                }
-                if (valueCase_ == 7) {
-                    result.value_ = value_;
-                }
-                result.valueCase_ = valueCase_;
+                buildPartialOneofs(result);
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
+            private void buildPartial0(monitoring.Monitoring.KpiValue result) {
+                int from_bitField0_ = bitField0_;
             }
 
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartialOneofs(monitoring.Monitoring.KpiValue result) {
+                result.valueCase_ = valueCase_;
+                result.value_ = this.value_;
             }
 
             @java.lang.Override
@@ -10650,7 +10155,7 @@ public final class Monitoring {
                             break;
                         }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -10662,17 +10167,85 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.KpiValue parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 8:
+                                {
+                                    value_ = input.readInt32();
+                                    valueCase_ = 1;
+                                    break;
+                                }
+                            // case 8
+                            case 16:
+                                {
+                                    value_ = input.readUInt32();
+                                    valueCase_ = 2;
+                                    break;
+                                }
+                            // case 16
+                            case 24:
+                                {
+                                    value_ = input.readInt64();
+                                    valueCase_ = 3;
+                                    break;
+                                }
+                            // case 24
+                            case 32:
+                                {
+                                    value_ = input.readUInt64();
+                                    valueCase_ = 4;
+                                    break;
+                                }
+                            // case 32
+                            case 45:
+                                {
+                                    value_ = input.readFloat();
+                                    valueCase_ = 5;
+                                    break;
+                                }
+                            // case 45
+                            case 50:
+                                {
+                                    java.lang.String s = input.readStringRequireUtf8();
+                                    valueCase_ = 6;
+                                    value_ = s;
+                                    break;
+                                }
+                            // case 50
+                            case 56:
+                                {
+                                    value_ = input.readBool();
+                                    valueCase_ = 7;
+                                    break;
+                                }
+                            // case 56
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.KpiValue) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -10691,6 +10264,8 @@ public final class Monitoring {
                 return this;
             }
 
+            private int bitField0_;
+
             /**
              * int32 int32Val = 1;
              * @return Whether the int32Val field is set.
@@ -11078,7 +10653,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public KpiValue parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new KpiValue(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -11149,57 +10734,6 @@ public final class Monitoring {
             return new KpiList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private KpiList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    kpi_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                kpi_.add(input.readMessage(monitoring.Monitoring.Kpi.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    kpi_ = java.util.Collections.unmodifiableList(kpi_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_KpiList_descriptor;
         }
@@ -11211,6 +10745,7 @@ public final class Monitoring {
 
         public static final int KPI_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List kpi_;
 
         /**
@@ -11271,7 +10806,7 @@ public final class Monitoring {
             for (int i = 0; i < kpi_.size(); i++) {
                 output.writeMessage(1, kpi_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -11283,7 +10818,7 @@ public final class Monitoring {
             for (int i = 0; i < kpi_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, kpi_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -11299,7 +10834,7 @@ public final class Monitoring {
             monitoring.Monitoring.KpiList other = (monitoring.Monitoring.KpiList) obj;
             if (!getKpiList().equals(other.getKpiList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -11315,7 +10850,7 @@ public final class Monitoring {
                 hash = (37 * hash) + KPI_FIELD_NUMBER;
                 hash = (53 * hash) + getKpiList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -11409,29 +10944,23 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.KpiList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getKpiFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (kpiBuilder_ == null) {
                     kpi_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    kpi_ = null;
                     kpiBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -11457,7 +10986,15 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.KpiList buildPartial() {
                 monitoring.Monitoring.KpiList result = new monitoring.Monitoring.KpiList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(monitoring.Monitoring.KpiList result) {
                 if (kpiBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         kpi_ = java.util.Collections.unmodifiableList(kpi_);
@@ -11467,38 +11004,10 @@ public final class Monitoring {
                 } else {
                     result.kpi_ = kpiBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
             }
 
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.KpiList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -11538,7 +11047,7 @@ public final class Monitoring {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -11550,17 +11059,47 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.KpiList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    monitoring.Monitoring.Kpi m = input.readMessage(monitoring.Monitoring.Kpi.parser(), extensionRegistry);
+                                    if (kpiBuilder_ == null) {
+                                        ensureKpiIsMutable();
+                                        kpi_.add(m);
+                                    } else {
+                                        kpiBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.KpiList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -11830,7 +11369,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public KpiList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new KpiList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -11901,57 +11450,6 @@ public final class Monitoring {
             return new KpiDescriptorList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private KpiDescriptorList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    kpiDescriptorList_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                kpiDescriptorList_.add(input.readMessage(monitoring.Monitoring.KpiDescriptor.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    kpiDescriptorList_ = java.util.Collections.unmodifiableList(kpiDescriptorList_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_KpiDescriptorList_descriptor;
         }
@@ -11963,6 +11461,7 @@ public final class Monitoring {
 
         public static final int KPI_DESCRIPTOR_LIST_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List kpiDescriptorList_;
 
         /**
@@ -12023,7 +11522,7 @@ public final class Monitoring {
             for (int i = 0; i < kpiDescriptorList_.size(); i++) {
                 output.writeMessage(1, kpiDescriptorList_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -12035,7 +11534,7 @@ public final class Monitoring {
             for (int i = 0; i < kpiDescriptorList_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, kpiDescriptorList_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -12051,7 +11550,7 @@ public final class Monitoring {
             monitoring.Monitoring.KpiDescriptorList other = (monitoring.Monitoring.KpiDescriptorList) obj;
             if (!getKpiDescriptorListList().equals(other.getKpiDescriptorListList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -12067,7 +11566,7 @@ public final class Monitoring {
                 hash = (37 * hash) + KPI_DESCRIPTOR_LIST_FIELD_NUMBER;
                 hash = (53 * hash) + getKpiDescriptorListList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -12161,29 +11660,23 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.KpiDescriptorList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getKpiDescriptorListFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (kpiDescriptorListBuilder_ == null) {
                     kpiDescriptorList_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    kpiDescriptorList_ = null;
                     kpiDescriptorListBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -12209,7 +11702,15 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.KpiDescriptorList buildPartial() {
                 monitoring.Monitoring.KpiDescriptorList result = new monitoring.Monitoring.KpiDescriptorList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(monitoring.Monitoring.KpiDescriptorList result) {
                 if (kpiDescriptorListBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         kpiDescriptorList_ = java.util.Collections.unmodifiableList(kpiDescriptorList_);
@@ -12219,38 +11720,10 @@ public final class Monitoring {
                 } else {
                     result.kpiDescriptorList_ = kpiDescriptorListBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
             }
 
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.KpiDescriptorList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -12290,7 +11763,7 @@ public final class Monitoring {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -12302,17 +11775,47 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.KpiDescriptorList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    monitoring.Monitoring.KpiDescriptor m = input.readMessage(monitoring.Monitoring.KpiDescriptor.parser(), extensionRegistry);
+                                    if (kpiDescriptorListBuilder_ == null) {
+                                        ensureKpiDescriptorListIsMutable();
+                                        kpiDescriptorList_.add(m);
+                                    } else {
+                                        kpiDescriptorListBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.KpiDescriptorList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -12582,7 +12085,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public KpiDescriptorList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new KpiDescriptorList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -12731,106 +12244,6 @@ public final class Monitoring {
             return new SubsDescriptor();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private SubsDescriptor(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                monitoring.Monitoring.SubscriptionID.Builder subBuilder = null;
-                                if (subsId_ != null) {
-                                    subBuilder = subsId_.toBuilder();
-                                }
-                                subsId_ = input.readMessage(monitoring.Monitoring.SubscriptionID.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(subsId_);
-                                    subsId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                monitoring.Monitoring.KpiId.Builder subBuilder = null;
-                                if (kpiId_ != null) {
-                                    subBuilder = kpiId_.toBuilder();
-                                }
-                                kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(kpiId_);
-                                    kpiId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 29:
-                            {
-                                samplingDurationS_ = input.readFloat();
-                                break;
-                            }
-                        case 37:
-                            {
-                                samplingIntervalS_ = input.readFloat();
-                                break;
-                            }
-                        case 42:
-                            {
-                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-                                if (startTimestamp_ != null) {
-                                    subBuilder = startTimestamp_.toBuilder();
-                                }
-                                startTimestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(startTimestamp_);
-                                    startTimestamp_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 50:
-                            {
-                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-                                if (endTimestamp_ != null) {
-                                    subBuilder = endTimestamp_.toBuilder();
-                                }
-                                endTimestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(endTimestamp_);
-                                    endTimestamp_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_SubsDescriptor_descriptor;
         }
@@ -12867,7 +12280,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder() {
-            return getSubsId();
+            return subsId_ == null ? monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
         }
 
         public static final int KPI_ID_FIELD_NUMBER = 2;
@@ -12897,12 +12310,12 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-            return getKpiId();
+            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
         }
 
         public static final int SAMPLING_DURATION_S_FIELD_NUMBER = 3;
 
-        private float samplingDurationS_;
+        private float samplingDurationS_ = 0F;
 
         /**
          * float sampling_duration_s = 3;
@@ -12915,7 +12328,7 @@ public final class Monitoring {
 
         public static final int SAMPLING_INTERVAL_S_FIELD_NUMBER = 4;
 
-        private float samplingIntervalS_;
+        private float samplingIntervalS_ = 0F;
 
         /**
          * float sampling_interval_s = 4;
@@ -12965,7 +12378,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder() {
-            return getStartTimestamp();
+            return startTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
         }
 
         public static final int END_TIMESTAMP_FIELD_NUMBER = 6;
@@ -13007,7 +12420,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder() {
-            return getEndTimestamp();
+            return endTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -13031,10 +12444,10 @@ public final class Monitoring {
             if (kpiId_ != null) {
                 output.writeMessage(2, getKpiId());
             }
-            if (samplingDurationS_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(samplingDurationS_) != 0) {
                 output.writeFloat(3, samplingDurationS_);
             }
-            if (samplingIntervalS_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(samplingIntervalS_) != 0) {
                 output.writeFloat(4, samplingIntervalS_);
             }
             if (startTimestamp_ != null) {
@@ -13043,7 +12456,7 @@ public final class Monitoring {
             if (endTimestamp_ != null) {
                 output.writeMessage(6, getEndTimestamp());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -13058,10 +12471,10 @@ public final class Monitoring {
             if (kpiId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getKpiId());
             }
-            if (samplingDurationS_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(samplingDurationS_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(3, samplingDurationS_);
             }
-            if (samplingIntervalS_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(samplingIntervalS_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(4, samplingIntervalS_);
             }
             if (startTimestamp_ != null) {
@@ -13070,7 +12483,7 @@ public final class Monitoring {
             if (endTimestamp_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, getEndTimestamp());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -13112,7 +12525,7 @@ public final class Monitoring {
                 if (!getEndTimestamp().equals(other.getEndTimestamp()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -13144,7 +12557,7 @@ public final class Monitoring {
                 hash = (37 * hash) + END_TIMESTAMP_FIELD_NUMBER;
                 hash = (53 * hash) + getEndTimestamp().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -13238,46 +12651,36 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.SubsDescriptor.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (subsIdBuilder_ == null) {
-                    subsId_ = null;
-                } else {
-                    subsId_ = null;
+                bitField0_ = 0;
+                subsId_ = null;
+                if (subsIdBuilder_ != null) {
+                    subsIdBuilder_.dispose();
                     subsIdBuilder_ = null;
                 }
-                if (kpiIdBuilder_ == null) {
-                    kpiId_ = null;
-                } else {
-                    kpiId_ = null;
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
                     kpiIdBuilder_ = null;
                 }
                 samplingDurationS_ = 0F;
                 samplingIntervalS_ = 0F;
-                if (startTimestampBuilder_ == null) {
-                    startTimestamp_ = null;
-                } else {
-                    startTimestamp_ = null;
+                startTimestamp_ = null;
+                if (startTimestampBuilder_ != null) {
+                    startTimestampBuilder_.dispose();
                     startTimestampBuilder_ = null;
                 }
-                if (endTimestampBuilder_ == null) {
-                    endTimestamp_ = null;
-                } else {
-                    endTimestamp_ = null;
+                endTimestamp_ = null;
+                if (endTimestampBuilder_ != null) {
+                    endTimestampBuilder_.dispose();
                     endTimestampBuilder_ = null;
                 }
                 return this;
@@ -13305,60 +12708,33 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.SubsDescriptor buildPartial() {
                 monitoring.Monitoring.SubsDescriptor result = new monitoring.Monitoring.SubsDescriptor(this);
-                if (subsIdBuilder_ == null) {
-                    result.subsId_ = subsId_;
-                } else {
-                    result.subsId_ = subsIdBuilder_.build();
-                }
-                if (kpiIdBuilder_ == null) {
-                    result.kpiId_ = kpiId_;
-                } else {
-                    result.kpiId_ = kpiIdBuilder_.build();
-                }
-                result.samplingDurationS_ = samplingDurationS_;
-                result.samplingIntervalS_ = samplingIntervalS_;
-                if (startTimestampBuilder_ == null) {
-                    result.startTimestamp_ = startTimestamp_;
-                } else {
-                    result.startTimestamp_ = startTimestampBuilder_.build();
-                }
-                if (endTimestampBuilder_ == null) {
-                    result.endTimestamp_ = endTimestamp_;
-                } else {
-                    result.endTimestamp_ = endTimestampBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.SubsDescriptor result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.subsId_ = subsIdBuilder_ == null ? subsId_ : subsIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.samplingDurationS_ = samplingDurationS_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.samplingIntervalS_ = samplingIntervalS_;
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.startTimestamp_ = startTimestampBuilder_ == null ? startTimestamp_ : startTimestampBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000020) != 0)) {
+                    result.endTimestamp_ = endTimestampBuilder_ == null ? endTimestamp_ : endTimestampBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -13392,7 +12768,7 @@ public final class Monitoring {
                 if (other.hasEndTimestamp()) {
                     mergeEndTimestamp(other.getEndTimestamp());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -13404,20 +12780,82 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.SubsDescriptor parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getSubsIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 29:
+                                {
+                                    samplingDurationS_ = input.readFloat();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 29
+                            case 37:
+                                {
+                                    samplingIntervalS_ = input.readFloat();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 37
+                            case 42:
+                                {
+                                    input.readMessage(getStartTimestampFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 42
+                            case 50:
+                                {
+                                    input.readMessage(getEndTimestampFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000020;
+                                    break;
+                                }
+                            // case 50
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.SubsDescriptor) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private monitoring.Monitoring.SubscriptionID subsId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 subsIdBuilder_;
@@ -13427,7 +12865,7 @@ public final class Monitoring {
              * @return Whether the subsId field is set.
              */
             public boolean hasSubsId() {
-                return subsIdBuilder_ != null || subsId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -13451,10 +12889,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     subsId_ = value;
-                    onChanged();
                 } else {
                     subsIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -13464,10 +12903,11 @@ public final class Monitoring {
             public Builder setSubsId(monitoring.Monitoring.SubscriptionID.Builder builderForValue) {
                 if (subsIdBuilder_ == null) {
                     subsId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     subsIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -13476,15 +12916,16 @@ public final class Monitoring {
              */
             public Builder mergeSubsId(monitoring.Monitoring.SubscriptionID value) {
                 if (subsIdBuilder_ == null) {
-                    if (subsId_ != null) {
-                        subsId_ = monitoring.Monitoring.SubscriptionID.newBuilder(subsId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && subsId_ != null && subsId_ != monitoring.Monitoring.SubscriptionID.getDefaultInstance()) {
+                        getSubsIdBuilder().mergeFrom(value);
                     } else {
                         subsId_ = value;
                     }
-                    onChanged();
                 } else {
                     subsIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -13492,13 +12933,13 @@ public final class Monitoring {
              * .monitoring.SubscriptionID subs_id = 1;
              */
             public Builder clearSubsId() {
-                if (subsIdBuilder_ == null) {
-                    subsId_ = null;
-                    onChanged();
-                } else {
-                    subsId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                subsId_ = null;
+                if (subsIdBuilder_ != null) {
+                    subsIdBuilder_.dispose();
                     subsIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -13506,6 +12947,7 @@ public final class Monitoring {
              * .monitoring.SubscriptionID subs_id = 1;
              */
             public monitoring.Monitoring.SubscriptionID.Builder getSubsIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getSubsIdFieldBuilder().getBuilder();
             }
@@ -13541,7 +12983,7 @@ public final class Monitoring {
              * @return Whether the kpiId field is set.
              */
             public boolean hasKpiId() {
-                return kpiIdBuilder_ != null || kpiId_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -13565,10 +13007,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiId_ = value;
-                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -13578,10 +13021,11 @@ public final class Monitoring {
             public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
                 if (kpiIdBuilder_ == null) {
                     kpiId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -13590,15 +13034,16 @@ public final class Monitoring {
              */
             public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
                 if (kpiIdBuilder_ == null) {
-                    if (kpiId_ != null) {
-                        kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
+                        getKpiIdBuilder().mergeFrom(value);
                     } else {
                         kpiId_ = value;
                     }
-                    onChanged();
                 } else {
                     kpiIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -13606,13 +13051,13 @@ public final class Monitoring {
              * .monitoring.KpiId kpi_id = 2;
              */
             public Builder clearKpiId() {
-                if (kpiIdBuilder_ == null) {
-                    kpiId_ = null;
-                    onChanged();
-                } else {
-                    kpiId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
                     kpiIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -13620,6 +13065,7 @@ public final class Monitoring {
              * .monitoring.KpiId kpi_id = 2;
              */
             public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getKpiIdFieldBuilder().getBuilder();
             }
@@ -13664,6 +13110,7 @@ public final class Monitoring {
              */
             public Builder setSamplingDurationS(float value) {
                 samplingDurationS_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -13673,6 +13120,7 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearSamplingDurationS() {
+                bitField0_ = (bitField0_ & ~0x00000004);
                 samplingDurationS_ = 0F;
                 onChanged();
                 return this;
@@ -13696,6 +13144,7 @@ public final class Monitoring {
              */
             public Builder setSamplingIntervalS(float value) {
                 samplingIntervalS_ = value;
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -13705,6 +13154,7 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearSamplingIntervalS() {
+                bitField0_ = (bitField0_ & ~0x00000008);
                 samplingIntervalS_ = 0F;
                 onChanged();
                 return this;
@@ -13723,7 +13173,7 @@ public final class Monitoring {
              * @return Whether the startTimestamp field is set.
              */
             public boolean hasStartTimestamp() {
-                return startTimestampBuilder_ != null || startTimestamp_ != null;
+                return ((bitField0_ & 0x00000010) != 0);
             }
 
             /**
@@ -13755,10 +13205,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     startTimestamp_ = value;
-                    onChanged();
                 } else {
                     startTimestampBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -13772,10 +13223,11 @@ public final class Monitoring {
             public Builder setStartTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (startTimestampBuilder_ == null) {
                     startTimestamp_ = builderForValue.build();
-                    onChanged();
                 } else {
                     startTimestampBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -13788,15 +13240,16 @@ public final class Monitoring {
              */
             public Builder mergeStartTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (startTimestampBuilder_ == null) {
-                    if (startTimestamp_ != null) {
-                        startTimestamp_ = context.ContextOuterClass.Timestamp.newBuilder(startTimestamp_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000010) != 0) && startTimestamp_ != null && startTimestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
+                        getStartTimestampBuilder().mergeFrom(value);
                     } else {
                         startTimestamp_ = value;
                     }
-                    onChanged();
                 } else {
                     startTimestampBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -13808,13 +13261,13 @@ public final class Monitoring {
              * .context.Timestamp start_timestamp = 5;
              */
             public Builder clearStartTimestamp() {
-                if (startTimestampBuilder_ == null) {
-                    startTimestamp_ = null;
-                    onChanged();
-                } else {
-                    startTimestamp_ = null;
+                bitField0_ = (bitField0_ & ~0x00000010);
+                startTimestamp_ = null;
+                if (startTimestampBuilder_ != null) {
+                    startTimestampBuilder_.dispose();
                     startTimestampBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -13826,6 +13279,7 @@ public final class Monitoring {
              * .context.Timestamp start_timestamp = 5;
              */
             public context.ContextOuterClass.Timestamp.Builder getStartTimestampBuilder() {
+                bitField0_ |= 0x00000010;
                 onChanged();
                 return getStartTimestampFieldBuilder().getBuilder();
             }
@@ -13873,7 +13327,7 @@ public final class Monitoring {
              * @return Whether the endTimestamp field is set.
              */
             public boolean hasEndTimestamp() {
-                return endTimestampBuilder_ != null || endTimestamp_ != null;
+                return ((bitField0_ & 0x00000020) != 0);
             }
 
             /**
@@ -13905,10 +13359,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     endTimestamp_ = value;
-                    onChanged();
                 } else {
                     endTimestampBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000020;
+                onChanged();
                 return this;
             }
 
@@ -13922,10 +13377,11 @@ public final class Monitoring {
             public Builder setEndTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (endTimestampBuilder_ == null) {
                     endTimestamp_ = builderForValue.build();
-                    onChanged();
                 } else {
                     endTimestampBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000020;
+                onChanged();
                 return this;
             }
 
@@ -13938,15 +13394,16 @@ public final class Monitoring {
              */
             public Builder mergeEndTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (endTimestampBuilder_ == null) {
-                    if (endTimestamp_ != null) {
-                        endTimestamp_ = context.ContextOuterClass.Timestamp.newBuilder(endTimestamp_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000020) != 0) && endTimestamp_ != null && endTimestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
+                        getEndTimestampBuilder().mergeFrom(value);
                     } else {
                         endTimestamp_ = value;
                     }
-                    onChanged();
                 } else {
                     endTimestampBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000020;
+                onChanged();
                 return this;
             }
 
@@ -13958,13 +13415,13 @@ public final class Monitoring {
              * .context.Timestamp end_timestamp = 6;
              */
             public Builder clearEndTimestamp() {
-                if (endTimestampBuilder_ == null) {
-                    endTimestamp_ = null;
-                    onChanged();
-                } else {
-                    endTimestamp_ = null;
+                bitField0_ = (bitField0_ & ~0x00000020);
+                endTimestamp_ = null;
+                if (endTimestampBuilder_ != null) {
+                    endTimestampBuilder_.dispose();
                     endTimestampBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -13976,6 +13433,7 @@ public final class Monitoring {
              * .context.Timestamp end_timestamp = 6;
              */
             public context.ContextOuterClass.Timestamp.Builder getEndTimestampBuilder() {
+                bitField0_ |= 0x00000020;
                 onChanged();
                 return getEndTimestampFieldBuilder().getBuilder();
             }
@@ -14037,7 +13495,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public SubsDescriptor parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new SubsDescriptor(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -14099,57 +13567,6 @@ public final class Monitoring {
             return new SubscriptionID();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private SubscriptionID(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
-                                if (subsId_ != null) {
-                                    subBuilder = subsId_.toBuilder();
-                                }
-                                subsId_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(subsId_);
-                                    subsId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_SubscriptionID_descriptor;
         }
@@ -14186,7 +13603,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getSubsIdOrBuilder() {
-            return getSubsId();
+            return subsId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : subsId_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -14207,7 +13624,7 @@ public final class Monitoring {
             if (subsId_ != null) {
                 output.writeMessage(1, getSubsId());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -14219,7 +13636,7 @@ public final class Monitoring {
             if (subsId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getSubsId());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -14239,7 +13656,7 @@ public final class Monitoring {
                 if (!getSubsId().equals(other.getSubsId()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -14255,7 +13672,7 @@ public final class Monitoring {
                 hash = (37 * hash) + SUBS_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getSubsId().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -14349,26 +13766,19 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.SubscriptionID.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (subsIdBuilder_ == null) {
-                    subsId_ = null;
-                } else {
-                    subsId_ = null;
+                bitField0_ = 0;
+                subsId_ = null;
+                if (subsIdBuilder_ != null) {
+                    subsIdBuilder_.dispose();
                     subsIdBuilder_ = null;
                 }
                 return this;
@@ -14396,43 +13806,18 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.SubscriptionID buildPartial() {
                 monitoring.Monitoring.SubscriptionID result = new monitoring.Monitoring.SubscriptionID(this);
-                if (subsIdBuilder_ == null) {
-                    result.subsId_ = subsId_;
-                } else {
-                    result.subsId_ = subsIdBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.SubscriptionID result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.subsId_ = subsIdBuilder_ == null ? subsId_ : subsIdBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -14451,7 +13836,7 @@ public final class Monitoring {
                 if (other.hasSubsId()) {
                     mergeSubsId(other.getSubsId());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -14463,20 +13848,47 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.SubscriptionID parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getSubsIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.SubscriptionID) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.Uuid subsId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 subsIdBuilder_;
@@ -14486,7 +13898,7 @@ public final class Monitoring {
              * @return Whether the subsId field is set.
              */
             public boolean hasSubsId() {
-                return subsIdBuilder_ != null || subsId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -14510,10 +13922,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     subsId_ = value;
-                    onChanged();
                 } else {
                     subsIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -14523,10 +13936,11 @@ public final class Monitoring {
             public Builder setSubsId(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (subsIdBuilder_ == null) {
                     subsId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     subsIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -14535,15 +13949,16 @@ public final class Monitoring {
              */
             public Builder mergeSubsId(context.ContextOuterClass.Uuid value) {
                 if (subsIdBuilder_ == null) {
-                    if (subsId_ != null) {
-                        subsId_ = context.ContextOuterClass.Uuid.newBuilder(subsId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && subsId_ != null && subsId_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getSubsIdBuilder().mergeFrom(value);
                     } else {
                         subsId_ = value;
                     }
-                    onChanged();
                 } else {
                     subsIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -14551,13 +13966,13 @@ public final class Monitoring {
              * .context.Uuid subs_id = 1;
              */
             public Builder clearSubsId() {
-                if (subsIdBuilder_ == null) {
-                    subsId_ = null;
-                    onChanged();
-                } else {
-                    subsId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                subsId_ = null;
+                if (subsIdBuilder_ != null) {
+                    subsIdBuilder_.dispose();
                     subsIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -14565,6 +13980,7 @@ public final class Monitoring {
              * .context.Uuid subs_id = 1;
              */
             public context.ContextOuterClass.Uuid.Builder getSubsIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getSubsIdFieldBuilder().getBuilder();
             }
@@ -14618,7 +14034,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public SubscriptionID parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new SubscriptionID(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -14697,70 +14123,6 @@ public final class Monitoring {
             return new SubsResponse();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private SubsResponse(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                monitoring.Monitoring.SubscriptionID.Builder subBuilder = null;
-                                if (subsId_ != null) {
-                                    subBuilder = subsId_.toBuilder();
-                                }
-                                subsId_ = input.readMessage(monitoring.Monitoring.SubscriptionID.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(subsId_);
-                                    subsId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                monitoring.Monitoring.KpiList.Builder subBuilder = null;
-                                if (kpiList_ != null) {
-                                    subBuilder = kpiList_.toBuilder();
-                                }
-                                kpiList_ = input.readMessage(monitoring.Monitoring.KpiList.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(kpiList_);
-                                    kpiList_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_SubsResponse_descriptor;
         }
@@ -14797,7 +14159,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder() {
-            return getSubsId();
+            return subsId_ == null ? monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
         }
 
         public static final int KPI_LIST_FIELD_NUMBER = 2;
@@ -14827,7 +14189,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder() {
-            return getKpiList();
+            return kpiList_ == null ? monitoring.Monitoring.KpiList.getDefaultInstance() : kpiList_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -14851,7 +14213,7 @@ public final class Monitoring {
             if (kpiList_ != null) {
                 output.writeMessage(2, getKpiList());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -14866,7 +14228,7 @@ public final class Monitoring {
             if (kpiList_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getKpiList());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -14892,7 +14254,7 @@ public final class Monitoring {
                 if (!getKpiList().equals(other.getKpiList()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -14912,7 +14274,7 @@ public final class Monitoring {
                 hash = (37 * hash) + KPI_LIST_FIELD_NUMBER;
                 hash = (53 * hash) + getKpiList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -15006,32 +14368,24 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.SubsResponse.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (subsIdBuilder_ == null) {
-                    subsId_ = null;
-                } else {
-                    subsId_ = null;
+                bitField0_ = 0;
+                subsId_ = null;
+                if (subsIdBuilder_ != null) {
+                    subsIdBuilder_.dispose();
                     subsIdBuilder_ = null;
                 }
-                if (kpiListBuilder_ == null) {
-                    kpiList_ = null;
-                } else {
-                    kpiList_ = null;
+                kpiList_ = null;
+                if (kpiListBuilder_ != null) {
+                    kpiListBuilder_.dispose();
                     kpiListBuilder_ = null;
                 }
                 return this;
@@ -15059,48 +14413,21 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.SubsResponse buildPartial() {
                 monitoring.Monitoring.SubsResponse result = new monitoring.Monitoring.SubsResponse(this);
-                if (subsIdBuilder_ == null) {
-                    result.subsId_ = subsId_;
-                } else {
-                    result.subsId_ = subsIdBuilder_.build();
-                }
-                if (kpiListBuilder_ == null) {
-                    result.kpiList_ = kpiList_;
-                } else {
-                    result.kpiList_ = kpiListBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.SubsResponse result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.subsId_ = subsIdBuilder_ == null ? subsId_ : subsIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.kpiList_ = kpiListBuilder_ == null ? kpiList_ : kpiListBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -15122,7 +14449,7 @@ public final class Monitoring {
                 if (other.hasKpiList()) {
                     mergeKpiList(other.getKpiList());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -15134,20 +14461,54 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.SubsResponse parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getSubsIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getKpiListFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.SubsResponse) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private monitoring.Monitoring.SubscriptionID subsId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 subsIdBuilder_;
@@ -15157,7 +14518,7 @@ public final class Monitoring {
              * @return Whether the subsId field is set.
              */
             public boolean hasSubsId() {
-                return subsIdBuilder_ != null || subsId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -15181,10 +14542,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     subsId_ = value;
-                    onChanged();
                 } else {
                     subsIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -15194,10 +14556,11 @@ public final class Monitoring {
             public Builder setSubsId(monitoring.Monitoring.SubscriptionID.Builder builderForValue) {
                 if (subsIdBuilder_ == null) {
                     subsId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     subsIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -15206,15 +14569,16 @@ public final class Monitoring {
              */
             public Builder mergeSubsId(monitoring.Monitoring.SubscriptionID value) {
                 if (subsIdBuilder_ == null) {
-                    if (subsId_ != null) {
-                        subsId_ = monitoring.Monitoring.SubscriptionID.newBuilder(subsId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && subsId_ != null && subsId_ != monitoring.Monitoring.SubscriptionID.getDefaultInstance()) {
+                        getSubsIdBuilder().mergeFrom(value);
                     } else {
                         subsId_ = value;
                     }
-                    onChanged();
                 } else {
                     subsIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -15222,13 +14586,13 @@ public final class Monitoring {
              * .monitoring.SubscriptionID subs_id = 1;
              */
             public Builder clearSubsId() {
-                if (subsIdBuilder_ == null) {
-                    subsId_ = null;
-                    onChanged();
-                } else {
-                    subsId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                subsId_ = null;
+                if (subsIdBuilder_ != null) {
+                    subsIdBuilder_.dispose();
                     subsIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -15236,6 +14600,7 @@ public final class Monitoring {
              * .monitoring.SubscriptionID subs_id = 1;
              */
             public monitoring.Monitoring.SubscriptionID.Builder getSubsIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getSubsIdFieldBuilder().getBuilder();
             }
@@ -15271,7 +14636,7 @@ public final class Monitoring {
              * @return Whether the kpiList field is set.
              */
             public boolean hasKpiList() {
-                return kpiListBuilder_ != null || kpiList_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -15295,10 +14660,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiList_ = value;
-                    onChanged();
                 } else {
                     kpiListBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -15308,10 +14674,11 @@ public final class Monitoring {
             public Builder setKpiList(monitoring.Monitoring.KpiList.Builder builderForValue) {
                 if (kpiListBuilder_ == null) {
                     kpiList_ = builderForValue.build();
-                    onChanged();
                 } else {
                     kpiListBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -15320,15 +14687,16 @@ public final class Monitoring {
              */
             public Builder mergeKpiList(monitoring.Monitoring.KpiList value) {
                 if (kpiListBuilder_ == null) {
-                    if (kpiList_ != null) {
-                        kpiList_ = monitoring.Monitoring.KpiList.newBuilder(kpiList_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && kpiList_ != null && kpiList_ != monitoring.Monitoring.KpiList.getDefaultInstance()) {
+                        getKpiListBuilder().mergeFrom(value);
                     } else {
                         kpiList_ = value;
                     }
-                    onChanged();
                 } else {
                     kpiListBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -15336,13 +14704,13 @@ public final class Monitoring {
              * .monitoring.KpiList kpi_list = 2;
              */
             public Builder clearKpiList() {
-                if (kpiListBuilder_ == null) {
-                    kpiList_ = null;
-                    onChanged();
-                } else {
-                    kpiList_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                kpiList_ = null;
+                if (kpiListBuilder_ != null) {
+                    kpiListBuilder_.dispose();
                     kpiListBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -15350,6 +14718,7 @@ public final class Monitoring {
              * .monitoring.KpiList kpi_list = 2;
              */
             public monitoring.Monitoring.KpiList.Builder getKpiListBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getKpiListFieldBuilder().getBuilder();
             }
@@ -15403,7 +14772,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public SubsResponse parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new SubsResponse(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -15460,69 +14839,18 @@ public final class Monitoring {
         private static final long serialVersionUID = 0L;
 
         // Use SubsList.newBuilder() to construct.
-        private SubsList(com.google.protobuf.GeneratedMessageV3.Builder builder) {
-            super(builder);
-        }
-
-        private SubsList() {
-            subsDescriptor_ = java.util.Collections.emptyList();
-        }
-
-        @java.lang.Override
-        @SuppressWarnings({ "unused" })
-        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
-            return new SubsList();
-        }
-
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private SubsList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    subsDescriptor_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                subsDescriptor_.add(input.readMessage(monitoring.Monitoring.SubsDescriptor.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    subsDescriptor_ = java.util.Collections.unmodifiableList(subsDescriptor_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
+        private SubsList(com.google.protobuf.GeneratedMessageV3.Builder builder) {
+            super(builder);
+        }
+
+        private SubsList() {
+            subsDescriptor_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new SubsList();
         }
 
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
@@ -15536,6 +14864,7 @@ public final class Monitoring {
 
         public static final int SUBS_DESCRIPTOR_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List subsDescriptor_;
 
         /**
@@ -15596,7 +14925,7 @@ public final class Monitoring {
             for (int i = 0; i < subsDescriptor_.size(); i++) {
                 output.writeMessage(1, subsDescriptor_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -15608,7 +14937,7 @@ public final class Monitoring {
             for (int i = 0; i < subsDescriptor_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, subsDescriptor_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -15624,7 +14953,7 @@ public final class Monitoring {
             monitoring.Monitoring.SubsList other = (monitoring.Monitoring.SubsList) obj;
             if (!getSubsDescriptorList().equals(other.getSubsDescriptorList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -15640,7 +14969,7 @@ public final class Monitoring {
                 hash = (37 * hash) + SUBS_DESCRIPTOR_FIELD_NUMBER;
                 hash = (53 * hash) + getSubsDescriptorList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -15734,29 +15063,23 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.SubsList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getSubsDescriptorFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (subsDescriptorBuilder_ == null) {
                     subsDescriptor_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    subsDescriptor_ = null;
                     subsDescriptorBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -15782,7 +15105,15 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.SubsList buildPartial() {
                 monitoring.Monitoring.SubsList result = new monitoring.Monitoring.SubsList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(monitoring.Monitoring.SubsList result) {
                 if (subsDescriptorBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         subsDescriptor_ = java.util.Collections.unmodifiableList(subsDescriptor_);
@@ -15792,38 +15123,10 @@ public final class Monitoring {
                 } else {
                     result.subsDescriptor_ = subsDescriptorBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
             }
 
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.SubsList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -15863,7 +15166,7 @@ public final class Monitoring {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -15875,17 +15178,47 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.SubsList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    monitoring.Monitoring.SubsDescriptor m = input.readMessage(monitoring.Monitoring.SubsDescriptor.parser(), extensionRegistry);
+                                    if (subsDescriptorBuilder_ == null) {
+                                        ensureSubsDescriptorIsMutable();
+                                        subsDescriptor_.add(m);
+                                    } else {
+                                        subsDescriptorBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.SubsList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -16155,7 +15488,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public SubsList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new SubsList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -16294,108 +15637,6 @@ public final class Monitoring {
             return new AlarmDescriptor();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private AlarmDescriptor(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                monitoring.Monitoring.AlarmID.Builder subBuilder = null;
-                                if (alarmId_ != null) {
-                                    subBuilder = alarmId_.toBuilder();
-                                }
-                                alarmId_ = input.readMessage(monitoring.Monitoring.AlarmID.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(alarmId_);
-                                    alarmId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                alarmDescription_ = s;
-                                break;
-                            }
-                        case 26:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                name_ = s;
-                                break;
-                            }
-                        case 34:
-                            {
-                                monitoring.Monitoring.KpiId.Builder subBuilder = null;
-                                if (kpiId_ != null) {
-                                    subBuilder = kpiId_.toBuilder();
-                                }
-                                kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(kpiId_);
-                                    kpiId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 42:
-                            {
-                                monitoring.Monitoring.KpiValueRange.Builder subBuilder = null;
-                                if (kpiValueRange_ != null) {
-                                    subBuilder = kpiValueRange_.toBuilder();
-                                }
-                                kpiValueRange_ = input.readMessage(monitoring.Monitoring.KpiValueRange.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(kpiValueRange_);
-                                    kpiValueRange_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 50:
-                            {
-                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-                                if (timestamp_ != null) {
-                                    subBuilder = timestamp_.toBuilder();
-                                }
-                                timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(timestamp_);
-                                    timestamp_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_AlarmDescriptor_descriptor;
         }
@@ -16432,12 +15673,13 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder() {
-            return getAlarmId();
+            return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
         }
 
         public static final int ALARM_DESCRIPTION_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object alarmDescription_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object alarmDescription_ = "";
 
         /**
          * string alarm_description = 2;
@@ -16474,7 +15716,8 @@ public final class Monitoring {
 
         public static final int NAME_FIELD_NUMBER = 3;
 
-        private volatile java.lang.Object name_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object name_ = "";
 
         /**
          * string name = 3;
@@ -16536,7 +15779,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-            return getKpiId();
+            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
         }
 
         public static final int KPI_VALUE_RANGE_FIELD_NUMBER = 5;
@@ -16566,7 +15809,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiValueRangeOrBuilder getKpiValueRangeOrBuilder() {
-            return getKpiValueRange();
+            return kpiValueRange_ == null ? monitoring.Monitoring.KpiValueRange.getDefaultInstance() : kpiValueRange_;
         }
 
         public static final int TIMESTAMP_FIELD_NUMBER = 6;
@@ -16596,7 +15839,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-            return getTimestamp();
+            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -16617,10 +15860,10 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 output.writeMessage(1, getAlarmId());
             }
-            if (!getAlarmDescriptionBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(alarmDescription_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, alarmDescription_);
             }
-            if (!getNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 3, name_);
             }
             if (kpiId_ != null) {
@@ -16632,7 +15875,7 @@ public final class Monitoring {
             if (timestamp_ != null) {
                 output.writeMessage(6, getTimestamp());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -16644,10 +15887,10 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getAlarmId());
             }
-            if (!getAlarmDescriptionBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(alarmDescription_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, alarmDescription_);
             }
-            if (!getNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, name_);
             }
             if (kpiId_ != null) {
@@ -16659,7 +15902,7 @@ public final class Monitoring {
             if (timestamp_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, getTimestamp());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -16701,7 +15944,7 @@ public final class Monitoring {
                 if (!getTimestamp().equals(other.getTimestamp()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -16733,7 +15976,7 @@ public final class Monitoring {
                 hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
                 hash = (53 * hash) + getTimestamp().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -16827,46 +16070,36 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.AlarmDescriptor.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (alarmIdBuilder_ == null) {
-                    alarmId_ = null;
-                } else {
-                    alarmId_ = null;
+                bitField0_ = 0;
+                alarmId_ = null;
+                if (alarmIdBuilder_ != null) {
+                    alarmIdBuilder_.dispose();
                     alarmIdBuilder_ = null;
                 }
                 alarmDescription_ = "";
                 name_ = "";
-                if (kpiIdBuilder_ == null) {
-                    kpiId_ = null;
-                } else {
-                    kpiId_ = null;
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
                     kpiIdBuilder_ = null;
                 }
-                if (kpiValueRangeBuilder_ == null) {
-                    kpiValueRange_ = null;
-                } else {
-                    kpiValueRange_ = null;
+                kpiValueRange_ = null;
+                if (kpiValueRangeBuilder_ != null) {
+                    kpiValueRangeBuilder_.dispose();
                     kpiValueRangeBuilder_ = null;
                 }
-                if (timestampBuilder_ == null) {
-                    timestamp_ = null;
-                } else {
-                    timestamp_ = null;
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
                     timestampBuilder_ = null;
                 }
                 return this;
@@ -16894,60 +16127,33 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.AlarmDescriptor buildPartial() {
                 monitoring.Monitoring.AlarmDescriptor result = new monitoring.Monitoring.AlarmDescriptor(this);
-                if (alarmIdBuilder_ == null) {
-                    result.alarmId_ = alarmId_;
-                } else {
-                    result.alarmId_ = alarmIdBuilder_.build();
-                }
-                result.alarmDescription_ = alarmDescription_;
-                result.name_ = name_;
-                if (kpiIdBuilder_ == null) {
-                    result.kpiId_ = kpiId_;
-                } else {
-                    result.kpiId_ = kpiIdBuilder_.build();
-                }
-                if (kpiValueRangeBuilder_ == null) {
-                    result.kpiValueRange_ = kpiValueRange_;
-                } else {
-                    result.kpiValueRange_ = kpiValueRangeBuilder_.build();
-                }
-                if (timestampBuilder_ == null) {
-                    result.timestamp_ = timestamp_;
-                } else {
-                    result.timestamp_ = timestampBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.AlarmDescriptor result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.alarmId_ = alarmIdBuilder_ == null ? alarmId_ : alarmIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.alarmDescription_ = alarmDescription_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.name_ = name_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.kpiValueRange_ = kpiValueRangeBuilder_ == null ? kpiValueRange_ : kpiValueRangeBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000020) != 0)) {
+                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -16968,10 +16174,12 @@ public final class Monitoring {
                 }
                 if (!other.getAlarmDescription().isEmpty()) {
                     alarmDescription_ = other.alarmDescription_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
+                    bitField0_ |= 0x00000004;
                     onChanged();
                 }
                 if (other.hasKpiId()) {
@@ -16983,7 +16191,7 @@ public final class Monitoring {
                 if (other.hasTimestamp()) {
                     mergeTimestamp(other.getTimestamp());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -16995,20 +16203,82 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.AlarmDescriptor parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getAlarmIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    alarmDescription_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    name_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 34
+                            case 42:
+                                {
+                                    input.readMessage(getKpiValueRangeFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 42
+                            case 50:
+                                {
+                                    input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000020;
+                                    break;
+                                }
+                            // case 50
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.AlarmDescriptor) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private monitoring.Monitoring.AlarmID alarmId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 alarmIdBuilder_;
@@ -17018,7 +16288,7 @@ public final class Monitoring {
              * @return Whether the alarmId field is set.
              */
             public boolean hasAlarmId() {
-                return alarmIdBuilder_ != null || alarmId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -17042,10 +16312,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     alarmId_ = value;
-                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -17055,10 +16326,11 @@ public final class Monitoring {
             public Builder setAlarmId(monitoring.Monitoring.AlarmID.Builder builderForValue) {
                 if (alarmIdBuilder_ == null) {
                     alarmId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -17067,15 +16339,16 @@ public final class Monitoring {
              */
             public Builder mergeAlarmId(monitoring.Monitoring.AlarmID value) {
                 if (alarmIdBuilder_ == null) {
-                    if (alarmId_ != null) {
-                        alarmId_ = monitoring.Monitoring.AlarmID.newBuilder(alarmId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && alarmId_ != null && alarmId_ != monitoring.Monitoring.AlarmID.getDefaultInstance()) {
+                        getAlarmIdBuilder().mergeFrom(value);
                     } else {
                         alarmId_ = value;
                     }
-                    onChanged();
                 } else {
                     alarmIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -17083,13 +16356,13 @@ public final class Monitoring {
              * .monitoring.AlarmID alarm_id = 1;
              */
             public Builder clearAlarmId() {
-                if (alarmIdBuilder_ == null) {
-                    alarmId_ = null;
-                    onChanged();
-                } else {
-                    alarmId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                alarmId_ = null;
+                if (alarmIdBuilder_ != null) {
+                    alarmIdBuilder_.dispose();
                     alarmIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -17097,6 +16370,7 @@ public final class Monitoring {
              * .monitoring.AlarmID alarm_id = 1;
              */
             public monitoring.Monitoring.AlarmID.Builder getAlarmIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getAlarmIdFieldBuilder().getBuilder();
             }
@@ -17166,6 +16440,7 @@ public final class Monitoring {
                     throw new NullPointerException();
                 }
                 alarmDescription_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -17176,6 +16451,7 @@ public final class Monitoring {
              */
             public Builder clearAlarmDescription() {
                 alarmDescription_ = getDefaultInstance().getAlarmDescription();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -17191,6 +16467,7 @@ public final class Monitoring {
                 }
                 checkByteStringIsUtf8(value);
                 alarmDescription_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -17238,6 +16515,7 @@ public final class Monitoring {
                     throw new NullPointerException();
                 }
                 name_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -17248,6 +16526,7 @@ public final class Monitoring {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
+                bitField0_ = (bitField0_ & ~0x00000004);
                 onChanged();
                 return this;
             }
@@ -17263,6 +16542,7 @@ public final class Monitoring {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -17276,7 +16556,7 @@ public final class Monitoring {
              * @return Whether the kpiId field is set.
              */
             public boolean hasKpiId() {
-                return kpiIdBuilder_ != null || kpiId_ != null;
+                return ((bitField0_ & 0x00000008) != 0);
             }
 
             /**
@@ -17300,10 +16580,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiId_ = value;
-                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000008;
+                onChanged();
                 return this;
             }
 
@@ -17313,10 +16594,11 @@ public final class Monitoring {
             public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
                 if (kpiIdBuilder_ == null) {
                     kpiId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000008;
+                onChanged();
                 return this;
             }
 
@@ -17325,15 +16607,16 @@ public final class Monitoring {
              */
             public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
                 if (kpiIdBuilder_ == null) {
-                    if (kpiId_ != null) {
-                        kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000008) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
+                        getKpiIdBuilder().mergeFrom(value);
                     } else {
                         kpiId_ = value;
                     }
-                    onChanged();
                 } else {
                     kpiIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000008;
+                onChanged();
                 return this;
             }
 
@@ -17341,13 +16624,13 @@ public final class Monitoring {
              * .monitoring.KpiId kpi_id = 4;
              */
             public Builder clearKpiId() {
-                if (kpiIdBuilder_ == null) {
-                    kpiId_ = null;
-                    onChanged();
-                } else {
-                    kpiId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000008);
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
                     kpiIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -17355,6 +16638,7 @@ public final class Monitoring {
              * .monitoring.KpiId kpi_id = 4;
              */
             public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return getKpiIdFieldBuilder().getBuilder();
             }
@@ -17390,7 +16674,7 @@ public final class Monitoring {
              * @return Whether the kpiValueRange field is set.
              */
             public boolean hasKpiValueRange() {
-                return kpiValueRangeBuilder_ != null || kpiValueRange_ != null;
+                return ((bitField0_ & 0x00000010) != 0);
             }
 
             /**
@@ -17414,10 +16698,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiValueRange_ = value;
-                    onChanged();
                 } else {
                     kpiValueRangeBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -17427,10 +16712,11 @@ public final class Monitoring {
             public Builder setKpiValueRange(monitoring.Monitoring.KpiValueRange.Builder builderForValue) {
                 if (kpiValueRangeBuilder_ == null) {
                     kpiValueRange_ = builderForValue.build();
-                    onChanged();
                 } else {
                     kpiValueRangeBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -17439,15 +16725,16 @@ public final class Monitoring {
              */
             public Builder mergeKpiValueRange(monitoring.Monitoring.KpiValueRange value) {
                 if (kpiValueRangeBuilder_ == null) {
-                    if (kpiValueRange_ != null) {
-                        kpiValueRange_ = monitoring.Monitoring.KpiValueRange.newBuilder(kpiValueRange_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000010) != 0) && kpiValueRange_ != null && kpiValueRange_ != monitoring.Monitoring.KpiValueRange.getDefaultInstance()) {
+                        getKpiValueRangeBuilder().mergeFrom(value);
                     } else {
                         kpiValueRange_ = value;
                     }
-                    onChanged();
                 } else {
                     kpiValueRangeBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -17455,13 +16742,13 @@ public final class Monitoring {
              * .monitoring.KpiValueRange kpi_value_range = 5;
              */
             public Builder clearKpiValueRange() {
-                if (kpiValueRangeBuilder_ == null) {
-                    kpiValueRange_ = null;
-                    onChanged();
-                } else {
-                    kpiValueRange_ = null;
+                bitField0_ = (bitField0_ & ~0x00000010);
+                kpiValueRange_ = null;
+                if (kpiValueRangeBuilder_ != null) {
+                    kpiValueRangeBuilder_.dispose();
                     kpiValueRangeBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -17469,6 +16756,7 @@ public final class Monitoring {
              * .monitoring.KpiValueRange kpi_value_range = 5;
              */
             public monitoring.Monitoring.KpiValueRange.Builder getKpiValueRangeBuilder() {
+                bitField0_ |= 0x00000010;
                 onChanged();
                 return getKpiValueRangeFieldBuilder().getBuilder();
             }
@@ -17504,7 +16792,7 @@ public final class Monitoring {
              * @return Whether the timestamp field is set.
              */
             public boolean hasTimestamp() {
-                return timestampBuilder_ != null || timestamp_ != null;
+                return ((bitField0_ & 0x00000020) != 0);
             }
 
             /**
@@ -17528,10 +16816,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     timestamp_ = value;
-                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000020;
+                onChanged();
                 return this;
             }
 
@@ -17541,10 +16830,11 @@ public final class Monitoring {
             public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (timestampBuilder_ == null) {
                     timestamp_ = builderForValue.build();
-                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000020;
+                onChanged();
                 return this;
             }
 
@@ -17553,15 +16843,16 @@ public final class Monitoring {
              */
             public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (timestampBuilder_ == null) {
-                    if (timestamp_ != null) {
-                        timestamp_ = context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000020) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
+                        getTimestampBuilder().mergeFrom(value);
                     } else {
                         timestamp_ = value;
                     }
-                    onChanged();
                 } else {
                     timestampBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000020;
+                onChanged();
                 return this;
             }
 
@@ -17569,13 +16860,13 @@ public final class Monitoring {
              * .context.Timestamp timestamp = 6;
              */
             public Builder clearTimestamp() {
-                if (timestampBuilder_ == null) {
-                    timestamp_ = null;
-                    onChanged();
-                } else {
-                    timestamp_ = null;
+                bitField0_ = (bitField0_ & ~0x00000020);
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
                     timestampBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -17583,6 +16874,7 @@ public final class Monitoring {
              * .context.Timestamp timestamp = 6;
              */
             public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
+                bitField0_ |= 0x00000020;
                 onChanged();
                 return getTimestampFieldBuilder().getBuilder();
             }
@@ -17636,7 +16928,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public AlarmDescriptor parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new AlarmDescriptor(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -17698,57 +17000,6 @@ public final class Monitoring {
             return new AlarmID();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private AlarmID(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
-                                if (alarmId_ != null) {
-                                    subBuilder = alarmId_.toBuilder();
-                                }
-                                alarmId_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(alarmId_);
-                                    alarmId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_AlarmID_descriptor;
         }
@@ -17785,7 +17036,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getAlarmIdOrBuilder() {
-            return getAlarmId();
+            return alarmId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : alarmId_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -17806,7 +17057,7 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 output.writeMessage(1, getAlarmId());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -17818,7 +17069,7 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getAlarmId());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -17838,7 +17089,7 @@ public final class Monitoring {
                 if (!getAlarmId().equals(other.getAlarmId()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -17854,7 +17105,7 @@ public final class Monitoring {
                 hash = (37 * hash) + ALARM_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getAlarmId().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -17948,26 +17199,19 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.AlarmID.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (alarmIdBuilder_ == null) {
-                    alarmId_ = null;
-                } else {
-                    alarmId_ = null;
+                bitField0_ = 0;
+                alarmId_ = null;
+                if (alarmIdBuilder_ != null) {
+                    alarmIdBuilder_.dispose();
                     alarmIdBuilder_ = null;
                 }
                 return this;
@@ -17995,43 +17239,18 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.AlarmID buildPartial() {
                 monitoring.Monitoring.AlarmID result = new monitoring.Monitoring.AlarmID(this);
-                if (alarmIdBuilder_ == null) {
-                    result.alarmId_ = alarmId_;
-                } else {
-                    result.alarmId_ = alarmIdBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.AlarmID result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.alarmId_ = alarmIdBuilder_ == null ? alarmId_ : alarmIdBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -18050,7 +17269,7 @@ public final class Monitoring {
                 if (other.hasAlarmId()) {
                     mergeAlarmId(other.getAlarmId());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -18062,20 +17281,47 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.AlarmID parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getAlarmIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.AlarmID) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.Uuid alarmId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 alarmIdBuilder_;
@@ -18085,7 +17331,7 @@ public final class Monitoring {
              * @return Whether the alarmId field is set.
              */
             public boolean hasAlarmId() {
-                return alarmIdBuilder_ != null || alarmId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -18109,10 +17355,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     alarmId_ = value;
-                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -18122,10 +17369,11 @@ public final class Monitoring {
             public Builder setAlarmId(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (alarmIdBuilder_ == null) {
                     alarmId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -18134,15 +17382,16 @@ public final class Monitoring {
              */
             public Builder mergeAlarmId(context.ContextOuterClass.Uuid value) {
                 if (alarmIdBuilder_ == null) {
-                    if (alarmId_ != null) {
-                        alarmId_ = context.ContextOuterClass.Uuid.newBuilder(alarmId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && alarmId_ != null && alarmId_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getAlarmIdBuilder().mergeFrom(value);
                     } else {
                         alarmId_ = value;
                     }
-                    onChanged();
                 } else {
                     alarmIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -18150,13 +17399,13 @@ public final class Monitoring {
              * .context.Uuid alarm_id = 1;
              */
             public Builder clearAlarmId() {
-                if (alarmIdBuilder_ == null) {
-                    alarmId_ = null;
-                    onChanged();
-                } else {
-                    alarmId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                alarmId_ = null;
+                if (alarmIdBuilder_ != null) {
+                    alarmIdBuilder_.dispose();
                     alarmIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -18164,6 +17413,7 @@ public final class Monitoring {
              * .context.Uuid alarm_id = 1;
              */
             public context.ContextOuterClass.Uuid.Builder getAlarmIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getAlarmIdFieldBuilder().getBuilder();
             }
@@ -18217,7 +17467,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public AlarmID parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new AlarmID(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -18291,67 +17551,6 @@ public final class Monitoring {
             return new AlarmSubscription();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private AlarmSubscription(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                monitoring.Monitoring.AlarmID.Builder subBuilder = null;
-                                if (alarmId_ != null) {
-                                    subBuilder = alarmId_.toBuilder();
-                                }
-                                alarmId_ = input.readMessage(monitoring.Monitoring.AlarmID.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(alarmId_);
-                                    alarmId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 21:
-                            {
-                                subscriptionTimeoutS_ = input.readFloat();
-                                break;
-                            }
-                        case 29:
-                            {
-                                subscriptionFrequencyMs_ = input.readFloat();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_AlarmSubscription_descriptor;
         }
@@ -18388,12 +17587,12 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder() {
-            return getAlarmId();
+            return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
         }
 
         public static final int SUBSCRIPTION_TIMEOUT_S_FIELD_NUMBER = 2;
 
-        private float subscriptionTimeoutS_;
+        private float subscriptionTimeoutS_ = 0F;
 
         /**
          * float subscription_timeout_s = 2;
@@ -18406,7 +17605,7 @@ public final class Monitoring {
 
         public static final int SUBSCRIPTION_FREQUENCY_MS_FIELD_NUMBER = 3;
 
-        private float subscriptionFrequencyMs_;
+        private float subscriptionFrequencyMs_ = 0F;
 
         /**
          * float subscription_frequency_ms = 3;
@@ -18435,13 +17634,13 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 output.writeMessage(1, getAlarmId());
             }
-            if (subscriptionTimeoutS_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(subscriptionTimeoutS_) != 0) {
                 output.writeFloat(2, subscriptionTimeoutS_);
             }
-            if (subscriptionFrequencyMs_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(subscriptionFrequencyMs_) != 0) {
                 output.writeFloat(3, subscriptionFrequencyMs_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -18453,13 +17652,13 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getAlarmId());
             }
-            if (subscriptionTimeoutS_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(subscriptionTimeoutS_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, subscriptionTimeoutS_);
             }
-            if (subscriptionFrequencyMs_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(subscriptionFrequencyMs_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(3, subscriptionFrequencyMs_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -18483,7 +17682,7 @@ public final class Monitoring {
                 return false;
             if (java.lang.Float.floatToIntBits(getSubscriptionFrequencyMs()) != java.lang.Float.floatToIntBits(other.getSubscriptionFrequencyMs()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -18503,7 +17702,7 @@ public final class Monitoring {
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getSubscriptionTimeoutS());
             hash = (37 * hash) + SUBSCRIPTION_FREQUENCY_MS_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getSubscriptionFrequencyMs());
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -18597,26 +17796,19 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.AlarmSubscription.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (alarmIdBuilder_ == null) {
-                    alarmId_ = null;
-                } else {
-                    alarmId_ = null;
+                bitField0_ = 0;
+                alarmId_ = null;
+                if (alarmIdBuilder_ != null) {
+                    alarmIdBuilder_.dispose();
                     alarmIdBuilder_ = null;
                 }
                 subscriptionTimeoutS_ = 0F;
@@ -18646,45 +17838,24 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.AlarmSubscription buildPartial() {
                 monitoring.Monitoring.AlarmSubscription result = new monitoring.Monitoring.AlarmSubscription(this);
-                if (alarmIdBuilder_ == null) {
-                    result.alarmId_ = alarmId_;
-                } else {
-                    result.alarmId_ = alarmIdBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.subscriptionTimeoutS_ = subscriptionTimeoutS_;
-                result.subscriptionFrequencyMs_ = subscriptionFrequencyMs_;
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.AlarmSubscription result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.alarmId_ = alarmIdBuilder_ == null ? alarmId_ : alarmIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.subscriptionTimeoutS_ = subscriptionTimeoutS_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.subscriptionFrequencyMs_ = subscriptionFrequencyMs_;
+                }
             }
 
             @java.lang.Override
@@ -18709,7 +17880,7 @@ public final class Monitoring {
                 if (other.getSubscriptionFrequencyMs() != 0F) {
                     setSubscriptionFrequencyMs(other.getSubscriptionFrequencyMs());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -18721,20 +17892,61 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.AlarmSubscription parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getAlarmIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 21:
+                                {
+                                    subscriptionTimeoutS_ = input.readFloat();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 21
+                            case 29:
+                                {
+                                    subscriptionFrequencyMs_ = input.readFloat();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 29
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.AlarmSubscription) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private monitoring.Monitoring.AlarmID alarmId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 alarmIdBuilder_;
@@ -18744,7 +17956,7 @@ public final class Monitoring {
              * @return Whether the alarmId field is set.
              */
             public boolean hasAlarmId() {
-                return alarmIdBuilder_ != null || alarmId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -18768,10 +17980,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     alarmId_ = value;
-                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -18781,10 +17994,11 @@ public final class Monitoring {
             public Builder setAlarmId(monitoring.Monitoring.AlarmID.Builder builderForValue) {
                 if (alarmIdBuilder_ == null) {
                     alarmId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -18793,15 +18007,16 @@ public final class Monitoring {
              */
             public Builder mergeAlarmId(monitoring.Monitoring.AlarmID value) {
                 if (alarmIdBuilder_ == null) {
-                    if (alarmId_ != null) {
-                        alarmId_ = monitoring.Monitoring.AlarmID.newBuilder(alarmId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && alarmId_ != null && alarmId_ != monitoring.Monitoring.AlarmID.getDefaultInstance()) {
+                        getAlarmIdBuilder().mergeFrom(value);
                     } else {
                         alarmId_ = value;
                     }
-                    onChanged();
                 } else {
                     alarmIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -18809,13 +18024,13 @@ public final class Monitoring {
              * .monitoring.AlarmID alarm_id = 1;
              */
             public Builder clearAlarmId() {
-                if (alarmIdBuilder_ == null) {
-                    alarmId_ = null;
-                    onChanged();
-                } else {
-                    alarmId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                alarmId_ = null;
+                if (alarmIdBuilder_ != null) {
+                    alarmIdBuilder_.dispose();
                     alarmIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -18823,6 +18038,7 @@ public final class Monitoring {
              * .monitoring.AlarmID alarm_id = 1;
              */
             public monitoring.Monitoring.AlarmID.Builder getAlarmIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getAlarmIdFieldBuilder().getBuilder();
             }
@@ -18867,6 +18083,7 @@ public final class Monitoring {
              */
             public Builder setSubscriptionTimeoutS(float value) {
                 subscriptionTimeoutS_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -18876,6 +18093,7 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearSubscriptionTimeoutS() {
+                bitField0_ = (bitField0_ & ~0x00000002);
                 subscriptionTimeoutS_ = 0F;
                 onChanged();
                 return this;
@@ -18899,6 +18117,7 @@ public final class Monitoring {
              */
             public Builder setSubscriptionFrequencyMs(float value) {
                 subscriptionFrequencyMs_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -18908,6 +18127,7 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearSubscriptionFrequencyMs() {
+                bitField0_ = (bitField0_ & ~0x00000004);
                 subscriptionFrequencyMs_ = 0F;
                 onChanged();
                 return this;
@@ -18940,7 +18160,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public AlarmSubscription parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new AlarmSubscription(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -19032,76 +18262,6 @@ public final class Monitoring {
             return new AlarmResponse();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private AlarmResponse(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                monitoring.Monitoring.AlarmID.Builder subBuilder = null;
-                                if (alarmId_ != null) {
-                                    subBuilder = alarmId_.toBuilder();
-                                }
-                                alarmId_ = input.readMessage(monitoring.Monitoring.AlarmID.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(alarmId_);
-                                    alarmId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                text_ = s;
-                                break;
-                            }
-                        case 26:
-                            {
-                                monitoring.Monitoring.KpiList.Builder subBuilder = null;
-                                if (kpiList_ != null) {
-                                    subBuilder = kpiList_.toBuilder();
-                                }
-                                kpiList_ = input.readMessage(monitoring.Monitoring.KpiList.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(kpiList_);
-                                    kpiList_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_AlarmResponse_descriptor;
         }
@@ -19138,12 +18298,13 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder() {
-            return getAlarmId();
+            return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
         }
 
         public static final int TEXT_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object text_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object text_ = "";
 
         /**
          * string text = 2;
@@ -19205,7 +18366,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder() {
-            return getKpiList();
+            return kpiList_ == null ? monitoring.Monitoring.KpiList.getDefaultInstance() : kpiList_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -19226,13 +18387,13 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 output.writeMessage(1, getAlarmId());
             }
-            if (!getTextBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(text_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, text_);
             }
             if (kpiList_ != null) {
                 output.writeMessage(3, getKpiList());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -19244,13 +18405,13 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getAlarmId());
             }
-            if (!getTextBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(text_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, text_);
             }
             if (kpiList_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getKpiList());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -19278,7 +18439,7 @@ public final class Monitoring {
                 if (!getKpiList().equals(other.getKpiList()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -19300,7 +18461,7 @@ public final class Monitoring {
                 hash = (37 * hash) + KPI_LIST_FIELD_NUMBER;
                 hash = (53 * hash) + getKpiList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -19394,33 +18555,25 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.AlarmResponse.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (alarmIdBuilder_ == null) {
-                    alarmId_ = null;
-                } else {
-                    alarmId_ = null;
+                bitField0_ = 0;
+                alarmId_ = null;
+                if (alarmIdBuilder_ != null) {
+                    alarmIdBuilder_.dispose();
                     alarmIdBuilder_ = null;
                 }
                 text_ = "";
-                if (kpiListBuilder_ == null) {
-                    kpiList_ = null;
-                } else {
-                    kpiList_ = null;
+                kpiList_ = null;
+                if (kpiListBuilder_ != null) {
+                    kpiListBuilder_.dispose();
                     kpiListBuilder_ = null;
                 }
                 return this;
@@ -19448,49 +18601,24 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.AlarmResponse buildPartial() {
                 monitoring.Monitoring.AlarmResponse result = new monitoring.Monitoring.AlarmResponse(this);
-                if (alarmIdBuilder_ == null) {
-                    result.alarmId_ = alarmId_;
-                } else {
-                    result.alarmId_ = alarmIdBuilder_.build();
-                }
-                result.text_ = text_;
-                if (kpiListBuilder_ == null) {
-                    result.kpiList_ = kpiList_;
-                } else {
-                    result.kpiList_ = kpiListBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.AlarmResponse result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.alarmId_ = alarmIdBuilder_ == null ? alarmId_ : alarmIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.text_ = text_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.kpiList_ = kpiListBuilder_ == null ? kpiList_ : kpiListBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -19511,12 +18639,13 @@ public final class Monitoring {
                 }
                 if (!other.getText().isEmpty()) {
                     text_ = other.text_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (other.hasKpiList()) {
                     mergeKpiList(other.getKpiList());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -19528,20 +18657,61 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.AlarmResponse parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getAlarmIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    text_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    input.readMessage(getKpiListFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.AlarmResponse) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private monitoring.Monitoring.AlarmID alarmId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 alarmIdBuilder_;
@@ -19551,7 +18721,7 @@ public final class Monitoring {
              * @return Whether the alarmId field is set.
              */
             public boolean hasAlarmId() {
-                return alarmIdBuilder_ != null || alarmId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -19575,10 +18745,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     alarmId_ = value;
-                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -19588,10 +18759,11 @@ public final class Monitoring {
             public Builder setAlarmId(monitoring.Monitoring.AlarmID.Builder builderForValue) {
                 if (alarmIdBuilder_ == null) {
                     alarmId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -19600,15 +18772,16 @@ public final class Monitoring {
              */
             public Builder mergeAlarmId(monitoring.Monitoring.AlarmID value) {
                 if (alarmIdBuilder_ == null) {
-                    if (alarmId_ != null) {
-                        alarmId_ = monitoring.Monitoring.AlarmID.newBuilder(alarmId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && alarmId_ != null && alarmId_ != monitoring.Monitoring.AlarmID.getDefaultInstance()) {
+                        getAlarmIdBuilder().mergeFrom(value);
                     } else {
                         alarmId_ = value;
                     }
-                    onChanged();
                 } else {
                     alarmIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -19616,13 +18789,13 @@ public final class Monitoring {
              * .monitoring.AlarmID alarm_id = 1;
              */
             public Builder clearAlarmId() {
-                if (alarmIdBuilder_ == null) {
-                    alarmId_ = null;
-                    onChanged();
-                } else {
-                    alarmId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                alarmId_ = null;
+                if (alarmIdBuilder_ != null) {
+                    alarmIdBuilder_.dispose();
                     alarmIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -19630,6 +18803,7 @@ public final class Monitoring {
              * .monitoring.AlarmID alarm_id = 1;
              */
             public monitoring.Monitoring.AlarmID.Builder getAlarmIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getAlarmIdFieldBuilder().getBuilder();
             }
@@ -19699,6 +18873,7 @@ public final class Monitoring {
                     throw new NullPointerException();
                 }
                 text_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -19709,6 +18884,7 @@ public final class Monitoring {
              */
             public Builder clearText() {
                 text_ = getDefaultInstance().getText();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -19724,6 +18900,7 @@ public final class Monitoring {
                 }
                 checkByteStringIsUtf8(value);
                 text_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -19737,7 +18914,7 @@ public final class Monitoring {
              * @return Whether the kpiList field is set.
              */
             public boolean hasKpiList() {
-                return kpiListBuilder_ != null || kpiList_ != null;
+                return ((bitField0_ & 0x00000004) != 0);
             }
 
             /**
@@ -19761,10 +18938,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiList_ = value;
-                    onChanged();
                 } else {
                     kpiListBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -19774,10 +18952,11 @@ public final class Monitoring {
             public Builder setKpiList(monitoring.Monitoring.KpiList.Builder builderForValue) {
                 if (kpiListBuilder_ == null) {
                     kpiList_ = builderForValue.build();
-                    onChanged();
                 } else {
                     kpiListBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -19786,15 +18965,16 @@ public final class Monitoring {
              */
             public Builder mergeKpiList(monitoring.Monitoring.KpiList value) {
                 if (kpiListBuilder_ == null) {
-                    if (kpiList_ != null) {
-                        kpiList_ = monitoring.Monitoring.KpiList.newBuilder(kpiList_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000004) != 0) && kpiList_ != null && kpiList_ != monitoring.Monitoring.KpiList.getDefaultInstance()) {
+                        getKpiListBuilder().mergeFrom(value);
                     } else {
                         kpiList_ = value;
                     }
-                    onChanged();
                 } else {
                     kpiListBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -19802,13 +18982,13 @@ public final class Monitoring {
              * .monitoring.KpiList kpi_list = 3;
              */
             public Builder clearKpiList() {
-                if (kpiListBuilder_ == null) {
-                    kpiList_ = null;
-                    onChanged();
-                } else {
-                    kpiList_ = null;
+                bitField0_ = (bitField0_ & ~0x00000004);
+                kpiList_ = null;
+                if (kpiListBuilder_ != null) {
+                    kpiListBuilder_.dispose();
                     kpiListBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -19816,6 +18996,7 @@ public final class Monitoring {
              * .monitoring.KpiList kpi_list = 3;
              */
             public monitoring.Monitoring.KpiList.Builder getKpiListBuilder() {
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return getKpiListFieldBuilder().getBuilder();
             }
@@ -19869,7 +19050,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public AlarmResponse parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new AlarmResponse(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -19940,57 +19131,6 @@ public final class Monitoring {
             return new AlarmList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private AlarmList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    alarmDescriptor_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                alarmDescriptor_.add(input.readMessage(monitoring.Monitoring.AlarmDescriptor.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    alarmDescriptor_ = java.util.Collections.unmodifiableList(alarmDescriptor_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_AlarmList_descriptor;
         }
@@ -20002,6 +19142,7 @@ public final class Monitoring {
 
         public static final int ALARM_DESCRIPTOR_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List alarmDescriptor_;
 
         /**
@@ -20062,7 +19203,7 @@ public final class Monitoring {
             for (int i = 0; i < alarmDescriptor_.size(); i++) {
                 output.writeMessage(1, alarmDescriptor_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -20074,7 +19215,7 @@ public final class Monitoring {
             for (int i = 0; i < alarmDescriptor_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, alarmDescriptor_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -20090,7 +19231,7 @@ public final class Monitoring {
             monitoring.Monitoring.AlarmList other = (monitoring.Monitoring.AlarmList) obj;
             if (!getAlarmDescriptorList().equals(other.getAlarmDescriptorList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -20106,7 +19247,7 @@ public final class Monitoring {
                 hash = (37 * hash) + ALARM_DESCRIPTOR_FIELD_NUMBER;
                 hash = (53 * hash) + getAlarmDescriptorList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -20200,29 +19341,23 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.AlarmList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getAlarmDescriptorFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (alarmDescriptorBuilder_ == null) {
                     alarmDescriptor_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    alarmDescriptor_ = null;
                     alarmDescriptorBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -20248,7 +19383,15 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.AlarmList buildPartial() {
                 monitoring.Monitoring.AlarmList result = new monitoring.Monitoring.AlarmList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(monitoring.Monitoring.AlarmList result) {
                 if (alarmDescriptorBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         alarmDescriptor_ = java.util.Collections.unmodifiableList(alarmDescriptor_);
@@ -20258,38 +19401,10 @@ public final class Monitoring {
                 } else {
                     result.alarmDescriptor_ = alarmDescriptorBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
             }
 
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.AlarmList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -20329,7 +19444,7 @@ public final class Monitoring {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -20341,17 +19456,47 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.AlarmList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    monitoring.Monitoring.AlarmDescriptor m = input.readMessage(monitoring.Monitoring.AlarmDescriptor.parser(), extensionRegistry);
+                                    if (alarmDescriptorBuilder_ == null) {
+                                        ensureAlarmDescriptorIsMutable();
+                                        alarmDescriptor_.add(m);
+                                    } else {
+                                        alarmDescriptorBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.AlarmList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -20621,7 +19766,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public AlarmList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new AlarmList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
diff --git a/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java b/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java
index 83dffd6257d5685ee7d49c45258bbf1d68d3a817..7a275e5777320134c04591f4d9c29e23035148bf 100644
--- a/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java
+++ b/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java
@@ -4,7 +4,8 @@ import static io.grpc.MethodDescriptor.generateFullMethodName;
 
 /**
  */
-@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.38.1)", comments = "Source: monitoring.proto")
+@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.55.1)", comments = "Source: monitoring.proto")
+@io.grpc.stub.annotations.GrpcGenerated
 public final class MonitoringServiceGrpc {
 
     private MonitoringServiceGrpc() {
@@ -327,123 +328,130 @@ public final class MonitoringServiceGrpc {
 
     /**
      */
-    public static abstract class MonitoringServiceImplBase implements io.grpc.BindableService {
+    public interface AsyncService {
 
         /**
          */
-        public void setKpi(monitoring.Monitoring.KpiDescriptor request, io.grpc.stub.StreamObserver responseObserver) {
+        default void setKpi(monitoring.Monitoring.KpiDescriptor request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetKpiMethod(), responseObserver);
         }
 
         /**
          */
-        public void deleteKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void deleteKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteKpiMethod(), responseObserver);
         }
 
         /**
          */
-        public void getKpiDescriptor(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getKpiDescriptor(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetKpiDescriptorMethod(), responseObserver);
         }
 
         /**
          */
-        public void getKpiDescriptorList(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getKpiDescriptorList(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetKpiDescriptorListMethod(), responseObserver);
         }
 
         /**
          */
-        public void includeKpi(monitoring.Monitoring.Kpi request, io.grpc.stub.StreamObserver responseObserver) {
+        default void includeKpi(monitoring.Monitoring.Kpi request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getIncludeKpiMethod(), responseObserver);
         }
 
         /**
          */
-        public void monitorKpi(monitoring.Monitoring.MonitorKpiRequest request, io.grpc.stub.StreamObserver responseObserver) {
+        default void monitorKpi(monitoring.Monitoring.MonitorKpiRequest request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getMonitorKpiMethod(), responseObserver);
         }
 
         /**
          */
-        public void queryKpiData(monitoring.Monitoring.KpiQuery request, io.grpc.stub.StreamObserver responseObserver) {
+        default void queryKpiData(monitoring.Monitoring.KpiQuery request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getQueryKpiDataMethod(), responseObserver);
         }
 
         /**
          */
-        public void setKpiSubscription(monitoring.Monitoring.SubsDescriptor request, io.grpc.stub.StreamObserver responseObserver) {
+        default void setKpiSubscription(monitoring.Monitoring.SubsDescriptor request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetKpiSubscriptionMethod(), responseObserver);
         }
 
         /**
          */
-        public void getSubsDescriptor(monitoring.Monitoring.SubscriptionID request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getSubsDescriptor(monitoring.Monitoring.SubscriptionID request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSubsDescriptorMethod(), responseObserver);
         }
 
         /**
          */
-        public void getSubscriptions(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getSubscriptions(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSubscriptionsMethod(), responseObserver);
         }
 
         /**
          */
-        public void deleteSubscription(monitoring.Monitoring.SubscriptionID request, io.grpc.stub.StreamObserver responseObserver) {
+        default void deleteSubscription(monitoring.Monitoring.SubscriptionID request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteSubscriptionMethod(), responseObserver);
         }
 
         /**
          */
-        public void setKpiAlarm(monitoring.Monitoring.AlarmDescriptor request, io.grpc.stub.StreamObserver responseObserver) {
+        default void setKpiAlarm(monitoring.Monitoring.AlarmDescriptor request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetKpiAlarmMethod(), responseObserver);
         }
 
         /**
          */
-        public void getAlarms(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getAlarms(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetAlarmsMethod(), responseObserver);
         }
 
         /**
          */
-        public void getAlarmDescriptor(monitoring.Monitoring.AlarmID request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getAlarmDescriptor(monitoring.Monitoring.AlarmID request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetAlarmDescriptorMethod(), responseObserver);
         }
 
         /**
          */
-        public void getAlarmResponseStream(monitoring.Monitoring.AlarmSubscription request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getAlarmResponseStream(monitoring.Monitoring.AlarmSubscription request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetAlarmResponseStreamMethod(), responseObserver);
         }
 
         /**
          */
-        public void deleteAlarm(monitoring.Monitoring.AlarmID request, io.grpc.stub.StreamObserver responseObserver) {
+        default void deleteAlarm(monitoring.Monitoring.AlarmID request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteAlarmMethod(), responseObserver);
         }
 
         /**
          */
-        public void getStreamKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getStreamKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetStreamKpiMethod(), responseObserver);
         }
 
         /**
          */
-        public void getInstantKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getInstantKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetInstantKpiMethod(), responseObserver);
         }
+    }
+
+    /**
+     * Base class for the server implementation of the service MonitoringService.
+     */
+    public static abstract class MonitoringServiceImplBase implements io.grpc.BindableService, AsyncService {
 
         @java.lang.Override
         public io.grpc.ServerServiceDefinition bindService() {
-            return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getSetKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SET_KPI))).addMethod(getDeleteKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_DELETE_KPI))).addMethod(getGetKpiDescriptorMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_KPI_DESCRIPTOR))).addMethod(getGetKpiDescriptorListMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_KPI_DESCRIPTOR_LIST))).addMethod(getIncludeKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_INCLUDE_KPI))).addMethod(getMonitorKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_MONITOR_KPI))).addMethod(getQueryKpiDataMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_QUERY_KPI_DATA))).addMethod(getSetKpiSubscriptionMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(this, METHODID_SET_KPI_SUBSCRIPTION))).addMethod(getGetSubsDescriptorMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_SUBS_DESCRIPTOR))).addMethod(getGetSubscriptionsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_SUBSCRIPTIONS))).addMethod(getDeleteSubscriptionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_DELETE_SUBSCRIPTION))).addMethod(getSetKpiAlarmMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SET_KPI_ALARM))).addMethod(getGetAlarmsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_ALARMS))).addMethod(getGetAlarmDescriptorMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_ALARM_DESCRIPTOR))).addMethod(getGetAlarmResponseStreamMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_ALARM_RESPONSE_STREAM))).addMethod(getDeleteAlarmMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_DELETE_ALARM))).addMethod(getGetStreamKpiMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_STREAM_KPI))).addMethod(getGetInstantKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_INSTANT_KPI))).build();
+            return MonitoringServiceGrpc.bindService(this);
         }
     }
 
     /**
+     * A stub to allow clients to do asynchronous rpc calls to service MonitoringService.
      */
     public static class MonitoringServiceStub extends io.grpc.stub.AbstractAsyncStub {
 
@@ -566,6 +574,7 @@ public final class MonitoringServiceGrpc {
     }
 
     /**
+     * A stub to allow clients to do synchronous rpc calls to service MonitoringService.
      */
     public static class MonitoringServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub {
 
@@ -688,6 +697,7 @@ public final class MonitoringServiceGrpc {
     }
 
     /**
+     * A stub to allow clients to do ListenableFuture-style rpc calls to service MonitoringService.
      */
     public static class MonitoringServiceFutureStub extends io.grpc.stub.AbstractFutureStub {
 
@@ -829,11 +839,11 @@ public final class MonitoringServiceGrpc {
 
     private static final class MethodHandlers implements io.grpc.stub.ServerCalls.UnaryMethod, io.grpc.stub.ServerCalls.ServerStreamingMethod, io.grpc.stub.ServerCalls.ClientStreamingMethod, io.grpc.stub.ServerCalls.BidiStreamingMethod {
 
-        private final MonitoringServiceImplBase serviceImpl;
+        private final AsyncService serviceImpl;
 
         private final int methodId;
 
-        MethodHandlers(MonitoringServiceImplBase serviceImpl, int methodId) {
+        MethodHandlers(AsyncService serviceImpl, int methodId) {
             this.serviceImpl = serviceImpl;
             this.methodId = methodId;
         }
@@ -911,6 +921,10 @@ public final class MonitoringServiceGrpc {
         }
     }
 
+    public static io.grpc.ServerServiceDefinition bindService(AsyncService service) {
+        return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getSetKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_KPI))).addMethod(getDeleteKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_DELETE_KPI))).addMethod(getGetKpiDescriptorMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_KPI_DESCRIPTOR))).addMethod(getGetKpiDescriptorListMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_KPI_DESCRIPTOR_LIST))).addMethod(getIncludeKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_INCLUDE_KPI))).addMethod(getMonitorKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_MONITOR_KPI))).addMethod(getQueryKpiDataMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_QUERY_KPI_DATA))).addMethod(getSetKpiSubscriptionMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_SET_KPI_SUBSCRIPTION))).addMethod(getGetSubsDescriptorMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_SUBS_DESCRIPTOR))).addMethod(getGetSubscriptionsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_SUBSCRIPTIONS))).addMethod(getDeleteSubscriptionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_DELETE_SUBSCRIPTION))).addMethod(getSetKpiAlarmMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_KPI_ALARM))).addMethod(getGetAlarmsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_ALARMS))).addMethod(getGetAlarmDescriptorMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_ALARM_DESCRIPTOR))).addMethod(getGetAlarmResponseStreamMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_ALARM_RESPONSE_STREAM))).addMethod(getDeleteAlarmMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_DELETE_ALARM))).addMethod(getGetStreamKpiMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_STREAM_KPI))).addMethod(getGetInstantKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_INSTANT_KPI))).build();
+    }
+
     private static abstract class MonitoringServiceBaseDescriptorSupplier implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
 
         MonitoringServiceBaseDescriptorSupplier() {
diff --git a/src/policy/target/generated-sources/grpc/policy/Policy.java b/src/policy/target/generated-sources/grpc/policy/Policy.java
index b57d9ae7577153c1623a34e2aea9c38e81e02a08..30aa624d4c5f5f8be2ac57994afff26d53644fdf 100644
--- a/src/policy/target/generated-sources/grpc/policy/Policy.java
+++ b/src/policy/target/generated-sources/grpc/policy/Policy.java
@@ -346,57 +346,6 @@ public final class Policy {
             return new PolicyRuleId();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private PolicyRuleId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
-                                if (uuid_ != null) {
-                                    subBuilder = uuid_.toBuilder();
-                                }
-                                uuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(uuid_);
-                                    uuid_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return policy.Policy.internal_static_policy_PolicyRuleId_descriptor;
         }
@@ -433,7 +382,7 @@ public final class Policy {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getUuidOrBuilder() {
-            return getUuid();
+            return uuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : uuid_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -454,7 +403,7 @@ public final class Policy {
             if (uuid_ != null) {
                 output.writeMessage(1, getUuid());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -466,7 +415,7 @@ public final class Policy {
             if (uuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getUuid());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -486,7 +435,7 @@ public final class Policy {
                 if (!getUuid().equals(other.getUuid()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -502,7 +451,7 @@ public final class Policy {
                 hash = (37 * hash) + UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getUuid().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -596,26 +545,19 @@ public final class Policy {
 
             // Construct using policy.Policy.PolicyRuleId.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (uuidBuilder_ == null) {
-                    uuid_ = null;
-                } else {
-                    uuid_ = null;
+                bitField0_ = 0;
+                uuid_ = null;
+                if (uuidBuilder_ != null) {
+                    uuidBuilder_.dispose();
                     uuidBuilder_ = null;
                 }
                 return this;
@@ -643,43 +585,18 @@ public final class Policy {
             @java.lang.Override
             public policy.Policy.PolicyRuleId buildPartial() {
                 policy.Policy.PolicyRuleId result = new policy.Policy.PolicyRuleId(this);
-                if (uuidBuilder_ == null) {
-                    result.uuid_ = uuid_;
-                } else {
-                    result.uuid_ = uuidBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(policy.Policy.PolicyRuleId result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.uuid_ = uuidBuilder_ == null ? uuid_ : uuidBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -698,7 +615,7 @@ public final class Policy {
                 if (other.hasUuid()) {
                     mergeUuid(other.getUuid());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -710,20 +627,47 @@ public final class Policy {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                policy.Policy.PolicyRuleId parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getUuidFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (policy.Policy.PolicyRuleId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.Uuid uuid_;
 
             private com.google.protobuf.SingleFieldBuilderV3 uuidBuilder_;
@@ -733,7 +677,7 @@ public final class Policy {
              * @return Whether the uuid field is set.
              */
             public boolean hasUuid() {
-                return uuidBuilder_ != null || uuid_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -757,10 +701,11 @@ public final class Policy {
                         throw new NullPointerException();
                     }
                     uuid_ = value;
-                    onChanged();
                 } else {
                     uuidBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -770,10 +715,11 @@ public final class Policy {
             public Builder setUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (uuidBuilder_ == null) {
                     uuid_ = builderForValue.build();
-                    onChanged();
                 } else {
                     uuidBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -782,15 +728,16 @@ public final class Policy {
              */
             public Builder mergeUuid(context.ContextOuterClass.Uuid value) {
                 if (uuidBuilder_ == null) {
-                    if (uuid_ != null) {
-                        uuid_ = context.ContextOuterClass.Uuid.newBuilder(uuid_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && uuid_ != null && uuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getUuidBuilder().mergeFrom(value);
                     } else {
                         uuid_ = value;
                     }
-                    onChanged();
                 } else {
                     uuidBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -798,13 +745,13 @@ public final class Policy {
              * .context.Uuid uuid = 1;
              */
             public Builder clearUuid() {
-                if (uuidBuilder_ == null) {
-                    uuid_ = null;
-                    onChanged();
-                } else {
-                    uuid_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                uuid_ = null;
+                if (uuidBuilder_ != null) {
+                    uuidBuilder_.dispose();
                     uuidBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -812,6 +759,7 @@ public final class Policy {
              * .context.Uuid uuid = 1;
              */
             public context.ContextOuterClass.Uuid.Builder getUuidBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getUuidFieldBuilder().getBuilder();
             }
@@ -865,7 +813,17 @@ public final class Policy {
 
             @java.lang.Override
             public PolicyRuleId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new PolicyRuleId(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -936,56 +894,6 @@ public final class Policy {
             return new PolicyRuleState();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private PolicyRuleState(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 8:
-                            {
-                                int rawValue = input.readEnum();
-                                policyRuleState_ = rawValue;
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                policyRuleStateMessage_ = s;
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return policy.Policy.internal_static_policy_PolicyRuleState_descriptor;
         }
@@ -997,7 +905,7 @@ public final class Policy {
 
         public static final int POLICYRULESTATE_FIELD_NUMBER = 1;
 
-        private int policyRuleState_;
+        private int policyRuleState_ = 0;
 
         /**
          * .policy.PolicyRuleStateEnum policyRuleState = 1;
@@ -1014,14 +922,14 @@ public final class Policy {
          */
         @java.lang.Override
         public policy.Policy.PolicyRuleStateEnum getPolicyRuleState() {
-            @SuppressWarnings("deprecation")
-            policy.Policy.PolicyRuleStateEnum result = policy.Policy.PolicyRuleStateEnum.valueOf(policyRuleState_);
+            policy.Policy.PolicyRuleStateEnum result = policy.Policy.PolicyRuleStateEnum.forNumber(policyRuleState_);
             return result == null ? policy.Policy.PolicyRuleStateEnum.UNRECOGNIZED : result;
         }
 
         public static final int POLICYRULESTATEMESSAGE_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object policyRuleStateMessage_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object policyRuleStateMessage_ = "";
 
         /**
          * string policyRuleStateMessage = 2;
@@ -1074,10 +982,10 @@ public final class Policy {
             if (policyRuleState_ != policy.Policy.PolicyRuleStateEnum.POLICY_UNDEFINED.getNumber()) {
                 output.writeEnum(1, policyRuleState_);
             }
-            if (!getPolicyRuleStateMessageBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(policyRuleStateMessage_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, policyRuleStateMessage_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -1089,10 +997,10 @@ public final class Policy {
             if (policyRuleState_ != policy.Policy.PolicyRuleStateEnum.POLICY_UNDEFINED.getNumber()) {
                 size += com.google.protobuf.CodedOutputStream.computeEnumSize(1, policyRuleState_);
             }
-            if (!getPolicyRuleStateMessageBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(policyRuleStateMessage_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, policyRuleStateMessage_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -1110,7 +1018,7 @@ public final class Policy {
                 return false;
             if (!getPolicyRuleStateMessage().equals(other.getPolicyRuleStateMessage()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -1126,7 +1034,7 @@ public final class Policy {
             hash = (53 * hash) + policyRuleState_;
             hash = (37 * hash) + POLICYRULESTATEMESSAGE_FIELD_NUMBER;
             hash = (53 * hash) + getPolicyRuleStateMessage().hashCode();
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -1220,22 +1128,16 @@ public final class Policy {
 
             // Construct using policy.Policy.PolicyRuleState.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 policyRuleState_ = 0;
                 policyRuleStateMessage_ = "";
                 return this;
@@ -1263,40 +1165,21 @@ public final class Policy {
             @java.lang.Override
             public policy.Policy.PolicyRuleState buildPartial() {
                 policy.Policy.PolicyRuleState result = new policy.Policy.PolicyRuleState(this);
-                result.policyRuleState_ = policyRuleState_;
-                result.policyRuleStateMessage_ = policyRuleStateMessage_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(policy.Policy.PolicyRuleState result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.policyRuleState_ = policyRuleState_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.policyRuleStateMessage_ = policyRuleStateMessage_;
+                }
             }
 
             @java.lang.Override
@@ -1317,9 +1200,10 @@ public final class Policy {
                 }
                 if (!other.getPolicyRuleStateMessage().isEmpty()) {
                     policyRuleStateMessage_ = other.policyRuleStateMessage_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -1331,20 +1215,54 @@ public final class Policy {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                policy.Policy.PolicyRuleState parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 8:
+                                {
+                                    policyRuleState_ = input.readEnum();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 8
+                            case 18:
+                                {
+                                    policyRuleStateMessage_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (policy.Policy.PolicyRuleState) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private int policyRuleState_ = 0;
 
             /**
@@ -1363,6 +1281,7 @@ public final class Policy {
              */
             public Builder setPolicyRuleStateValue(int value) {
                 policyRuleState_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -1373,8 +1292,7 @@ public final class Policy {
              */
             @java.lang.Override
             public policy.Policy.PolicyRuleStateEnum getPolicyRuleState() {
-                @SuppressWarnings("deprecation")
-                policy.Policy.PolicyRuleStateEnum result = policy.Policy.PolicyRuleStateEnum.valueOf(policyRuleState_);
+                policy.Policy.PolicyRuleStateEnum result = policy.Policy.PolicyRuleStateEnum.forNumber(policyRuleState_);
                 return result == null ? policy.Policy.PolicyRuleStateEnum.UNRECOGNIZED : result;
             }
 
@@ -1387,6 +1305,7 @@ public final class Policy {
                 if (value == null) {
                     throw new NullPointerException();
                 }
+                bitField0_ |= 0x00000001;
                 policyRuleState_ = value.getNumber();
                 onChanged();
                 return this;
@@ -1397,6 +1316,7 @@ public final class Policy {
              * @return This builder for chaining.
              */
             public Builder clearPolicyRuleState() {
+                bitField0_ = (bitField0_ & ~0x00000001);
                 policyRuleState_ = 0;
                 onChanged();
                 return this;
@@ -1445,6 +1365,7 @@ public final class Policy {
                     throw new NullPointerException();
                 }
                 policyRuleStateMessage_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -1455,6 +1376,7 @@ public final class Policy {
              */
             public Builder clearPolicyRuleStateMessage() {
                 policyRuleStateMessage_ = getDefaultInstance().getPolicyRuleStateMessage();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -1470,6 +1392,7 @@ public final class Policy {
                 }
                 checkByteStringIsUtf8(value);
                 policyRuleStateMessage_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -1501,7 +1424,17 @@ public final class Policy {
 
             @java.lang.Override
             public PolicyRuleState parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new PolicyRuleState(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -1715,106 +1648,6 @@ public final class Policy {
             return new PolicyRuleBasic();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private PolicyRuleBasic(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                policy.Policy.PolicyRuleId.Builder subBuilder = null;
-                                if (policyRuleId_ != null) {
-                                    subBuilder = policyRuleId_.toBuilder();
-                                }
-                                policyRuleId_ = input.readMessage(policy.Policy.PolicyRuleId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(policyRuleId_);
-                                    policyRuleId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                policy.Policy.PolicyRuleState.Builder subBuilder = null;
-                                if (policyRuleState_ != null) {
-                                    subBuilder = policyRuleState_.toBuilder();
-                                }
-                                policyRuleState_ = input.readMessage(policy.Policy.PolicyRuleState.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(policyRuleState_);
-                                    policyRuleState_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 24:
-                            {
-                                priority_ = input.readUInt32();
-                                break;
-                            }
-                        case 34:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    conditionList_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                conditionList_.add(input.readMessage(policy.PolicyCondition.PolicyRuleCondition.parser(), extensionRegistry));
-                                break;
-                            }
-                        case 40:
-                            {
-                                int rawValue = input.readEnum();
-                                booleanOperator_ = rawValue;
-                                break;
-                            }
-                        case 50:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
-                                    actionList_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000002;
-                                }
-                                actionList_.add(input.readMessage(policy.PolicyAction.PolicyRuleAction.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    conditionList_ = java.util.Collections.unmodifiableList(conditionList_);
-                }
-                if (((mutable_bitField0_ & 0x00000002) != 0)) {
-                    actionList_ = java.util.Collections.unmodifiableList(actionList_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return policy.Policy.internal_static_policy_PolicyRuleBasic_descriptor;
         }
@@ -1851,7 +1684,7 @@ public final class Policy {
          */
         @java.lang.Override
         public policy.Policy.PolicyRuleIdOrBuilder getPolicyRuleIdOrBuilder() {
-            return getPolicyRuleId();
+            return policyRuleId_ == null ? policy.Policy.PolicyRuleId.getDefaultInstance() : policyRuleId_;
         }
 
         public static final int POLICYRULESTATE_FIELD_NUMBER = 2;
@@ -1893,12 +1726,12 @@ public final class Policy {
          */
         @java.lang.Override
         public policy.Policy.PolicyRuleStateOrBuilder getPolicyRuleStateOrBuilder() {
-            return getPolicyRuleState();
+            return policyRuleState_ == null ? policy.Policy.PolicyRuleState.getDefaultInstance() : policyRuleState_;
         }
 
         public static final int PRIORITY_FIELD_NUMBER = 3;
 
-        private int priority_;
+        private int priority_ = 0;
 
         /**
          * uint32 priority = 3;
@@ -1911,6 +1744,7 @@ public final class Policy {
 
         public static final int CONDITIONLIST_FIELD_NUMBER = 4;
 
+        @SuppressWarnings("serial")
         private java.util.List conditionList_;
 
         /**
@@ -1975,7 +1809,7 @@ public final class Policy {
 
         public static final int BOOLEANOPERATOR_FIELD_NUMBER = 5;
 
-        private int booleanOperator_;
+        private int booleanOperator_ = 0;
 
         /**
          * 
@@ -2000,13 +1834,13 @@ public final class Policy {
          */
         @java.lang.Override
         public policy.PolicyCondition.BooleanOperator getBooleanOperator() {
-            @SuppressWarnings("deprecation")
-            policy.PolicyCondition.BooleanOperator result = policy.PolicyCondition.BooleanOperator.valueOf(booleanOperator_);
+            policy.PolicyCondition.BooleanOperator result = policy.PolicyCondition.BooleanOperator.forNumber(booleanOperator_);
             return result == null ? policy.PolicyCondition.BooleanOperator.UNRECOGNIZED : result;
         }
 
         public static final int ACTIONLIST_FIELD_NUMBER = 6;
 
+        @SuppressWarnings("serial")
         private java.util.List actionList_;
 
         /**
@@ -2102,7 +1936,7 @@ public final class Policy {
             for (int i = 0; i < actionList_.size(); i++) {
                 output.writeMessage(6, actionList_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -2129,7 +1963,7 @@ public final class Policy {
             for (int i = 0; i < actionList_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, actionList_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -2163,7 +1997,7 @@ public final class Policy {
                 return false;
             if (!getActionListList().equals(other.getActionListList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -2195,7 +2029,7 @@ public final class Policy {
                 hash = (37 * hash) + ACTIONLIST_FIELD_NUMBER;
                 hash = (53 * hash) + getActionListList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -2293,50 +2127,42 @@ public final class Policy {
 
             // Construct using policy.Policy.PolicyRuleBasic.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getConditionListFieldBuilder();
-                    getActionListFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (policyRuleIdBuilder_ == null) {
-                    policyRuleId_ = null;
-                } else {
-                    policyRuleId_ = null;
+                bitField0_ = 0;
+                policyRuleId_ = null;
+                if (policyRuleIdBuilder_ != null) {
+                    policyRuleIdBuilder_.dispose();
                     policyRuleIdBuilder_ = null;
                 }
-                if (policyRuleStateBuilder_ == null) {
-                    policyRuleState_ = null;
-                } else {
-                    policyRuleState_ = null;
+                policyRuleState_ = null;
+                if (policyRuleStateBuilder_ != null) {
+                    policyRuleStateBuilder_.dispose();
                     policyRuleStateBuilder_ = null;
                 }
                 priority_ = 0;
                 if (conditionListBuilder_ == null) {
                     conditionList_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    conditionList_ = null;
                     conditionListBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000008);
                 booleanOperator_ = 0;
                 if (actionListBuilder_ == null) {
                     actionList_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000002);
                 } else {
+                    actionList_ = null;
                     actionListBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000020);
                 return this;
             }
 
@@ -2362,69 +2188,49 @@ public final class Policy {
             @java.lang.Override
             public policy.Policy.PolicyRuleBasic buildPartial() {
                 policy.Policy.PolicyRuleBasic result = new policy.Policy.PolicyRuleBasic(this);
-                int from_bitField0_ = bitField0_;
-                if (policyRuleIdBuilder_ == null) {
-                    result.policyRuleId_ = policyRuleId_;
-                } else {
-                    result.policyRuleId_ = policyRuleIdBuilder_.build();
-                }
-                if (policyRuleStateBuilder_ == null) {
-                    result.policyRuleState_ = policyRuleState_;
-                } else {
-                    result.policyRuleState_ = policyRuleStateBuilder_.build();
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.priority_ = priority_;
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(policy.Policy.PolicyRuleBasic result) {
                 if (conditionListBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0)) {
+                    if (((bitField0_ & 0x00000008) != 0)) {
                         conditionList_ = java.util.Collections.unmodifiableList(conditionList_);
-                        bitField0_ = (bitField0_ & ~0x00000001);
+                        bitField0_ = (bitField0_ & ~0x00000008);
                     }
                     result.conditionList_ = conditionList_;
                 } else {
                     result.conditionList_ = conditionListBuilder_.build();
                 }
-                result.booleanOperator_ = booleanOperator_;
                 if (actionListBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0)) {
+                    if (((bitField0_ & 0x00000020) != 0)) {
                         actionList_ = java.util.Collections.unmodifiableList(actionList_);
-                        bitField0_ = (bitField0_ & ~0x00000002);
+                        bitField0_ = (bitField0_ & ~0x00000020);
                     }
                     result.actionList_ = actionList_;
                 } else {
                     result.actionList_ = actionListBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
             }
 
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(policy.Policy.PolicyRuleBasic result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.policyRuleId_ = policyRuleIdBuilder_ == null ? policyRuleId_ : policyRuleIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.policyRuleState_ = policyRuleStateBuilder_ == null ? policyRuleState_ : policyRuleStateBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.priority_ = priority_;
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.booleanOperator_ = booleanOperator_;
+                }
             }
 
             @java.lang.Override
@@ -2453,7 +2259,7 @@ public final class Policy {
                     if (!other.conditionList_.isEmpty()) {
                         if (conditionList_.isEmpty()) {
                             conditionList_ = other.conditionList_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000008);
                         } else {
                             ensureConditionListIsMutable();
                             conditionList_.addAll(other.conditionList_);
@@ -2466,7 +2272,7 @@ public final class Policy {
                             conditionListBuilder_.dispose();
                             conditionListBuilder_ = null;
                             conditionList_ = other.conditionList_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000008);
                             conditionListBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getConditionListFieldBuilder() : null;
                         } else {
                             conditionListBuilder_.addAllMessages(other.conditionList_);
@@ -2480,7 +2286,7 @@ public final class Policy {
                     if (!other.actionList_.isEmpty()) {
                         if (actionList_.isEmpty()) {
                             actionList_ = other.actionList_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000020);
                         } else {
                             ensureActionListIsMutable();
                             actionList_.addAll(other.actionList_);
@@ -2493,14 +2299,14 @@ public final class Policy {
                             actionListBuilder_.dispose();
                             actionListBuilder_ = null;
                             actionList_ = other.actionList_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000020);
                             actionListBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getActionListFieldBuilder() : null;
                         } else {
                             actionListBuilder_.addAllMessages(other.actionList_);
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -2512,17 +2318,87 @@ public final class Policy {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                policy.Policy.PolicyRuleBasic parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getPolicyRuleIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getPolicyRuleStateFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 24:
+                                {
+                                    priority_ = input.readUInt32();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            case 34:
+                                {
+                                    policy.PolicyCondition.PolicyRuleCondition m = input.readMessage(policy.PolicyCondition.PolicyRuleCondition.parser(), extensionRegistry);
+                                    if (conditionListBuilder_ == null) {
+                                        ensureConditionListIsMutable();
+                                        conditionList_.add(m);
+                                    } else {
+                                        conditionListBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 34
+                            case 40:
+                                {
+                                    booleanOperator_ = input.readEnum();
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 40
+                            case 50:
+                                {
+                                    policy.PolicyAction.PolicyRuleAction m = input.readMessage(policy.PolicyAction.PolicyRuleAction.parser(), extensionRegistry);
+                                    if (actionListBuilder_ == null) {
+                                        ensureActionListIsMutable();
+                                        actionList_.add(m);
+                                    } else {
+                                        actionListBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 50
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (policy.Policy.PolicyRuleBasic) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -2537,7 +2413,7 @@ public final class Policy {
              * @return Whether the policyRuleId field is set.
              */
             public boolean hasPolicyRuleId() {
-                return policyRuleIdBuilder_ != null || policyRuleId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -2561,10 +2437,11 @@ public final class Policy {
                         throw new NullPointerException();
                     }
                     policyRuleId_ = value;
-                    onChanged();
                 } else {
                     policyRuleIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -2574,10 +2451,11 @@ public final class Policy {
             public Builder setPolicyRuleId(policy.Policy.PolicyRuleId.Builder builderForValue) {
                 if (policyRuleIdBuilder_ == null) {
                     policyRuleId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     policyRuleIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -2586,15 +2464,16 @@ public final class Policy {
              */
             public Builder mergePolicyRuleId(policy.Policy.PolicyRuleId value) {
                 if (policyRuleIdBuilder_ == null) {
-                    if (policyRuleId_ != null) {
-                        policyRuleId_ = policy.Policy.PolicyRuleId.newBuilder(policyRuleId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && policyRuleId_ != null && policyRuleId_ != policy.Policy.PolicyRuleId.getDefaultInstance()) {
+                        getPolicyRuleIdBuilder().mergeFrom(value);
                     } else {
                         policyRuleId_ = value;
                     }
-                    onChanged();
                 } else {
                     policyRuleIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -2602,13 +2481,13 @@ public final class Policy {
              * .policy.PolicyRuleId policyRuleId = 1;
              */
             public Builder clearPolicyRuleId() {
-                if (policyRuleIdBuilder_ == null) {
-                    policyRuleId_ = null;
-                    onChanged();
-                } else {
-                    policyRuleId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                policyRuleId_ = null;
+                if (policyRuleIdBuilder_ != null) {
+                    policyRuleIdBuilder_.dispose();
                     policyRuleIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -2616,6 +2495,7 @@ public final class Policy {
              * .policy.PolicyRuleId policyRuleId = 1;
              */
             public policy.Policy.PolicyRuleId.Builder getPolicyRuleIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getPolicyRuleIdFieldBuilder().getBuilder();
             }
@@ -2655,7 +2535,7 @@ public final class Policy {
              *  @return Whether the policyRuleState field is set.
              */
             public boolean hasPolicyRuleState() {
-                return policyRuleStateBuilder_ != null || policyRuleState_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -2687,10 +2567,11 @@ public final class Policy {
                         throw new NullPointerException();
                     }
                     policyRuleState_ = value;
-                    onChanged();
                 } else {
                     policyRuleStateBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -2704,10 +2585,11 @@ public final class Policy {
             public Builder setPolicyRuleState(policy.Policy.PolicyRuleState.Builder builderForValue) {
                 if (policyRuleStateBuilder_ == null) {
                     policyRuleState_ = builderForValue.build();
-                    onChanged();
                 } else {
                     policyRuleStateBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -2720,15 +2602,16 @@ public final class Policy {
              */
             public Builder mergePolicyRuleState(policy.Policy.PolicyRuleState value) {
                 if (policyRuleStateBuilder_ == null) {
-                    if (policyRuleState_ != null) {
-                        policyRuleState_ = policy.Policy.PolicyRuleState.newBuilder(policyRuleState_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && policyRuleState_ != null && policyRuleState_ != policy.Policy.PolicyRuleState.getDefaultInstance()) {
+                        getPolicyRuleStateBuilder().mergeFrom(value);
                     } else {
                         policyRuleState_ = value;
                     }
-                    onChanged();
                 } else {
                     policyRuleStateBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -2740,13 +2623,13 @@ public final class Policy {
              *  .policy.PolicyRuleState policyRuleState = 2;
              */
             public Builder clearPolicyRuleState() {
-                if (policyRuleStateBuilder_ == null) {
-                    policyRuleState_ = null;
-                    onChanged();
-                } else {
-                    policyRuleState_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                policyRuleState_ = null;
+                if (policyRuleStateBuilder_ != null) {
+                    policyRuleStateBuilder_.dispose();
                     policyRuleStateBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -2758,6 +2641,7 @@ public final class Policy {
              *  .policy.PolicyRuleState policyRuleState = 2;
              */
             public policy.Policy.PolicyRuleState.Builder getPolicyRuleStateBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getPolicyRuleStateFieldBuilder().getBuilder();
             }
@@ -2810,6 +2694,7 @@ public final class Policy {
              */
             public Builder setPriority(int value) {
                 priority_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -2819,6 +2704,7 @@ public final class Policy {
              * @return This builder for chaining.
              */
             public Builder clearPriority() {
+                bitField0_ = (bitField0_ & ~0x00000004);
                 priority_ = 0;
                 onChanged();
                 return this;
@@ -2827,9 +2713,9 @@ public final class Policy {
             private java.util.List conditionList_ = java.util.Collections.emptyList();
 
             private void ensureConditionListIsMutable() {
-                if (!((bitField0_ & 0x00000001) != 0)) {
+                if (!((bitField0_ & 0x00000008) != 0)) {
                     conditionList_ = new java.util.ArrayList(conditionList_);
-                    bitField0_ |= 0x00000001;
+                    bitField0_ |= 0x00000008;
                 }
             }
 
@@ -3025,7 +2911,7 @@ public final class Policy {
             public Builder clearConditionList() {
                 if (conditionListBuilder_ == null) {
                     conditionList_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
+                    bitField0_ = (bitField0_ & ~0x00000008);
                     onChanged();
                 } else {
                     conditionListBuilder_.clear();
@@ -3127,7 +3013,7 @@ public final class Policy {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getConditionListFieldBuilder() {
                 if (conditionListBuilder_ == null) {
-                    conditionListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(conditionList_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    conditionListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(conditionList_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
                     conditionList_ = null;
                 }
                 return conditionListBuilder_;
@@ -3159,6 +3045,7 @@ public final class Policy {
              */
             public Builder setBooleanOperatorValue(int value) {
                 booleanOperator_ = value;
+                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -3173,8 +3060,7 @@ public final class Policy {
              */
             @java.lang.Override
             public policy.PolicyCondition.BooleanOperator getBooleanOperator() {
-                @SuppressWarnings("deprecation")
-                policy.PolicyCondition.BooleanOperator result = policy.PolicyCondition.BooleanOperator.valueOf(booleanOperator_);
+                policy.PolicyCondition.BooleanOperator result = policy.PolicyCondition.BooleanOperator.forNumber(booleanOperator_);
                 return result == null ? policy.PolicyCondition.BooleanOperator.UNRECOGNIZED : result;
             }
 
@@ -3191,6 +3077,7 @@ public final class Policy {
                 if (value == null) {
                     throw new NullPointerException();
                 }
+                bitField0_ |= 0x00000010;
                 booleanOperator_ = value.getNumber();
                 onChanged();
                 return this;
@@ -3205,6 +3092,7 @@ public final class Policy {
              * @return This builder for chaining.
              */
             public Builder clearBooleanOperator() {
+                bitField0_ = (bitField0_ & ~0x00000010);
                 booleanOperator_ = 0;
                 onChanged();
                 return this;
@@ -3213,9 +3101,9 @@ public final class Policy {
             private java.util.List actionList_ = java.util.Collections.emptyList();
 
             private void ensureActionListIsMutable() {
-                if (!((bitField0_ & 0x00000002) != 0)) {
+                if (!((bitField0_ & 0x00000020) != 0)) {
                     actionList_ = new java.util.ArrayList(actionList_);
-                    bitField0_ |= 0x00000002;
+                    bitField0_ |= 0x00000020;
                 }
             }
 
@@ -3411,7 +3299,7 @@ public final class Policy {
             public Builder clearActionList() {
                 if (actionListBuilder_ == null) {
                     actionList_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000002);
+                    bitField0_ = (bitField0_ & ~0x00000020);
                     onChanged();
                 } else {
                     actionListBuilder_.clear();
@@ -3513,7 +3401,7 @@ public final class Policy {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getActionListFieldBuilder() {
                 if (actionListBuilder_ == null) {
-                    actionListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(actionList_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
+                    actionListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(actionList_, ((bitField0_ & 0x00000020) != 0), getParentForChildren(), isClean());
                     actionList_ = null;
                 }
                 return actionListBuilder_;
@@ -3546,8 +3434,18 @@ public final class Policy {
 
             @java.lang.Override
             public PolicyRuleBasic parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new PolicyRuleBasic(input, extensionRegistry);
-            }
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
+            }
         };
 
         public static com.google.protobuf.Parser parser() {
@@ -3699,83 +3597,6 @@ public final class Policy {
             return new PolicyRuleService();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private PolicyRuleService(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                policy.Policy.PolicyRuleBasic.Builder subBuilder = null;
-                                if (policyRuleBasic_ != null) {
-                                    subBuilder = policyRuleBasic_.toBuilder();
-                                }
-                                policyRuleBasic_ = input.readMessage(policy.Policy.PolicyRuleBasic.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(policyRuleBasic_);
-                                    policyRuleBasic_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.ServiceId.Builder subBuilder = null;
-                                if (serviceId_ != null) {
-                                    subBuilder = serviceId_.toBuilder();
-                                }
-                                serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(serviceId_);
-                                    serviceId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 26:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    deviceList_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                deviceList_.add(input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    deviceList_ = java.util.Collections.unmodifiableList(deviceList_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return policy.Policy.internal_static_policy_PolicyRuleService_descriptor;
         }
@@ -3824,7 +3645,7 @@ public final class Policy {
          */
         @java.lang.Override
         public policy.Policy.PolicyRuleBasicOrBuilder getPolicyRuleBasicOrBuilder() {
-            return getPolicyRuleBasic();
+            return policyRuleBasic_ == null ? policy.Policy.PolicyRuleBasic.getDefaultInstance() : policyRuleBasic_;
         }
 
         public static final int SERVICEID_FIELD_NUMBER = 2;
@@ -3866,11 +3687,12 @@ public final class Policy {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-            return getServiceId();
+            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
         }
 
         public static final int DEVICELIST_FIELD_NUMBER = 3;
 
+        @SuppressWarnings("serial")
         private java.util.List deviceList_;
 
         /**
@@ -3957,7 +3779,7 @@ public final class Policy {
             for (int i = 0; i < deviceList_.size(); i++) {
                 output.writeMessage(3, deviceList_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -3975,7 +3797,7 @@ public final class Policy {
             for (int i = 0; i < deviceList_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, deviceList_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -4003,7 +3825,7 @@ public final class Policy {
             }
             if (!getDeviceListList().equals(other.getDeviceListList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -4027,7 +3849,7 @@ public final class Policy {
                 hash = (37 * hash) + DEVICELIST_FIELD_NUMBER;
                 hash = (53 * hash) + getDeviceListList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -4125,41 +3947,33 @@ public final class Policy {
 
             // Construct using policy.Policy.PolicyRuleService.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getDeviceListFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (policyRuleBasicBuilder_ == null) {
-                    policyRuleBasic_ = null;
-                } else {
-                    policyRuleBasic_ = null;
+                bitField0_ = 0;
+                policyRuleBasic_ = null;
+                if (policyRuleBasicBuilder_ != null) {
+                    policyRuleBasicBuilder_.dispose();
                     policyRuleBasicBuilder_ = null;
                 }
-                if (serviceIdBuilder_ == null) {
-                    serviceId_ = null;
-                } else {
-                    serviceId_ = null;
+                serviceId_ = null;
+                if (serviceIdBuilder_ != null) {
+                    serviceIdBuilder_.dispose();
                     serviceIdBuilder_ = null;
                 }
                 if (deviceListBuilder_ == null) {
                     deviceList_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    deviceList_ = null;
                     deviceListBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000004);
                 return this;
             }
 
@@ -4185,58 +3999,34 @@ public final class Policy {
             @java.lang.Override
             public policy.Policy.PolicyRuleService buildPartial() {
                 policy.Policy.PolicyRuleService result = new policy.Policy.PolicyRuleService(this);
-                int from_bitField0_ = bitField0_;
-                if (policyRuleBasicBuilder_ == null) {
-                    result.policyRuleBasic_ = policyRuleBasic_;
-                } else {
-                    result.policyRuleBasic_ = policyRuleBasicBuilder_.build();
-                }
-                if (serviceIdBuilder_ == null) {
-                    result.serviceId_ = serviceId_;
-                } else {
-                    result.serviceId_ = serviceIdBuilder_.build();
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(policy.Policy.PolicyRuleService result) {
                 if (deviceListBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0)) {
+                    if (((bitField0_ & 0x00000004) != 0)) {
                         deviceList_ = java.util.Collections.unmodifiableList(deviceList_);
-                        bitField0_ = (bitField0_ & ~0x00000001);
+                        bitField0_ = (bitField0_ & ~0x00000004);
                     }
                     result.deviceList_ = deviceList_;
                 } else {
                     result.deviceList_ = deviceListBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
             }
 
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(policy.Policy.PolicyRuleService result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.policyRuleBasic_ = policyRuleBasicBuilder_ == null ? policyRuleBasic_ : policyRuleBasicBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.serviceId_ = serviceIdBuilder_ == null ? serviceId_ : serviceIdBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -4262,7 +4052,7 @@ public final class Policy {
                     if (!other.deviceList_.isEmpty()) {
                         if (deviceList_.isEmpty()) {
                             deviceList_ = other.deviceList_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                         } else {
                             ensureDeviceListIsMutable();
                             deviceList_.addAll(other.deviceList_);
@@ -4275,14 +4065,14 @@ public final class Policy {
                             deviceListBuilder_.dispose();
                             deviceListBuilder_ = null;
                             deviceList_ = other.deviceList_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                             deviceListBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDeviceListFieldBuilder() : null;
                         } else {
                             deviceListBuilder_.addAllMessages(other.deviceList_);
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -4294,17 +4084,61 @@ public final class Policy {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                policy.Policy.PolicyRuleService parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getPolicyRuleBasicFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getServiceIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    context.ContextOuterClass.DeviceId m = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
+                                    if (deviceListBuilder_ == null) {
+                                        ensureDeviceListIsMutable();
+                                        deviceList_.add(m);
+                                    } else {
+                                        deviceListBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 26
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (policy.Policy.PolicyRuleService) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -4323,7 +4157,7 @@ public final class Policy {
              * @return Whether the policyRuleBasic field is set.
              */
             public boolean hasPolicyRuleBasic() {
-                return policyRuleBasicBuilder_ != null || policyRuleBasic_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -4355,10 +4189,11 @@ public final class Policy {
                         throw new NullPointerException();
                     }
                     policyRuleBasic_ = value;
-                    onChanged();
                 } else {
                     policyRuleBasicBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -4372,10 +4207,11 @@ public final class Policy {
             public Builder setPolicyRuleBasic(policy.Policy.PolicyRuleBasic.Builder builderForValue) {
                 if (policyRuleBasicBuilder_ == null) {
                     policyRuleBasic_ = builderForValue.build();
-                    onChanged();
                 } else {
                     policyRuleBasicBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -4388,15 +4224,16 @@ public final class Policy {
              */
             public Builder mergePolicyRuleBasic(policy.Policy.PolicyRuleBasic value) {
                 if (policyRuleBasicBuilder_ == null) {
-                    if (policyRuleBasic_ != null) {
-                        policyRuleBasic_ = policy.Policy.PolicyRuleBasic.newBuilder(policyRuleBasic_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && policyRuleBasic_ != null && policyRuleBasic_ != policy.Policy.PolicyRuleBasic.getDefaultInstance()) {
+                        getPolicyRuleBasicBuilder().mergeFrom(value);
                     } else {
                         policyRuleBasic_ = value;
                     }
-                    onChanged();
                 } else {
                     policyRuleBasicBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -4408,13 +4245,13 @@ public final class Policy {
              * .policy.PolicyRuleBasic policyRuleBasic = 1;
              */
             public Builder clearPolicyRuleBasic() {
-                if (policyRuleBasicBuilder_ == null) {
-                    policyRuleBasic_ = null;
-                    onChanged();
-                } else {
-                    policyRuleBasic_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                policyRuleBasic_ = null;
+                if (policyRuleBasicBuilder_ != null) {
+                    policyRuleBasicBuilder_.dispose();
                     policyRuleBasicBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -4426,6 +4263,7 @@ public final class Policy {
              * .policy.PolicyRuleBasic policyRuleBasic = 1;
              */
             public policy.Policy.PolicyRuleBasic.Builder getPolicyRuleBasicBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getPolicyRuleBasicFieldBuilder().getBuilder();
             }
@@ -4473,7 +4311,7 @@ public final class Policy {
              * @return Whether the serviceId field is set.
              */
             public boolean hasServiceId() {
-                return serviceIdBuilder_ != null || serviceId_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -4505,10 +4343,11 @@ public final class Policy {
                         throw new NullPointerException();
                     }
                     serviceId_ = value;
-                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -4522,10 +4361,11 @@ public final class Policy {
             public Builder setServiceId(context.ContextOuterClass.ServiceId.Builder builderForValue) {
                 if (serviceIdBuilder_ == null) {
                     serviceId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -4538,15 +4378,16 @@ public final class Policy {
              */
             public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
                 if (serviceIdBuilder_ == null) {
-                    if (serviceId_ != null) {
-                        serviceId_ = context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && serviceId_ != null && serviceId_ != context.ContextOuterClass.ServiceId.getDefaultInstance()) {
+                        getServiceIdBuilder().mergeFrom(value);
                     } else {
                         serviceId_ = value;
                     }
-                    onChanged();
                 } else {
                     serviceIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -4558,13 +4399,13 @@ public final class Policy {
              * .context.ServiceId serviceId = 2;
              */
             public Builder clearServiceId() {
-                if (serviceIdBuilder_ == null) {
-                    serviceId_ = null;
-                    onChanged();
-                } else {
-                    serviceId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                serviceId_ = null;
+                if (serviceIdBuilder_ != null) {
+                    serviceIdBuilder_.dispose();
                     serviceIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -4576,6 +4417,7 @@ public final class Policy {
              * .context.ServiceId serviceId = 2;
              */
             public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getServiceIdFieldBuilder().getBuilder();
             }
@@ -4613,9 +4455,9 @@ public final class Policy {
             private java.util.List deviceList_ = java.util.Collections.emptyList();
 
             private void ensureDeviceListIsMutable() {
-                if (!((bitField0_ & 0x00000001) != 0)) {
+                if (!((bitField0_ & 0x00000004) != 0)) {
                     deviceList_ = new java.util.ArrayList(deviceList_);
-                    bitField0_ |= 0x00000001;
+                    bitField0_ |= 0x00000004;
                 }
             }
 
@@ -4811,7 +4653,7 @@ public final class Policy {
             public Builder clearDeviceList() {
                 if (deviceListBuilder_ == null) {
                     deviceList_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
+                    bitField0_ = (bitField0_ & ~0x00000004);
                     onChanged();
                 } else {
                     deviceListBuilder_.clear();
@@ -4913,7 +4755,7 @@ public final class Policy {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getDeviceListFieldBuilder() {
                 if (deviceListBuilder_ == null) {
-                    deviceListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(deviceList_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    deviceListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(deviceList_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
                     deviceList_ = null;
                 }
                 return deviceListBuilder_;
@@ -4946,7 +4788,17 @@ public final class Policy {
 
             @java.lang.Override
             public PolicyRuleService parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new PolicyRuleService(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -5070,70 +4922,6 @@ public final class Policy {
             return new PolicyRuleDevice();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private PolicyRuleDevice(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                policy.Policy.PolicyRuleBasic.Builder subBuilder = null;
-                                if (policyRuleBasic_ != null) {
-                                    subBuilder = policyRuleBasic_.toBuilder();
-                                }
-                                policyRuleBasic_ = input.readMessage(policy.Policy.PolicyRuleBasic.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(policyRuleBasic_);
-                                    policyRuleBasic_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    deviceList_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                deviceList_.add(input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    deviceList_ = java.util.Collections.unmodifiableList(deviceList_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return policy.Policy.internal_static_policy_PolicyRuleDevice_descriptor;
         }
@@ -5182,11 +4970,12 @@ public final class Policy {
          */
         @java.lang.Override
         public policy.Policy.PolicyRuleBasicOrBuilder getPolicyRuleBasicOrBuilder() {
-            return getPolicyRuleBasic();
+            return policyRuleBasic_ == null ? policy.Policy.PolicyRuleBasic.getDefaultInstance() : policyRuleBasic_;
         }
 
         public static final int DEVICELIST_FIELD_NUMBER = 2;
 
+        @SuppressWarnings("serial")
         private java.util.List deviceList_;
 
         /**
@@ -5270,7 +5059,7 @@ public final class Policy {
             for (int i = 0; i < deviceList_.size(); i++) {
                 output.writeMessage(2, deviceList_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -5285,7 +5074,7 @@ public final class Policy {
             for (int i = 0; i < deviceList_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, deviceList_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -5307,7 +5096,7 @@ public final class Policy {
             }
             if (!getDeviceListList().equals(other.getDeviceListList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -5327,7 +5116,7 @@ public final class Policy {
                 hash = (37 * hash) + DEVICELIST_FIELD_NUMBER;
                 hash = (53 * hash) + getDeviceListList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -5425,35 +5214,28 @@ public final class Policy {
 
             // Construct using policy.Policy.PolicyRuleDevice.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getDeviceListFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (policyRuleBasicBuilder_ == null) {
-                    policyRuleBasic_ = null;
-                } else {
-                    policyRuleBasic_ = null;
+                bitField0_ = 0;
+                policyRuleBasic_ = null;
+                if (policyRuleBasicBuilder_ != null) {
+                    policyRuleBasicBuilder_.dispose();
                     policyRuleBasicBuilder_ = null;
                 }
                 if (deviceListBuilder_ == null) {
                     deviceList_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    deviceList_ = null;
                     deviceListBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000002);
                 return this;
             }
 
@@ -5479,53 +5261,31 @@ public final class Policy {
             @java.lang.Override
             public policy.Policy.PolicyRuleDevice buildPartial() {
                 policy.Policy.PolicyRuleDevice result = new policy.Policy.PolicyRuleDevice(this);
-                int from_bitField0_ = bitField0_;
-                if (policyRuleBasicBuilder_ == null) {
-                    result.policyRuleBasic_ = policyRuleBasic_;
-                } else {
-                    result.policyRuleBasic_ = policyRuleBasicBuilder_.build();
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(policy.Policy.PolicyRuleDevice result) {
                 if (deviceListBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0)) {
+                    if (((bitField0_ & 0x00000002) != 0)) {
                         deviceList_ = java.util.Collections.unmodifiableList(deviceList_);
-                        bitField0_ = (bitField0_ & ~0x00000001);
+                        bitField0_ = (bitField0_ & ~0x00000002);
                     }
                     result.deviceList_ = deviceList_;
                 } else {
                     result.deviceList_ = deviceListBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
             }
 
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(policy.Policy.PolicyRuleDevice result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.policyRuleBasic_ = policyRuleBasicBuilder_ == null ? policyRuleBasic_ : policyRuleBasicBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -5548,7 +5308,7 @@ public final class Policy {
                     if (!other.deviceList_.isEmpty()) {
                         if (deviceList_.isEmpty()) {
                             deviceList_ = other.deviceList_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                         } else {
                             ensureDeviceListIsMutable();
                             deviceList_.addAll(other.deviceList_);
@@ -5561,14 +5321,14 @@ public final class Policy {
                             deviceListBuilder_.dispose();
                             deviceListBuilder_ = null;
                             deviceList_ = other.deviceList_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                             deviceListBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDeviceListFieldBuilder() : null;
                         } else {
                             deviceListBuilder_.addAllMessages(other.deviceList_);
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -5580,17 +5340,54 @@ public final class Policy {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                policy.Policy.PolicyRuleDevice parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getPolicyRuleBasicFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    context.ContextOuterClass.DeviceId m = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
+                                    if (deviceListBuilder_ == null) {
+                                        ensureDeviceListIsMutable();
+                                        deviceList_.add(m);
+                                    } else {
+                                        deviceListBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (policy.Policy.PolicyRuleDevice) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -5609,7 +5406,7 @@ public final class Policy {
              * @return Whether the policyRuleBasic field is set.
              */
             public boolean hasPolicyRuleBasic() {
-                return policyRuleBasicBuilder_ != null || policyRuleBasic_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -5641,10 +5438,11 @@ public final class Policy {
                         throw new NullPointerException();
                     }
                     policyRuleBasic_ = value;
-                    onChanged();
                 } else {
                     policyRuleBasicBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -5658,10 +5456,11 @@ public final class Policy {
             public Builder setPolicyRuleBasic(policy.Policy.PolicyRuleBasic.Builder builderForValue) {
                 if (policyRuleBasicBuilder_ == null) {
                     policyRuleBasic_ = builderForValue.build();
-                    onChanged();
                 } else {
                     policyRuleBasicBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -5674,15 +5473,16 @@ public final class Policy {
              */
             public Builder mergePolicyRuleBasic(policy.Policy.PolicyRuleBasic value) {
                 if (policyRuleBasicBuilder_ == null) {
-                    if (policyRuleBasic_ != null) {
-                        policyRuleBasic_ = policy.Policy.PolicyRuleBasic.newBuilder(policyRuleBasic_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && policyRuleBasic_ != null && policyRuleBasic_ != policy.Policy.PolicyRuleBasic.getDefaultInstance()) {
+                        getPolicyRuleBasicBuilder().mergeFrom(value);
                     } else {
                         policyRuleBasic_ = value;
                     }
-                    onChanged();
                 } else {
                     policyRuleBasicBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -5694,13 +5494,13 @@ public final class Policy {
              * .policy.PolicyRuleBasic policyRuleBasic = 1;
              */
             public Builder clearPolicyRuleBasic() {
-                if (policyRuleBasicBuilder_ == null) {
-                    policyRuleBasic_ = null;
-                    onChanged();
-                } else {
-                    policyRuleBasic_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                policyRuleBasic_ = null;
+                if (policyRuleBasicBuilder_ != null) {
+                    policyRuleBasicBuilder_.dispose();
                     policyRuleBasicBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -5712,6 +5512,7 @@ public final class Policy {
              * .policy.PolicyRuleBasic policyRuleBasic = 1;
              */
             public policy.Policy.PolicyRuleBasic.Builder getPolicyRuleBasicBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getPolicyRuleBasicFieldBuilder().getBuilder();
             }
@@ -5749,9 +5550,9 @@ public final class Policy {
             private java.util.List deviceList_ = java.util.Collections.emptyList();
 
             private void ensureDeviceListIsMutable() {
-                if (!((bitField0_ & 0x00000001) != 0)) {
+                if (!((bitField0_ & 0x00000002) != 0)) {
                     deviceList_ = new java.util.ArrayList(deviceList_);
-                    bitField0_ |= 0x00000001;
+                    bitField0_ |= 0x00000002;
                 }
             }
 
@@ -5947,7 +5748,7 @@ public final class Policy {
             public Builder clearDeviceList() {
                 if (deviceListBuilder_ == null) {
                     deviceList_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
+                    bitField0_ = (bitField0_ & ~0x00000002);
                     onChanged();
                 } else {
                     deviceListBuilder_.clear();
@@ -6049,7 +5850,7 @@ public final class Policy {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getDeviceListFieldBuilder() {
                 if (deviceListBuilder_ == null) {
-                    deviceListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(deviceList_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    deviceListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(deviceList_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
                     deviceList_ = null;
                 }
                 return deviceListBuilder_;
@@ -6082,7 +5883,17 @@ public final class Policy {
 
             @java.lang.Override
             public PolicyRuleDevice parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new PolicyRuleDevice(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -6138,7 +5949,7 @@ public final class Policy {
          */
         policy.Policy.PolicyRuleDeviceOrBuilder getDeviceOrBuilder();
 
-        public policy.Policy.PolicyRule.PolicyRuleCase getPolicyRuleCase();
+        policy.Policy.PolicyRule.PolicyRuleCase getPolicyRuleCase();
     }
 
     /**
@@ -6167,72 +5978,6 @@ public final class Policy {
             return new PolicyRule();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private PolicyRule(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                policy.Policy.PolicyRuleService.Builder subBuilder = null;
-                                if (policyRuleCase_ == 1) {
-                                    subBuilder = ((policy.Policy.PolicyRuleService) policyRule_).toBuilder();
-                                }
-                                policyRule_ = input.readMessage(policy.Policy.PolicyRuleService.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom((policy.Policy.PolicyRuleService) policyRule_);
-                                    policyRule_ = subBuilder.buildPartial();
-                                }
-                                policyRuleCase_ = 1;
-                                break;
-                            }
-                        case 18:
-                            {
-                                policy.Policy.PolicyRuleDevice.Builder subBuilder = null;
-                                if (policyRuleCase_ == 2) {
-                                    subBuilder = ((policy.Policy.PolicyRuleDevice) policyRule_).toBuilder();
-                                }
-                                policyRule_ = input.readMessage(policy.Policy.PolicyRuleDevice.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom((policy.Policy.PolicyRuleDevice) policyRule_);
-                                    policyRule_ = subBuilder.buildPartial();
-                                }
-                                policyRuleCase_ = 2;
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return policy.Policy.internal_static_policy_PolicyRule_descriptor;
         }
@@ -6244,6 +5989,7 @@ public final class Policy {
 
         private int policyRuleCase_ = 0;
 
+        @SuppressWarnings("serial")
         private java.lang.Object policyRule_;
 
         public enum PolicyRuleCase implements com.google.protobuf.Internal.EnumLite, com.google.protobuf.AbstractMessage.InternalOneOfEnum {
@@ -6377,7 +6123,7 @@ public final class Policy {
             if (policyRuleCase_ == 2) {
                 output.writeMessage(2, (policy.Policy.PolicyRuleDevice) policyRule_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -6392,7 +6138,7 @@ public final class Policy {
             if (policyRuleCase_ == 2) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, (policy.Policy.PolicyRuleDevice) policyRule_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -6420,7 +6166,7 @@ public final class Policy {
                 case 0:
                 default:
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -6444,7 +6190,7 @@ public final class Policy {
                 case 0:
                 default:
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -6542,22 +6288,22 @@ public final class Policy {
 
             // Construct using policy.Policy.PolicyRule.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
+                if (serviceBuilder_ != null) {
+                    serviceBuilder_.clear();
+                }
+                if (deviceBuilder_ != null) {
+                    deviceBuilder_.clear();
+                }
                 policyRuleCase_ = 0;
                 policyRule_ = null;
                 return this;
@@ -6577,61 +6323,35 @@ public final class Policy {
             public policy.Policy.PolicyRule build() {
                 policy.Policy.PolicyRule result = buildPartial();
                 if (!result.isInitialized()) {
-                    throw newUninitializedMessageException(result);
-                }
-                return result;
-            }
-
-            @java.lang.Override
-            public policy.Policy.PolicyRule buildPartial() {
-                policy.Policy.PolicyRule result = new policy.Policy.PolicyRule(this);
-                if (policyRuleCase_ == 1) {
-                    if (serviceBuilder_ == null) {
-                        result.policyRule_ = policyRule_;
-                    } else {
-                        result.policyRule_ = serviceBuilder_.build();
-                    }
-                }
-                if (policyRuleCase_ == 2) {
-                    if (deviceBuilder_ == null) {
-                        result.policyRule_ = policyRule_;
-                    } else {
-                        result.policyRule_ = deviceBuilder_.build();
-                    }
-                }
-                result.policyRuleCase_ = policyRuleCase_;
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
             }
 
             @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
+            public policy.Policy.PolicyRule buildPartial() {
+                policy.Policy.PolicyRule result = new policy.Policy.PolicyRule(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                buildPartialOneofs(result);
+                onBuilt();
+                return result;
             }
 
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
+            private void buildPartial0(policy.Policy.PolicyRule result) {
+                int from_bitField0_ = bitField0_;
             }
 
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartialOneofs(policy.Policy.PolicyRule result) {
+                result.policyRuleCase_ = policyRuleCase_;
+                result.policyRule_ = this.policyRule_;
+                if (policyRuleCase_ == 1 && serviceBuilder_ != null) {
+                    result.policyRule_ = serviceBuilder_.build();
+                }
+                if (policyRuleCase_ == 2 && deviceBuilder_ != null) {
+                    result.policyRule_ = deviceBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -6663,7 +6383,7 @@ public final class Policy {
                             break;
                         }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -6675,17 +6395,49 @@ public final class Policy {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                policy.Policy.PolicyRule parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getServiceFieldBuilder().getBuilder(), extensionRegistry);
+                                    policyRuleCase_ = 1;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getDeviceFieldBuilder().getBuilder(), extensionRegistry);
+                                    policyRuleCase_ = 2;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (policy.Policy.PolicyRule) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -6704,6 +6456,8 @@ public final class Policy {
                 return this;
             }
 
+            private int bitField0_;
+
             private com.google.protobuf.SingleFieldBuilderV3 serviceBuilder_;
 
             /**
@@ -6779,8 +6533,9 @@ public final class Policy {
                 } else {
                     if (policyRuleCase_ == 1) {
                         serviceBuilder_.mergeFrom(value);
+                    } else {
+                        serviceBuilder_.setMessage(value);
                     }
-                    serviceBuilder_.setMessage(value);
                 }
                 policyRuleCase_ = 1;
                 return this;
@@ -6841,7 +6596,6 @@ public final class Policy {
                 }
                 policyRuleCase_ = 1;
                 onChanged();
-                ;
                 return serviceBuilder_;
             }
 
@@ -6920,8 +6674,9 @@ public final class Policy {
                 } else {
                     if (policyRuleCase_ == 2) {
                         deviceBuilder_.mergeFrom(value);
+                    } else {
+                        deviceBuilder_.setMessage(value);
                     }
-                    deviceBuilder_.setMessage(value);
                 }
                 policyRuleCase_ = 2;
                 return this;
@@ -6982,7 +6737,6 @@ public final class Policy {
                 }
                 policyRuleCase_ = 2;
                 onChanged();
-                ;
                 return deviceBuilder_;
             }
 
@@ -7013,7 +6767,17 @@ public final class Policy {
 
             @java.lang.Override
             public PolicyRule parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new PolicyRule(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -7088,57 +6852,6 @@ public final class Policy {
             return new PolicyRuleIdList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private PolicyRuleIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    policyRuleIdList_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                policyRuleIdList_.add(input.readMessage(policy.Policy.PolicyRuleId.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    policyRuleIdList_ = java.util.Collections.unmodifiableList(policyRuleIdList_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return policy.Policy.internal_static_policy_PolicyRuleIdList_descriptor;
         }
@@ -7150,6 +6863,7 @@ public final class Policy {
 
         public static final int POLICYRULEIDLIST_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List policyRuleIdList_;
 
         /**
@@ -7210,7 +6924,7 @@ public final class Policy {
             for (int i = 0; i < policyRuleIdList_.size(); i++) {
                 output.writeMessage(1, policyRuleIdList_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -7222,7 +6936,7 @@ public final class Policy {
             for (int i = 0; i < policyRuleIdList_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, policyRuleIdList_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -7238,7 +6952,7 @@ public final class Policy {
             policy.Policy.PolicyRuleIdList other = (policy.Policy.PolicyRuleIdList) obj;
             if (!getPolicyRuleIdListList().equals(other.getPolicyRuleIdListList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -7254,7 +6968,7 @@ public final class Policy {
                 hash = (37 * hash) + POLICYRULEIDLIST_FIELD_NUMBER;
                 hash = (53 * hash) + getPolicyRuleIdListList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -7352,29 +7066,23 @@ public final class Policy {
 
             // Construct using policy.Policy.PolicyRuleIdList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getPolicyRuleIdListFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (policyRuleIdListBuilder_ == null) {
                     policyRuleIdList_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    policyRuleIdList_ = null;
                     policyRuleIdListBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -7400,7 +7108,15 @@ public final class Policy {
             @java.lang.Override
             public policy.Policy.PolicyRuleIdList buildPartial() {
                 policy.Policy.PolicyRuleIdList result = new policy.Policy.PolicyRuleIdList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(policy.Policy.PolicyRuleIdList result) {
                 if (policyRuleIdListBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         policyRuleIdList_ = java.util.Collections.unmodifiableList(policyRuleIdList_);
@@ -7410,38 +7126,10 @@ public final class Policy {
                 } else {
                     result.policyRuleIdList_ = policyRuleIdListBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
             }
 
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(policy.Policy.PolicyRuleIdList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -7481,7 +7169,7 @@ public final class Policy {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -7493,17 +7181,47 @@ public final class Policy {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                policy.Policy.PolicyRuleIdList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    policy.Policy.PolicyRuleId m = input.readMessage(policy.Policy.PolicyRuleId.parser(), extensionRegistry);
+                                    if (policyRuleIdListBuilder_ == null) {
+                                        ensurePolicyRuleIdListIsMutable();
+                                        policyRuleIdList_.add(m);
+                                    } else {
+                                        policyRuleIdListBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (policy.Policy.PolicyRuleIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -7773,7 +7491,17 @@ public final class Policy {
 
             @java.lang.Override
             public PolicyRuleIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new PolicyRuleIdList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -7848,57 +7576,6 @@ public final class Policy {
             return new PolicyRuleServiceList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private PolicyRuleServiceList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    policyRuleServiceList_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                policyRuleServiceList_.add(input.readMessage(policy.Policy.PolicyRuleService.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    policyRuleServiceList_ = java.util.Collections.unmodifiableList(policyRuleServiceList_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return policy.Policy.internal_static_policy_PolicyRuleServiceList_descriptor;
         }
@@ -7910,6 +7587,7 @@ public final class Policy {
 
         public static final int POLICYRULESERVICELIST_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List policyRuleServiceList_;
 
         /**
@@ -7970,7 +7648,7 @@ public final class Policy {
             for (int i = 0; i < policyRuleServiceList_.size(); i++) {
                 output.writeMessage(1, policyRuleServiceList_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -7982,7 +7660,7 @@ public final class Policy {
             for (int i = 0; i < policyRuleServiceList_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, policyRuleServiceList_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -7998,7 +7676,7 @@ public final class Policy {
             policy.Policy.PolicyRuleServiceList other = (policy.Policy.PolicyRuleServiceList) obj;
             if (!getPolicyRuleServiceListList().equals(other.getPolicyRuleServiceListList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -8014,7 +7692,7 @@ public final class Policy {
                 hash = (37 * hash) + POLICYRULESERVICELIST_FIELD_NUMBER;
                 hash = (53 * hash) + getPolicyRuleServiceListList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -8112,29 +7790,23 @@ public final class Policy {
 
             // Construct using policy.Policy.PolicyRuleServiceList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getPolicyRuleServiceListFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (policyRuleServiceListBuilder_ == null) {
                     policyRuleServiceList_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    policyRuleServiceList_ = null;
                     policyRuleServiceListBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -8160,7 +7832,15 @@ public final class Policy {
             @java.lang.Override
             public policy.Policy.PolicyRuleServiceList buildPartial() {
                 policy.Policy.PolicyRuleServiceList result = new policy.Policy.PolicyRuleServiceList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(policy.Policy.PolicyRuleServiceList result) {
                 if (policyRuleServiceListBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         policyRuleServiceList_ = java.util.Collections.unmodifiableList(policyRuleServiceList_);
@@ -8170,38 +7850,10 @@ public final class Policy {
                 } else {
                     result.policyRuleServiceList_ = policyRuleServiceListBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
             }
 
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(policy.Policy.PolicyRuleServiceList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -8241,7 +7893,7 @@ public final class Policy {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -8253,17 +7905,47 @@ public final class Policy {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                policy.Policy.PolicyRuleServiceList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    policy.Policy.PolicyRuleService m = input.readMessage(policy.Policy.PolicyRuleService.parser(), extensionRegistry);
+                                    if (policyRuleServiceListBuilder_ == null) {
+                                        ensurePolicyRuleServiceListIsMutable();
+                                        policyRuleServiceList_.add(m);
+                                    } else {
+                                        policyRuleServiceListBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (policy.Policy.PolicyRuleServiceList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -8533,7 +8215,17 @@ public final class Policy {
 
             @java.lang.Override
             public PolicyRuleServiceList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new PolicyRuleServiceList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -8608,57 +8300,6 @@ public final class Policy {
             return new PolicyRuleDeviceList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private PolicyRuleDeviceList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    policyRuleDeviceList_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                policyRuleDeviceList_.add(input.readMessage(policy.Policy.PolicyRuleDevice.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    policyRuleDeviceList_ = java.util.Collections.unmodifiableList(policyRuleDeviceList_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return policy.Policy.internal_static_policy_PolicyRuleDeviceList_descriptor;
         }
@@ -8670,6 +8311,7 @@ public final class Policy {
 
         public static final int POLICYRULEDEVICELIST_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List policyRuleDeviceList_;
 
         /**
@@ -8730,7 +8372,7 @@ public final class Policy {
             for (int i = 0; i < policyRuleDeviceList_.size(); i++) {
                 output.writeMessage(1, policyRuleDeviceList_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -8742,7 +8384,7 @@ public final class Policy {
             for (int i = 0; i < policyRuleDeviceList_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, policyRuleDeviceList_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -8758,7 +8400,7 @@ public final class Policy {
             policy.Policy.PolicyRuleDeviceList other = (policy.Policy.PolicyRuleDeviceList) obj;
             if (!getPolicyRuleDeviceListList().equals(other.getPolicyRuleDeviceListList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -8774,7 +8416,7 @@ public final class Policy {
                 hash = (37 * hash) + POLICYRULEDEVICELIST_FIELD_NUMBER;
                 hash = (53 * hash) + getPolicyRuleDeviceListList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -8872,29 +8514,23 @@ public final class Policy {
 
             // Construct using policy.Policy.PolicyRuleDeviceList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getPolicyRuleDeviceListFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (policyRuleDeviceListBuilder_ == null) {
                     policyRuleDeviceList_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    policyRuleDeviceList_ = null;
                     policyRuleDeviceListBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -8920,7 +8556,15 @@ public final class Policy {
             @java.lang.Override
             public policy.Policy.PolicyRuleDeviceList buildPartial() {
                 policy.Policy.PolicyRuleDeviceList result = new policy.Policy.PolicyRuleDeviceList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(policy.Policy.PolicyRuleDeviceList result) {
                 if (policyRuleDeviceListBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         policyRuleDeviceList_ = java.util.Collections.unmodifiableList(policyRuleDeviceList_);
@@ -8930,38 +8574,10 @@ public final class Policy {
                 } else {
                     result.policyRuleDeviceList_ = policyRuleDeviceListBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
             }
 
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(policy.Policy.PolicyRuleDeviceList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -9001,7 +8617,7 @@ public final class Policy {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -9013,17 +8629,47 @@ public final class Policy {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                policy.Policy.PolicyRuleDeviceList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    policy.Policy.PolicyRuleDevice m = input.readMessage(policy.Policy.PolicyRuleDevice.parser(), extensionRegistry);
+                                    if (policyRuleDeviceListBuilder_ == null) {
+                                        ensurePolicyRuleDeviceListIsMutable();
+                                        policyRuleDeviceList_.add(m);
+                                    } else {
+                                        policyRuleDeviceListBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (policy.Policy.PolicyRuleDeviceList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -9293,7 +8939,17 @@ public final class Policy {
 
             @java.lang.Override
             public PolicyRuleDeviceList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new PolicyRuleDeviceList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -9368,57 +9024,6 @@ public final class Policy {
             return new PolicyRuleList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private PolicyRuleList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    policyRules_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                policyRules_.add(input.readMessage(policy.Policy.PolicyRule.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    policyRules_ = java.util.Collections.unmodifiableList(policyRules_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return policy.Policy.internal_static_policy_PolicyRuleList_descriptor;
         }
@@ -9430,6 +9035,7 @@ public final class Policy {
 
         public static final int POLICYRULES_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List policyRules_;
 
         /**
@@ -9490,7 +9096,7 @@ public final class Policy {
             for (int i = 0; i < policyRules_.size(); i++) {
                 output.writeMessage(1, policyRules_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -9502,7 +9108,7 @@ public final class Policy {
             for (int i = 0; i < policyRules_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, policyRules_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -9518,7 +9124,7 @@ public final class Policy {
             policy.Policy.PolicyRuleList other = (policy.Policy.PolicyRuleList) obj;
             if (!getPolicyRulesList().equals(other.getPolicyRulesList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -9534,7 +9140,7 @@ public final class Policy {
                 hash = (37 * hash) + POLICYRULES_FIELD_NUMBER;
                 hash = (53 * hash) + getPolicyRulesList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -9632,29 +9238,23 @@ public final class Policy {
 
             // Construct using policy.Policy.PolicyRuleList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getPolicyRulesFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (policyRulesBuilder_ == null) {
                     policyRules_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    policyRules_ = null;
                     policyRulesBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -9680,7 +9280,15 @@ public final class Policy {
             @java.lang.Override
             public policy.Policy.PolicyRuleList buildPartial() {
                 policy.Policy.PolicyRuleList result = new policy.Policy.PolicyRuleList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(policy.Policy.PolicyRuleList result) {
                 if (policyRulesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         policyRules_ = java.util.Collections.unmodifiableList(policyRules_);
@@ -9690,38 +9298,10 @@ public final class Policy {
                 } else {
                     result.policyRules_ = policyRulesBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
             }
 
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(policy.Policy.PolicyRuleList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -9761,7 +9341,7 @@ public final class Policy {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -9773,17 +9353,47 @@ public final class Policy {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                policy.Policy.PolicyRuleList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    policy.Policy.PolicyRule m = input.readMessage(policy.Policy.PolicyRule.parser(), extensionRegistry);
+                                    if (policyRulesBuilder_ == null) {
+                                        ensurePolicyRulesIsMutable();
+                                        policyRules_.add(m);
+                                    } else {
+                                        policyRulesBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (policy.Policy.PolicyRuleList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -10053,7 +9663,17 @@ public final class Policy {
 
             @java.lang.Override
             public PolicyRuleList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new PolicyRuleList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
diff --git a/src/policy/target/generated-sources/grpc/policy/PolicyAction.java b/src/policy/target/generated-sources/grpc/policy/PolicyAction.java
index 8e84a0a847d93bd2dd863244ef7acf3888f6e6c5..097097d6f7f65512938dd8898e3f1f9b3191d2f1 100644
--- a/src/policy/target/generated-sources/grpc/policy/PolicyAction.java
+++ b/src/policy/target/generated-sources/grpc/policy/PolicyAction.java
@@ -229,63 +229,6 @@ public final class PolicyAction {
             return new PolicyRuleAction();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private PolicyRuleAction(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 8:
-                            {
-                                int rawValue = input.readEnum();
-                                action_ = rawValue;
-                                break;
-                            }
-                        case 18:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    actionConfig_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                actionConfig_.add(input.readMessage(policy.PolicyAction.PolicyRuleActionConfig.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    actionConfig_ = java.util.Collections.unmodifiableList(actionConfig_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return policy.PolicyAction.internal_static_policy_PolicyRuleAction_descriptor;
         }
@@ -297,7 +240,7 @@ public final class PolicyAction {
 
         public static final int ACTION_FIELD_NUMBER = 1;
 
-        private int action_;
+        private int action_ = 0;
 
         /**
          * .policy.PolicyRuleActionEnum action = 1;
@@ -314,13 +257,13 @@ public final class PolicyAction {
          */
         @java.lang.Override
         public policy.PolicyAction.PolicyRuleActionEnum getAction() {
-            @SuppressWarnings("deprecation")
-            policy.PolicyAction.PolicyRuleActionEnum result = policy.PolicyAction.PolicyRuleActionEnum.valueOf(action_);
+            policy.PolicyAction.PolicyRuleActionEnum result = policy.PolicyAction.PolicyRuleActionEnum.forNumber(action_);
             return result == null ? policy.PolicyAction.PolicyRuleActionEnum.UNRECOGNIZED : result;
         }
 
         public static final int ACTION_CONFIG_FIELD_NUMBER = 2;
 
+        @SuppressWarnings("serial")
         private java.util.List actionConfig_;
 
         /**
@@ -384,7 +327,7 @@ public final class PolicyAction {
             for (int i = 0; i < actionConfig_.size(); i++) {
                 output.writeMessage(2, actionConfig_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -399,7 +342,7 @@ public final class PolicyAction {
             for (int i = 0; i < actionConfig_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, actionConfig_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -417,7 +360,7 @@ public final class PolicyAction {
                 return false;
             if (!getActionConfigList().equals(other.getActionConfigList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -435,7 +378,7 @@ public final class PolicyAction {
                 hash = (37 * hash) + ACTION_CONFIG_FIELD_NUMBER;
                 hash = (53 * hash) + getActionConfigList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -533,30 +476,24 @@ public final class PolicyAction {
 
             // Construct using policy.PolicyAction.PolicyRuleAction.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getActionConfigFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 action_ = 0;
                 if (actionConfigBuilder_ == null) {
                     actionConfig_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    actionConfig_ = null;
                     actionConfigBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000002);
                 return this;
             }
 
@@ -582,49 +519,31 @@ public final class PolicyAction {
             @java.lang.Override
             public policy.PolicyAction.PolicyRuleAction buildPartial() {
                 policy.PolicyAction.PolicyRuleAction result = new policy.PolicyAction.PolicyRuleAction(this);
-                int from_bitField0_ = bitField0_;
-                result.action_ = action_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(policy.PolicyAction.PolicyRuleAction result) {
                 if (actionConfigBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0)) {
+                    if (((bitField0_ & 0x00000002) != 0)) {
                         actionConfig_ = java.util.Collections.unmodifiableList(actionConfig_);
-                        bitField0_ = (bitField0_ & ~0x00000001);
+                        bitField0_ = (bitField0_ & ~0x00000002);
                     }
                     result.actionConfig_ = actionConfig_;
                 } else {
                     result.actionConfig_ = actionConfigBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
             }
 
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(policy.PolicyAction.PolicyRuleAction result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.action_ = action_;
+                }
             }
 
             @java.lang.Override
@@ -647,7 +566,7 @@ public final class PolicyAction {
                     if (!other.actionConfig_.isEmpty()) {
                         if (actionConfig_.isEmpty()) {
                             actionConfig_ = other.actionConfig_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                         } else {
                             ensureActionConfigIsMutable();
                             actionConfig_.addAll(other.actionConfig_);
@@ -660,14 +579,14 @@ public final class PolicyAction {
                             actionConfigBuilder_.dispose();
                             actionConfigBuilder_ = null;
                             actionConfig_ = other.actionConfig_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                             actionConfigBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getActionConfigFieldBuilder() : null;
                         } else {
                             actionConfigBuilder_.addAllMessages(other.actionConfig_);
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -679,17 +598,54 @@ public final class PolicyAction {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                policy.PolicyAction.PolicyRuleAction parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 8:
+                                {
+                                    action_ = input.readEnum();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 8
+                            case 18:
+                                {
+                                    policy.PolicyAction.PolicyRuleActionConfig m = input.readMessage(policy.PolicyAction.PolicyRuleActionConfig.parser(), extensionRegistry);
+                                    if (actionConfigBuilder_ == null) {
+                                        ensureActionConfigIsMutable();
+                                        actionConfig_.add(m);
+                                    } else {
+                                        actionConfigBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (policy.PolicyAction.PolicyRuleAction) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -713,6 +669,7 @@ public final class PolicyAction {
              */
             public Builder setActionValue(int value) {
                 action_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -723,8 +680,7 @@ public final class PolicyAction {
              */
             @java.lang.Override
             public policy.PolicyAction.PolicyRuleActionEnum getAction() {
-                @SuppressWarnings("deprecation")
-                policy.PolicyAction.PolicyRuleActionEnum result = policy.PolicyAction.PolicyRuleActionEnum.valueOf(action_);
+                policy.PolicyAction.PolicyRuleActionEnum result = policy.PolicyAction.PolicyRuleActionEnum.forNumber(action_);
                 return result == null ? policy.PolicyAction.PolicyRuleActionEnum.UNRECOGNIZED : result;
             }
 
@@ -737,6 +693,7 @@ public final class PolicyAction {
                 if (value == null) {
                     throw new NullPointerException();
                 }
+                bitField0_ |= 0x00000001;
                 action_ = value.getNumber();
                 onChanged();
                 return this;
@@ -747,6 +704,7 @@ public final class PolicyAction {
              * @return This builder for chaining.
              */
             public Builder clearAction() {
+                bitField0_ = (bitField0_ & ~0x00000001);
                 action_ = 0;
                 onChanged();
                 return this;
@@ -755,9 +713,9 @@ public final class PolicyAction {
             private java.util.List actionConfig_ = java.util.Collections.emptyList();
 
             private void ensureActionConfigIsMutable() {
-                if (!((bitField0_ & 0x00000001) != 0)) {
+                if (!((bitField0_ & 0x00000002) != 0)) {
                     actionConfig_ = new java.util.ArrayList(actionConfig_);
-                    bitField0_ |= 0x00000001;
+                    bitField0_ |= 0x00000002;
                 }
             }
 
@@ -909,7 +867,7 @@ public final class PolicyAction {
             public Builder clearActionConfig() {
                 if (actionConfigBuilder_ == null) {
                     actionConfig_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
+                    bitField0_ = (bitField0_ & ~0x00000002);
                     onChanged();
                 } else {
                     actionConfigBuilder_.clear();
@@ -983,7 +941,7 @@ public final class PolicyAction {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getActionConfigFieldBuilder() {
                 if (actionConfigBuilder_ == null) {
-                    actionConfigBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(actionConfig_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    actionConfigBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(actionConfig_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
                     actionConfig_ = null;
                 }
                 return actionConfigBuilder_;
@@ -1016,7 +974,17 @@ public final class PolicyAction {
 
             @java.lang.Override
             public PolicyRuleAction parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new PolicyRuleAction(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -1091,56 +1059,6 @@ public final class PolicyAction {
             return new PolicyRuleActionConfig();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private PolicyRuleActionConfig(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                actionKey_ = s;
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                actionValue_ = s;
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return policy.PolicyAction.internal_static_policy_PolicyRuleActionConfig_descriptor;
         }
@@ -1152,7 +1070,8 @@ public final class PolicyAction {
 
         public static final int ACTION_KEY_FIELD_NUMBER = 1;
 
-        private volatile java.lang.Object actionKey_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object actionKey_ = "";
 
         /**
          * string action_key = 1;
@@ -1189,7 +1108,8 @@ public final class PolicyAction {
 
         public static final int ACTION_VALUE_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object actionValue_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object actionValue_ = "";
 
         /**
          * string action_value = 2;
@@ -1239,13 +1159,13 @@ public final class PolicyAction {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (!getActionKeyBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(actionKey_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, actionKey_);
             }
-            if (!getActionValueBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(actionValue_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, actionValue_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -1254,13 +1174,13 @@ public final class PolicyAction {
             if (size != -1)
                 return size;
             size = 0;
-            if (!getActionKeyBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(actionKey_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, actionKey_);
             }
-            if (!getActionValueBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(actionValue_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, actionValue_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -1278,7 +1198,7 @@ public final class PolicyAction {
                 return false;
             if (!getActionValue().equals(other.getActionValue()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -1294,7 +1214,7 @@ public final class PolicyAction {
             hash = (53 * hash) + getActionKey().hashCode();
             hash = (37 * hash) + ACTION_VALUE_FIELD_NUMBER;
             hash = (53 * hash) + getActionValue().hashCode();
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -1392,22 +1312,16 @@ public final class PolicyAction {
 
             // Construct using policy.PolicyAction.PolicyRuleActionConfig.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 actionKey_ = "";
                 actionValue_ = "";
                 return this;
@@ -1435,40 +1349,21 @@ public final class PolicyAction {
             @java.lang.Override
             public policy.PolicyAction.PolicyRuleActionConfig buildPartial() {
                 policy.PolicyAction.PolicyRuleActionConfig result = new policy.PolicyAction.PolicyRuleActionConfig(this);
-                result.actionKey_ = actionKey_;
-                result.actionValue_ = actionValue_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(policy.PolicyAction.PolicyRuleActionConfig result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.actionKey_ = actionKey_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.actionValue_ = actionValue_;
+                }
             }
 
             @java.lang.Override
@@ -1486,13 +1381,15 @@ public final class PolicyAction {
                     return this;
                 if (!other.getActionKey().isEmpty()) {
                     actionKey_ = other.actionKey_;
+                    bitField0_ |= 0x00000001;
                     onChanged();
                 }
                 if (!other.getActionValue().isEmpty()) {
                     actionValue_ = other.actionValue_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -1504,20 +1401,54 @@ public final class PolicyAction {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                policy.PolicyAction.PolicyRuleActionConfig parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    actionKey_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    actionValue_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (policy.PolicyAction.PolicyRuleActionConfig) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private java.lang.Object actionKey_ = "";
 
             /**
@@ -1561,6 +1492,7 @@ public final class PolicyAction {
                     throw new NullPointerException();
                 }
                 actionKey_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -1571,6 +1503,7 @@ public final class PolicyAction {
              */
             public Builder clearActionKey() {
                 actionKey_ = getDefaultInstance().getActionKey();
+                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -1586,6 +1519,7 @@ public final class PolicyAction {
                 }
                 checkByteStringIsUtf8(value);
                 actionKey_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -1633,6 +1567,7 @@ public final class PolicyAction {
                     throw new NullPointerException();
                 }
                 actionValue_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -1643,6 +1578,7 @@ public final class PolicyAction {
              */
             public Builder clearActionValue() {
                 actionValue_ = getDefaultInstance().getActionValue();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -1658,6 +1594,7 @@ public final class PolicyAction {
                 }
                 checkByteStringIsUtf8(value);
                 actionValue_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -1689,7 +1626,17 @@ public final class PolicyAction {
 
             @java.lang.Override
             public PolicyRuleActionConfig parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new PolicyRuleActionConfig(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
diff --git a/src/policy/target/generated-sources/grpc/policy/PolicyCondition.java b/src/policy/target/generated-sources/grpc/policy/PolicyCondition.java
index 269c8b4380fd8f764ab61c6b77c289268a72d7bb..f5b5fd96737cf062443282e6bcd50053a5fc7097 100644
--- a/src/policy/target/generated-sources/grpc/policy/PolicyCondition.java
+++ b/src/policy/target/generated-sources/grpc/policy/PolicyCondition.java
@@ -376,18 +376,30 @@ public final class PolicyCondition {
     com.google.protobuf.MessageOrBuilder {
 
         /**
+         * 
+         * to be migrated to: "kpi_manager.KpiId"
+         * 
+ * * .monitoring.KpiId kpiId = 1; * @return Whether the kpiId field is set. */ boolean hasKpiId(); /** + *
+         * to be migrated to: "kpi_manager.KpiId"
+         * 
+ * * .monitoring.KpiId kpiId = 1; * @return The kpiId. */ monitoring.Monitoring.KpiId getKpiId(); /** + *
+         * to be migrated to: "kpi_manager.KpiId"
+         * 
+ * * .monitoring.KpiId kpiId = 1; */ monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder(); @@ -449,76 +461,6 @@ public final class PolicyCondition { return new PolicyRuleCondition(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private PolicyRuleCondition(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - monitoring.Monitoring.KpiId.Builder subBuilder = null; - if (kpiId_ != null) { - subBuilder = kpiId_.toBuilder(); - } - kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(kpiId_); - kpiId_ = subBuilder.buildPartial(); - } - break; - } - case 16: - { - int rawValue = input.readEnum(); - numericalOperator_ = rawValue; - break; - } - case 26: - { - monitoring.Monitoring.KpiValue.Builder subBuilder = null; - if (kpiValue_ != null) { - subBuilder = kpiValue_.toBuilder(); - } - kpiValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(kpiValue_); - kpiValue_ = subBuilder.buildPartial(); - } - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return policy.PolicyCondition.internal_static_policy_PolicyRuleCondition_descriptor; } @@ -533,6 +475,10 @@ public final class PolicyCondition { private monitoring.Monitoring.KpiId kpiId_; /** + *
+         * to be migrated to: "kpi_manager.KpiId"
+         * 
+ * * .monitoring.KpiId kpiId = 1; * @return Whether the kpiId field is set. */ @@ -542,6 +488,10 @@ public final class PolicyCondition { } /** + *
+         * to be migrated to: "kpi_manager.KpiId"
+         * 
+ * * .monitoring.KpiId kpiId = 1; * @return The kpiId. */ @@ -551,16 +501,20 @@ public final class PolicyCondition { } /** + *
+         * to be migrated to: "kpi_manager.KpiId"
+         * 
+ * * .monitoring.KpiId kpiId = 1; */ @java.lang.Override public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() { - return getKpiId(); + return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_; } public static final int NUMERICALOPERATOR_FIELD_NUMBER = 2; - private int numericalOperator_; + private int numericalOperator_ = 0; /** * .policy.NumericalOperator numericalOperator = 2; @@ -577,8 +531,7 @@ public final class PolicyCondition { */ @java.lang.Override public policy.PolicyCondition.NumericalOperator getNumericalOperator() { - @SuppressWarnings("deprecation") - policy.PolicyCondition.NumericalOperator result = policy.PolicyCondition.NumericalOperator.valueOf(numericalOperator_); + policy.PolicyCondition.NumericalOperator result = policy.PolicyCondition.NumericalOperator.forNumber(numericalOperator_); return result == null ? policy.PolicyCondition.NumericalOperator.UNRECOGNIZED : result; } @@ -609,7 +562,7 @@ public final class PolicyCondition { */ @java.lang.Override public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() { - return getKpiValue(); + return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_; } private byte memoizedIsInitialized = -1; @@ -636,7 +589,7 @@ public final class PolicyCondition { if (kpiValue_ != null) { output.writeMessage(3, getKpiValue()); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -654,7 +607,7 @@ public final class PolicyCondition { if (kpiValue_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getKpiValue()); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -682,7 +635,7 @@ public final class PolicyCondition { if (!getKpiValue().equals(other.getKpiValue())) return false; } - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -704,7 +657,7 @@ public final class PolicyCondition { hash = (37 * hash) + KPIVALUE_FIELD_NUMBER; hash = (53 * hash) + getKpiValue().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -802,33 +755,25 @@ public final class PolicyCondition { // Construct using policy.PolicyCondition.PolicyRuleCondition.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); - if (kpiIdBuilder_ == null) { - kpiId_ = null; - } else { - kpiId_ = null; + bitField0_ = 0; + kpiId_ = null; + if (kpiIdBuilder_ != null) { + kpiIdBuilder_.dispose(); kpiIdBuilder_ = null; } numericalOperator_ = 0; - if (kpiValueBuilder_ == null) { - kpiValue_ = null; - } else { - kpiValue_ = null; + kpiValue_ = null; + if (kpiValueBuilder_ != null) { + kpiValueBuilder_.dispose(); kpiValueBuilder_ = null; } return this; @@ -856,49 +801,24 @@ public final class PolicyCondition { @java.lang.Override public policy.PolicyCondition.PolicyRuleCondition buildPartial() { policy.PolicyCondition.PolicyRuleCondition result = new policy.PolicyCondition.PolicyRuleCondition(this); - if (kpiIdBuilder_ == null) { - result.kpiId_ = kpiId_; - } else { - result.kpiId_ = kpiIdBuilder_.build(); - } - result.numericalOperator_ = numericalOperator_; - if (kpiValueBuilder_ == null) { - result.kpiValue_ = kpiValue_; - } else { - result.kpiValue_ = kpiValueBuilder_.build(); + if (bitField0_ != 0) { + buildPartial0(result); } onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(policy.PolicyCondition.PolicyRuleCondition result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.numericalOperator_ = numericalOperator_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.kpiValue_ = kpiValueBuilder_ == null ? kpiValue_ : kpiValueBuilder_.build(); + } } @java.lang.Override @@ -923,7 +843,7 @@ public final class PolicyCondition { if (other.hasKpiValue()) { mergeKpiValue(other.getKpiValue()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -935,33 +855,82 @@ public final class PolicyCondition { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - policy.PolicyCondition.PolicyRuleCondition parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 16: + { + numericalOperator_ = input.readEnum(); + bitField0_ |= 0x00000002; + break; + } + // case 16 + case 26: + { + input.readMessage(getKpiValueFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000004; + break; + } + // case 26 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (policy.PolicyCondition.PolicyRuleCondition) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } + private int bitField0_; + private monitoring.Monitoring.KpiId kpiId_; private com.google.protobuf.SingleFieldBuilderV3 kpiIdBuilder_; /** + *
+             * to be migrated to: "kpi_manager.KpiId"
+             * 
+ * * .monitoring.KpiId kpiId = 1; * @return Whether the kpiId field is set. */ public boolean hasKpiId() { - return kpiIdBuilder_ != null || kpiId_ != null; + return ((bitField0_ & 0x00000001) != 0); } /** + *
+             * to be migrated to: "kpi_manager.KpiId"
+             * 
+ * * .monitoring.KpiId kpiId = 1; * @return The kpiId. */ @@ -974,6 +943,10 @@ public final class PolicyCondition { } /** + *
+             * to be migrated to: "kpi_manager.KpiId"
+             * 
+ * * .monitoring.KpiId kpiId = 1; */ public Builder setKpiId(monitoring.Monitoring.KpiId value) { @@ -982,66 +955,90 @@ public final class PolicyCondition { throw new NullPointerException(); } kpiId_ = value; - onChanged(); } else { kpiIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } /** + *
+             * to be migrated to: "kpi_manager.KpiId"
+             * 
+ * * .monitoring.KpiId kpiId = 1; */ public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) { if (kpiIdBuilder_ == null) { kpiId_ = builderForValue.build(); - onChanged(); } else { kpiIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } /** + *
+             * to be migrated to: "kpi_manager.KpiId"
+             * 
+ * * .monitoring.KpiId kpiId = 1; */ public Builder mergeKpiId(monitoring.Monitoring.KpiId value) { if (kpiIdBuilder_ == null) { - if (kpiId_ != null) { - kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) { + getKpiIdBuilder().mergeFrom(value); } else { kpiId_ = value; } - onChanged(); } else { kpiIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } /** + *
+             * to be migrated to: "kpi_manager.KpiId"
+             * 
+ * * .monitoring.KpiId kpiId = 1; */ public Builder clearKpiId() { - if (kpiIdBuilder_ == null) { - kpiId_ = null; - onChanged(); - } else { - kpiId_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + kpiId_ = null; + if (kpiIdBuilder_ != null) { + kpiIdBuilder_.dispose(); kpiIdBuilder_ = null; } + onChanged(); return this; } /** + *
+             * to be migrated to: "kpi_manager.KpiId"
+             * 
+ * * .monitoring.KpiId kpiId = 1; */ public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() { + bitField0_ |= 0x00000001; onChanged(); return getKpiIdFieldBuilder().getBuilder(); } /** + *
+             * to be migrated to: "kpi_manager.KpiId"
+             * 
+ * * .monitoring.KpiId kpiId = 1; */ public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() { @@ -1053,6 +1050,10 @@ public final class PolicyCondition { } /** + *
+             * to be migrated to: "kpi_manager.KpiId"
+             * 
+ * * .monitoring.KpiId kpiId = 1; */ private com.google.protobuf.SingleFieldBuilderV3 getKpiIdFieldBuilder() { @@ -1081,6 +1082,7 @@ public final class PolicyCondition { */ public Builder setNumericalOperatorValue(int value) { numericalOperator_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -1091,8 +1093,7 @@ public final class PolicyCondition { */ @java.lang.Override public policy.PolicyCondition.NumericalOperator getNumericalOperator() { - @SuppressWarnings("deprecation") - policy.PolicyCondition.NumericalOperator result = policy.PolicyCondition.NumericalOperator.valueOf(numericalOperator_); + policy.PolicyCondition.NumericalOperator result = policy.PolicyCondition.NumericalOperator.forNumber(numericalOperator_); return result == null ? policy.PolicyCondition.NumericalOperator.UNRECOGNIZED : result; } @@ -1105,6 +1106,7 @@ public final class PolicyCondition { if (value == null) { throw new NullPointerException(); } + bitField0_ |= 0x00000002; numericalOperator_ = value.getNumber(); onChanged(); return this; @@ -1115,6 +1117,7 @@ public final class PolicyCondition { * @return This builder for chaining. */ public Builder clearNumericalOperator() { + bitField0_ = (bitField0_ & ~0x00000002); numericalOperator_ = 0; onChanged(); return this; @@ -1129,7 +1132,7 @@ public final class PolicyCondition { * @return Whether the kpiValue field is set. */ public boolean hasKpiValue() { - return kpiValueBuilder_ != null || kpiValue_ != null; + return ((bitField0_ & 0x00000004) != 0); } /** @@ -1153,10 +1156,11 @@ public final class PolicyCondition { throw new NullPointerException(); } kpiValue_ = value; - onChanged(); } else { kpiValueBuilder_.setMessage(value); } + bitField0_ |= 0x00000004; + onChanged(); return this; } @@ -1166,10 +1170,11 @@ public final class PolicyCondition { public Builder setKpiValue(monitoring.Monitoring.KpiValue.Builder builderForValue) { if (kpiValueBuilder_ == null) { kpiValue_ = builderForValue.build(); - onChanged(); } else { kpiValueBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000004; + onChanged(); return this; } @@ -1178,15 +1183,16 @@ public final class PolicyCondition { */ public Builder mergeKpiValue(monitoring.Monitoring.KpiValue value) { if (kpiValueBuilder_ == null) { - if (kpiValue_ != null) { - kpiValue_ = monitoring.Monitoring.KpiValue.newBuilder(kpiValue_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000004) != 0) && kpiValue_ != null && kpiValue_ != monitoring.Monitoring.KpiValue.getDefaultInstance()) { + getKpiValueBuilder().mergeFrom(value); } else { kpiValue_ = value; } - onChanged(); } else { kpiValueBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000004; + onChanged(); return this; } @@ -1194,13 +1200,13 @@ public final class PolicyCondition { * .monitoring.KpiValue kpiValue = 3; */ public Builder clearKpiValue() { - if (kpiValueBuilder_ == null) { - kpiValue_ = null; - onChanged(); - } else { - kpiValue_ = null; + bitField0_ = (bitField0_ & ~0x00000004); + kpiValue_ = null; + if (kpiValueBuilder_ != null) { + kpiValueBuilder_.dispose(); kpiValueBuilder_ = null; } + onChanged(); return this; } @@ -1208,6 +1214,7 @@ public final class PolicyCondition { * .monitoring.KpiValue kpiValue = 3; */ public monitoring.Monitoring.KpiValue.Builder getKpiValueBuilder() { + bitField0_ |= 0x00000004; onChanged(); return getKpiValueFieldBuilder().getBuilder(); } @@ -1261,7 +1268,17 @@ public final class PolicyCondition { @java.lang.Override public PolicyRuleCondition parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new PolicyRuleCondition(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; diff --git a/src/policy/target/generated-sources/grpc/policy/PolicyServiceGrpc.java b/src/policy/target/generated-sources/grpc/policy/PolicyServiceGrpc.java index e701a2256eb6800137ae4cd00c8887a97ba1cf43..6bc2e280896487b712d3426d5d623e6c4a474e29 100644 --- a/src/policy/target/generated-sources/grpc/policy/PolicyServiceGrpc.java +++ b/src/policy/target/generated-sources/grpc/policy/PolicyServiceGrpc.java @@ -4,7 +4,8 @@ import static io.grpc.MethodDescriptor.generateFullMethodName; /** */ -@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.38.1)", comments = "Source: policy.proto") +@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.55.1)", comments = "Source: policy.proto") +@io.grpc.stub.annotations.GrpcGenerated public final class PolicyServiceGrpc { private PolicyServiceGrpc() { @@ -177,63 +178,70 @@ public final class PolicyServiceGrpc { /** */ - public static abstract class PolicyServiceImplBase implements io.grpc.BindableService { + public interface AsyncService { /** */ - public void policyAddService(policy.Policy.PolicyRuleService request, io.grpc.stub.StreamObserver responseObserver) { + default void policyAddService(policy.Policy.PolicyRuleService request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getPolicyAddServiceMethod(), responseObserver); } /** */ - public void policyAddDevice(policy.Policy.PolicyRuleDevice request, io.grpc.stub.StreamObserver responseObserver) { + default void policyAddDevice(policy.Policy.PolicyRuleDevice request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getPolicyAddDeviceMethod(), responseObserver); } /** */ - public void policyUpdateService(policy.Policy.PolicyRuleService request, io.grpc.stub.StreamObserver responseObserver) { + default void policyUpdateService(policy.Policy.PolicyRuleService request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getPolicyUpdateServiceMethod(), responseObserver); } /** */ - public void policyUpdateDevice(policy.Policy.PolicyRuleDevice request, io.grpc.stub.StreamObserver responseObserver) { + default void policyUpdateDevice(policy.Policy.PolicyRuleDevice request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getPolicyUpdateDeviceMethod(), responseObserver); } /** */ - public void policyDelete(policy.Policy.PolicyRuleId request, io.grpc.stub.StreamObserver responseObserver) { + default void policyDelete(policy.Policy.PolicyRuleId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getPolicyDeleteMethod(), responseObserver); } /** */ - public void getPolicyService(policy.Policy.PolicyRuleId request, io.grpc.stub.StreamObserver responseObserver) { + default void getPolicyService(policy.Policy.PolicyRuleId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetPolicyServiceMethod(), responseObserver); } /** */ - public void getPolicyDevice(policy.Policy.PolicyRuleId request, io.grpc.stub.StreamObserver responseObserver) { + default void getPolicyDevice(policy.Policy.PolicyRuleId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetPolicyDeviceMethod(), responseObserver); } /** */ - public void getPolicyByServiceId(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver responseObserver) { + default void getPolicyByServiceId(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetPolicyByServiceIdMethod(), responseObserver); } + } + + /** + * Base class for the server implementation of the service PolicyService. + */ + public static abstract class PolicyServiceImplBase implements io.grpc.BindableService, AsyncService { @java.lang.Override public io.grpc.ServerServiceDefinition bindService() { - return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getPolicyAddServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_POLICY_ADD_SERVICE))).addMethod(getPolicyAddDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_POLICY_ADD_DEVICE))).addMethod(getPolicyUpdateServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_POLICY_UPDATE_SERVICE))).addMethod(getPolicyUpdateDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_POLICY_UPDATE_DEVICE))).addMethod(getPolicyDeleteMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_POLICY_DELETE))).addMethod(getGetPolicyServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_POLICY_SERVICE))).addMethod(getGetPolicyDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_POLICY_DEVICE))).addMethod(getGetPolicyByServiceIdMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_POLICY_BY_SERVICE_ID))).build(); + return PolicyServiceGrpc.bindService(this); } } /** + * A stub to allow clients to do asynchronous rpc calls to service PolicyService. */ public static class PolicyServiceStub extends io.grpc.stub.AbstractAsyncStub { @@ -296,6 +304,7 @@ public final class PolicyServiceGrpc { } /** + * A stub to allow clients to do synchronous rpc calls to service PolicyService. */ public static class PolicyServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub { @@ -358,6 +367,7 @@ public final class PolicyServiceGrpc { } /** + * A stub to allow clients to do ListenableFuture-style rpc calls to service PolicyService. */ public static class PolicyServiceFutureStub extends io.grpc.stub.AbstractFutureStub { @@ -437,11 +447,11 @@ public final class PolicyServiceGrpc { private static final class MethodHandlers implements io.grpc.stub.ServerCalls.UnaryMethod, io.grpc.stub.ServerCalls.ServerStreamingMethod, io.grpc.stub.ServerCalls.ClientStreamingMethod, io.grpc.stub.ServerCalls.BidiStreamingMethod { - private final PolicyServiceImplBase serviceImpl; + private final AsyncService serviceImpl; private final int methodId; - MethodHandlers(PolicyServiceImplBase serviceImpl, int methodId) { + MethodHandlers(AsyncService serviceImpl, int methodId) { this.serviceImpl = serviceImpl; this.methodId = methodId; } @@ -489,6 +499,10 @@ public final class PolicyServiceGrpc { } } + public static io.grpc.ServerServiceDefinition bindService(AsyncService service) { + return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getPolicyAddServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_POLICY_ADD_SERVICE))).addMethod(getPolicyAddDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_POLICY_ADD_DEVICE))).addMethod(getPolicyUpdateServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_POLICY_UPDATE_SERVICE))).addMethod(getPolicyUpdateDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_POLICY_UPDATE_DEVICE))).addMethod(getPolicyDeleteMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_POLICY_DELETE))).addMethod(getGetPolicyServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_POLICY_SERVICE))).addMethod(getGetPolicyDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_POLICY_DEVICE))).addMethod(getGetPolicyByServiceIdMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_POLICY_BY_SERVICE_ID))).build(); + } + private static abstract class PolicyServiceBaseDescriptorSupplier implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier { PolicyServiceBaseDescriptorSupplier() { diff --git a/src/policy/target/generated-sources/grpc/service/ServiceServiceGrpc.java b/src/policy/target/generated-sources/grpc/service/ServiceServiceGrpc.java index 4cd98546277145a8c1f277ef143fe46ac5f58dc0..7b5a367725db77054896e47965c2e50ed309a42f 100644 --- a/src/policy/target/generated-sources/grpc/service/ServiceServiceGrpc.java +++ b/src/policy/target/generated-sources/grpc/service/ServiceServiceGrpc.java @@ -4,7 +4,8 @@ import static io.grpc.MethodDescriptor.generateFullMethodName; /** */ -@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.38.1)", comments = "Source: service.proto") +@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.55.1)", comments = "Source: service.proto") +@io.grpc.stub.annotations.GrpcGenerated public final class ServiceServiceGrpc { private ServiceServiceGrpc() { @@ -117,39 +118,46 @@ public final class ServiceServiceGrpc { /** */ - public static abstract class ServiceServiceImplBase implements io.grpc.BindableService { + public interface AsyncService { /** */ - public void createService(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver responseObserver) { + default void createService(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getCreateServiceMethod(), responseObserver); } /** */ - public void updateService(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver responseObserver) { + default void updateService(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getUpdateServiceMethod(), responseObserver); } /** */ - public void deleteService(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver responseObserver) { + default void deleteService(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteServiceMethod(), responseObserver); } /** */ - public void recomputeConnections(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver responseObserver) { + default void recomputeConnections(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRecomputeConnectionsMethod(), responseObserver); } + } + + /** + * Base class for the server implementation of the service ServiceService. + */ + public static abstract class ServiceServiceImplBase implements io.grpc.BindableService, AsyncService { @java.lang.Override public io.grpc.ServerServiceDefinition bindService() { - return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getCreateServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_CREATE_SERVICE))).addMethod(getUpdateServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_UPDATE_SERVICE))).addMethod(getDeleteServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_DELETE_SERVICE))).addMethod(getRecomputeConnectionsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_RECOMPUTE_CONNECTIONS))).build(); + return ServiceServiceGrpc.bindService(this); } } /** + * A stub to allow clients to do asynchronous rpc calls to service ServiceService. */ public static class ServiceServiceStub extends io.grpc.stub.AbstractAsyncStub { @@ -188,6 +196,7 @@ public final class ServiceServiceGrpc { } /** + * A stub to allow clients to do synchronous rpc calls to service ServiceService. */ public static class ServiceServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub { @@ -226,6 +235,7 @@ public final class ServiceServiceGrpc { } /** + * A stub to allow clients to do ListenableFuture-style rpc calls to service ServiceService. */ public static class ServiceServiceFutureStub extends io.grpc.stub.AbstractFutureStub { @@ -273,11 +283,11 @@ public final class ServiceServiceGrpc { private static final class MethodHandlers implements io.grpc.stub.ServerCalls.UnaryMethod, io.grpc.stub.ServerCalls.ServerStreamingMethod, io.grpc.stub.ServerCalls.ClientStreamingMethod, io.grpc.stub.ServerCalls.BidiStreamingMethod { - private final ServiceServiceImplBase serviceImpl; + private final AsyncService serviceImpl; private final int methodId; - MethodHandlers(ServiceServiceImplBase serviceImpl, int methodId) { + MethodHandlers(AsyncService serviceImpl, int methodId) { this.serviceImpl = serviceImpl; this.methodId = methodId; } @@ -313,6 +323,10 @@ public final class ServiceServiceGrpc { } } + public static io.grpc.ServerServiceDefinition bindService(AsyncService service) { + return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getCreateServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_CREATE_SERVICE))).addMethod(getUpdateServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_UPDATE_SERVICE))).addMethod(getDeleteServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_DELETE_SERVICE))).addMethod(getRecomputeConnectionsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_RECOMPUTE_CONNECTIONS))).build(); + } + private static abstract class ServiceServiceBaseDescriptorSupplier implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier { ServiceServiceBaseDescriptorSupplier() { diff --git a/src/policy/target/kubernetes/kubernetes.yml b/src/policy/target/kubernetes/kubernetes.yml deleted file mode 100644 index 4f581f0c9225dd8772dd476b133ba04880683851..0000000000000000000000000000000000000000 --- a/src/policy/target/kubernetes/kubernetes.yml +++ /dev/null @@ -1,133 +0,0 @@ ---- -apiVersion: v1 -kind: Service -metadata: - annotations: - app.quarkus.io/commit-id: 182b55a46135040b71a5980de9f72d94a85db2e8 - app.quarkus.io/build-timestamp: 2024-04-08 - 08:15:43 +0000 - prometheus.io/scrape: "true" - prometheus.io/path: /q/metrics - prometheus.io/port: "8080" - prometheus.io/scheme: http - labels: - app.kubernetes.io/name: policyservice - app.kubernetes.io/version: 0.1.0 - app: policyservice - app.kubernetes.io/managed-by: quarkus - name: policyservice -spec: - ports: - - name: https - port: 443 - protocol: TCP - targetPort: 8443 - - name: grpc - port: 6060 - protocol: TCP - targetPort: 6060 - - name: http - port: 9192 - protocol: TCP - targetPort: 8080 - selector: - app.kubernetes.io/name: policyservice - type: ClusterIP ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - annotations: - app.quarkus.io/commit-id: 182b55a46135040b71a5980de9f72d94a85db2e8 - app.quarkus.io/build-timestamp: 2024-04-08 - 08:15:43 +0000 - prometheus.io/scrape: "true" - prometheus.io/path: /q/metrics - prometheus.io/port: "8080" - prometheus.io/scheme: http - labels: - app: policyservice - app.kubernetes.io/managed-by: quarkus - app.kubernetes.io/name: policyservice - app.kubernetes.io/version: 0.1.0 - name: policyservice -spec: - replicas: 1 - selector: - matchLabels: - app.kubernetes.io/name: policyservice - template: - metadata: - annotations: - app.quarkus.io/commit-id: 182b55a46135040b71a5980de9f72d94a85db2e8 - app.quarkus.io/build-timestamp: 2024-04-08 - 08:15:43 +0000 - prometheus.io/scrape: "true" - prometheus.io/path: /q/metrics - prometheus.io/port: "8080" - prometheus.io/scheme: http - labels: - app: policyservice - app.kubernetes.io/managed-by: quarkus - app.kubernetes.io/name: policyservice - app.kubernetes.io/version: 0.1.0 - spec: - containers: - - env: - - name: KUBERNETES_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: SERVICE_SERVICE_HOST - value: serviceservice - - name: MONITORING_SERVICE_HOST - value: monitoringservice - - name: CONTEXT_SERVICE_HOST - value: contextservice - image: labs.etsi.org:5050/tfs/controller/policy:0.1.0 - imagePullPolicy: Always - livenessProbe: - failureThreshold: 3 - httpGet: - path: /q/health/live - port: 8080 - scheme: HTTP - initialDelaySeconds: 2 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 10 - name: policyservice - ports: - - containerPort: 8443 - name: https - protocol: TCP - - containerPort: 6060 - name: grpc - protocol: TCP - - containerPort: 8080 - name: http - protocol: TCP - readinessProbe: - failureThreshold: 3 - httpGet: - path: /q/health/ready - port: 8080 - scheme: HTTP - initialDelaySeconds: 2 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 10 - resources: - limits: - cpu: 500m - memory: 2048Mi - requests: - cpu: 50m - memory: 512Mi - startupProbe: - failureThreshold: 3 - httpGet: - path: /q/health/started - port: 8080 - scheme: HTTP - initialDelaySeconds: 5 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 10 diff --git a/src/qkd_app/client/QKDAppClient.py b/src/qkd_app/client/QKDAppClient.py index 1a174df6adc69ab9ce88b0d8878c92b9b9e7820e..a35b18f1d9f380ae4f95f1a643716075642e31d6 100644 --- a/src/qkd_app/client/QKDAppClient.py +++ b/src/qkd_app/client/QKDAppClient.py @@ -12,53 +12,92 @@ # See the License for the specific language governing permissions and # limitations under the License. -import grpc, logging +import grpc +import logging from common.Constants import ServiceNameEnum from common.Settings import get_service_host, get_service_port_grpc -from common.proto.context_pb2 import Empty, ContextId from common.proto.qkd_app_pb2 import App, AppId, AppList from common.proto.qkd_app_pb2_grpc import AppServiceStub from common.tools.client.RetryDecorator import retry, delay_exponential from common.tools.grpc.Tools import grpc_message_to_json_string LOGGER = logging.getLogger(__name__) + +# Define retry mechanism MAX_RETRIES = 15 DELAY_FUNCTION = delay_exponential(initial=0.01, increment=2.0, maximum=5.0) -RETRY_DECORATOR = retry(max_retries=MAX_RETRIES, delay_function=DELAY_FUNCTION, prepare_method_name='connect') class QKDAppClient: def __init__(self, host=None, port=None): - if not host: host = get_service_host(ServiceNameEnum.QKD_APP) - if not port: port = get_service_port_grpc(ServiceNameEnum.QKD_APP) - self.endpoint = '{:s}:{:s}'.format(str(host), str(port)) - LOGGER.debug('Creating channel to {:s}...'.format(self.endpoint)) + self.host = host or get_service_host(ServiceNameEnum.QKD_APP) + self.port = port or get_service_port_grpc(ServiceNameEnum.QKD_APP) + self.endpoint = f'{self.host}:{self.port}' + LOGGER.debug(f'Initializing gRPC client to {self.endpoint}...') self.channel = None self.stub = None self.connect() - LOGGER.debug('Channel created') def connect(self): - self.channel = grpc.insecure_channel(self.endpoint) - self.stub = AppServiceStub(self.channel) + try: + self.channel = grpc.insecure_channel(self.endpoint) + self.stub = AppServiceStub(self.channel) + LOGGER.debug(f'gRPC channel to {self.endpoint} established successfully') + except Exception as e: + LOGGER.error(f"Failed to establish gRPC connection: {e}") + self.stub = None def close(self): - if self.channel is not None: self.channel.close() + if self.channel: + self.channel.close() + LOGGER.debug(f'gRPC channel to {self.endpoint} closed') self.channel = None self.stub = None + def check_connection(self): + if self.stub is None: + LOGGER.error("gRPC connection is not established. Retrying...") + self.connect() + if self.stub is None: + raise ConnectionError("gRPC connection could not be established.") + + @retry(max_retries=MAX_RETRIES, delay_function=DELAY_FUNCTION) + def RegisterApp(self, app_request: App) -> None: + """Register a new QKD app.""" + self.check_connection() + LOGGER.debug(f'RegisterApp request: {grpc_message_to_json_string(app_request)}') + self.stub.RegisterApp(app_request) + LOGGER.debug('App registered successfully') + @retry(max_retries=MAX_RETRIES, delay_function=DELAY_FUNCTION) + def UpdateApp(self, app_request: App) -> None: + """Update an existing QKD app.""" + self.check_connection() + LOGGER.debug(f'UpdateApp request: {grpc_message_to_json_string(app_request)}') + self.stub.UpdateApp(app_request) + LOGGER.debug('App updated successfully') - @RETRY_DECORATOR - def RegisterApp(self, request : App) -> Empty: - LOGGER.debug('RegisterApp request: {:s}'.format(grpc_message_to_json_string(request))) - response = self.stub.RegisterApp(request) - LOGGER.debug('RegisterApp result: {:s}'.format(grpc_message_to_json_string(response))) + @retry(max_retries=MAX_RETRIES, delay_function=DELAY_FUNCTION) + def ListApps(self, context_id) -> AppList: + """List all apps for a given context.""" + self.check_connection() + LOGGER.debug(f'ListApps request for context_id: {grpc_message_to_json_string(context_id)}') + response = self.stub.ListApps(context_id) + LOGGER.debug(f'ListApps result: {grpc_message_to_json_string(response)}') return response - - @RETRY_DECORATOR - def ListApps(self, request: ContextId) -> AppList: - LOGGER.debug('ListApps request: {:s}'.format(grpc_message_to_json_string(request))) - response = self.stub.ListApps(request) - LOGGER.debug('ListApps result: {:s}'.format(grpc_message_to_json_string(response))) + @retry(max_retries=MAX_RETRIES, delay_function=DELAY_FUNCTION) + def GetApp(self, app_id: AppId) -> App: + """Fetch details of a specific app by its ID.""" + self.check_connection() + LOGGER.debug(f'GetApp request for app_id: {grpc_message_to_json_string(app_id)}') + response = self.stub.GetApp(app_id) + LOGGER.debug(f'GetApp result: {grpc_message_to_json_string(response)}') return response + + @retry(max_retries=MAX_RETRIES, delay_function=DELAY_FUNCTION) + def DeleteApp(self, app_id: AppId) -> None: + """Delete an app by its ID.""" + self.check_connection() # Ensures connection is established + LOGGER.debug(f'DeleteApp request for app_id: {grpc_message_to_json_string(app_id)}') + self.stub.DeleteApp(app_id) # Calls the gRPC service + LOGGER.debug('App deleted successfully') diff --git a/src/qkd_app/service/QKDAppService.py b/src/qkd_app/service/QKDAppService.py index a6c93cd811a72594804fe8e8e86a9586533a1317..b9b34ed9b8239ea119c5af1364bbc53914b42c51 100644 --- a/src/qkd_app/service/QKDAppService.py +++ b/src/qkd_app/service/QKDAppService.py @@ -12,7 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -import logging, sqlalchemy +import logging +import sqlalchemy from common.Constants import ServiceNameEnum from common.Settings import get_service_port_grpc from common.message_broker.MessageBroker import MessageBroker @@ -20,18 +21,38 @@ from common.proto.qkd_app_pb2_grpc import add_AppServiceServicer_to_server from common.tools.service.GenericGrpcService import GenericGrpcService from qkd_app.service.QKDAppServiceServicerImpl import AppServiceServicerImpl -# Custom gRPC settings -GRPC_MAX_WORKERS = 200 # multiple clients might keep connections alive for Get*Events() RPC methods +# Configure maximum number of workers for gRPC +GRPC_MAX_WORKERS = 200 # Adjusted for high concurrency LOGGER = logging.getLogger(__name__) - class AppService(GenericGrpcService): + """ + gRPC Service for handling QKD App-related operations. + This class initializes the gRPC server and installs the servicers. + """ def __init__( - self, db_engine : sqlalchemy.engine.Engine, messagebroker : MessageBroker, cls_name: str = __name__ + self, db_engine: sqlalchemy.engine.Engine, messagebroker: MessageBroker, cls_name: str = __name__ ) -> None: + """ + Initializes the AppService with the provided database engine and message broker. + Sets up the gRPC server to handle app-related requests. + + Args: + db_engine (sqlalchemy.engine.Engine): Database engine for handling app data. + messagebroker (MessageBroker): Message broker for inter-service communication. + cls_name (str): Class name for logging purposes (default is __name__). + """ + # Get the port for the gRPC AppService port = get_service_port_grpc(ServiceNameEnum.QKD_APP) + # Initialize the base class with port and max worker configuration super().__init__(port, max_workers=GRPC_MAX_WORKERS, cls_name=cls_name) + # Initialize the AppServiceServicer with the database and message broker self.app_servicer = AppServiceServicerImpl(db_engine, messagebroker) def install_servicers(self): + """ + Installs the AppService servicers to the gRPC server. + This allows the server to handle requests for QKD app operations. + """ add_AppServiceServicer_to_server(self.app_servicer, self.server) + LOGGER.debug("AppService servicer installed") diff --git a/src/qkd_app/service/QKDAppServiceServicerImpl.py b/src/qkd_app/service/QKDAppServiceServicerImpl.py index df7a885c47eda9d7a6137c9905388da49c698e7e..3ef13b75e5510a95b91a9a67fa65ed06c32a3526 100644 --- a/src/qkd_app/service/QKDAppServiceServicerImpl.py +++ b/src/qkd_app/service/QKDAppServiceServicerImpl.py @@ -12,62 +12,175 @@ # See the License for the specific language governing permissions and # limitations under the License. -import grpc, logging, sqlalchemy -#from typing import Iterator, Optional +import grpc +import logging +import sqlalchemy +import uuid from common.message_broker.MessageBroker import MessageBroker -import grpc, json, logging #, deepdiff -from common.proto.context_pb2 import ( - Empty, Service, ServiceId, ServiceStatusEnum, ServiceTypeEnum, ContextId) -from common.proto.qkd_app_pb2 import (App, AppId, AppList, QKDAppTypesEnum) +from common.proto.context_pb2 import Empty, ContextId +from common.proto.qkd_app_pb2 import App, AppId, AppList, QKDAppTypesEnum, QoS +from common.method_wrappers.ServiceExceptions import InvalidArgumentException, NotFoundException from common.proto.qkd_app_pb2_grpc import AppServiceServicer +from common.tools.grpc.Tools import grpc_message_to_json_string from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_method -#from common.tools.context_queries.InterDomain import is_inter_domain #, is_multi_domain -#from common.tools.grpc.ConfigRules import copy_config_rules -#from common.tools.grpc.Constraints import copy_constraints -#from common.tools.grpc.EndPointIds import copy_endpoint_ids -#from common.tools.grpc.ServiceIds import update_service_ids -#from common.tools.grpc.Tools import grpc_message_to_json_string -#from context.client.ContextClient import ContextClient -#from qkd_app.client.QKDAppClient import QKDAppClient -from .database.QKDApp import app_set, app_list_objs, app_get, app_get_by_server -from common.method_wrappers.ServiceExceptions import NotFoundException +from .database.QKDApp import app_set, app_list_objs, app_get, app_get_by_server, app_delete LOGGER = logging.getLogger(__name__) METRICS_POOL = MetricsPool('QkdApp', 'RPC') -# Optare: This file must be edited based on app's logic - class AppServiceServicerImpl(AppServiceServicer): - def __init__(self, db_engine : sqlalchemy.engine.Engine, messagebroker : MessageBroker): - LOGGER.debug('Creating Servicer...') + def __init__(self, db_engine: sqlalchemy.engine.Engine, messagebroker: MessageBroker): + LOGGER.debug('Initializing AppServiceServicer...') self.db_engine = db_engine self.messagebroker = messagebroker - LOGGER.debug('Servicer Created') + LOGGER.debug('AppServiceServicer initialized') @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) - def RegisterApp(self, request : App, context : grpc.ServicerContext) -> Empty: - # Optare: This is the main function required for the project. - # Optare: If it's an internal it will save it directly. If it's an external one it will save it as pending by not providing the remote until the other party requests it too - # Optare: Ideally, the only thing needed to change is the code inside the try block. Currently it just searches by a pending app with the same server_id but you can put more restrictions or different search and raise the NotFoundException + def RegisterApp(self, request: App, context: grpc.ServicerContext) -> Empty: + """ + Registers an app in the system, handling both internal and external applications + with ETSI GS QKD 015 compliance. + """ + LOGGER.debug(f"Received RegisterApp request: {grpc_message_to_json_string(request)}") - if request.app_type == QKDAppTypesEnum.QKDAPPTYPES_INTERNAL: - app_set(self.db_engine, self.messagebroker, request) + try: + # Validate QoS parameters as per ETSI 015 requirements + self._validate_qos(request.qos) - else: - try: - app = app_get_by_server(self.db_engine, request.server_app_id) - except NotFoundException: - app = request - app_set(self.db_engine, self.messagebroker, app) + # Check if an app with the same server_app_id and local_device_id already exists + existing_app = self._check_existing_app(request.server_app_id, request.local_device_id.device_uuid.uuid) + + if existing_app: + if request.app_type == QKDAppTypesEnum.QKDAPPTYPES_CLIENT: + LOGGER.debug(f"Handling external app registration for server_app_id: {request.server_app_id}") + # Handle second-party registration for external apps + if not existing_app.remote_device_id.device_uuid.uuid: + existing_app.remote_device_id.device_uuid.uuid = request.local_device_id.device_uuid.uuid + app_set(self.db_engine, self.messagebroker, existing_app) + LOGGER.debug(f"Updated external app with server_app_id: {request.server_app_id}, remote_device_id: {request.local_device_id.device_uuid.uuid}") + else: + context.set_code(grpc.StatusCode.ALREADY_EXISTS) + context.set_details(f"App with server_app_id {request.server_app_id} already has both parties registered.") + return Empty() + else: + context.set_code(grpc.StatusCode.ALREADY_EXISTS) + context.set_details(f"App with server_app_id {request.server_app_id} already exists.") + return Empty() else: - app.remote_device_id.device_uuid.uuid = request.local_device_id.device_uuid.uuid - app_set(self.db_engine, self.messagebroker, app) - - - return Empty() - + # Assign application IDs as required + self._validate_and_assign_app_ids(request) + + # Register the app + if request.app_type == QKDAppTypesEnum.QKDAPPTYPES_INTERNAL: + LOGGER.debug(f"Registering internal app with app_uuid: {request.app_id.app_uuid.uuid}") + app_set(self.db_engine, self.messagebroker, request) + else: + self._register_external_app(request) + + LOGGER.debug(f"RegisterApp completed successfully for app: {request.server_app_id}") + return Empty() + + except InvalidArgumentException as e: + context.set_code(grpc.StatusCode.INVALID_ARGUMENT) + context.set_details(str(e)) + raise e + except Exception as e: + context.set_code(grpc.StatusCode.INTERNAL) + context.set_details("An internal error occurred during app registration.") + raise e + + def _validate_qos(self, qos: QoS) -> None: + """ + Validates the QoS parameters for the application, ensuring ETSI 015 compliance. + """ + if qos.max_bandwidth and qos.min_bandwidth and qos.max_bandwidth < qos.min_bandwidth: + raise InvalidArgumentException("QoS max_bandwidth cannot be less than min_bandwidth.") + + if qos.ttl and qos.ttl <= 0: + raise InvalidArgumentException("QoS TTL must be a positive value.") + + LOGGER.debug(f"QoS validated: {qos}") + + def _check_existing_app(self, server_app_id: str, local_device_id: str): + try: + return app_get_by_server(self.db_engine, server_app_id) + except NotFoundException: + return None + + def _validate_and_assign_app_ids(self, request: App) -> None: + """ + Validates and assigns app IDs (app_uuid, server_app_id, client_app_id) if not provided. + """ + if not request.app_id.app_uuid.uuid: + request.app_id.app_uuid.uuid = str(uuid.uuid4()) + LOGGER.debug(f"Assigned new app_uuid: {request.app_id.app_uuid.uuid}") + + if not request.server_app_id: + request.server_app_id = str(uuid.uuid4()) + LOGGER.debug(f"Assigned new server_app_id: {request.server_app_id}") + + del request.client_app_id[:] # Clear the repeated field for clients + + def _register_external_app(self, request: App) -> None: + try: + existing_app = app_get_by_server(self.db_engine, request.server_app_id) + + if not existing_app.remote_device_id.device_uuid.uuid: + existing_app.remote_device_id.device_uuid.uuid = request.local_device_id.device_uuid.uuid + app_set(self.db_engine, self.messagebroker, existing_app) + else: + LOGGER.debug(f"App with server_app_id: {request.server_app_id} already has both parties registered.") + except NotFoundException: + app_set(self.db_engine, self.messagebroker, request) + + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) + def ListApps(self, request: ContextId, context: grpc.ServicerContext) -> AppList: + """ + Lists all apps in the system, including their statistics and QoS attributes. + """ + LOGGER.debug(f"Received ListApps request: {grpc_message_to_json_string(request)}") + + try: + apps = app_list_objs(self.db_engine, request.context_uuid.uuid) + for app in apps.apps: + LOGGER.debug(f"App retrieved: {grpc_message_to_json_string(app)}") + + LOGGER.debug(f"ListApps returned {len(apps.apps)} apps for context_id: {request.context_uuid.uuid}") + return apps + except Exception as e: + context.set_code(grpc.StatusCode.INTERNAL) + context.set_details("An internal error occurred while listing apps.") + raise e + + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) + def GetApp(self, request: AppId, context: grpc.ServicerContext) -> App: + """ + Fetches details of a specific app based on its AppId, including QoS and performance stats. + """ + LOGGER.debug(f"Received GetApp request: {grpc_message_to_json_string(request)}") + try: + app = app_get(self.db_engine, request) + LOGGER.debug(f"GetApp found app with app_uuid: {request.app_uuid.uuid}") + return app + except NotFoundException as e: + context.set_code(grpc.StatusCode.NOT_FOUND) + context.set_details(f"App not found: {e}") + raise e @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) - def ListApps(self, request: ContextId, context : grpc.ServicerContext) -> AppList: - return app_list_objs(self.db_engine) + def DeleteApp(self, request: AppId, context: grpc.ServicerContext) -> Empty: + """ + Deletes an app from the system by its AppId, following ETSI compliance. + """ + LOGGER.debug(f"Received DeleteApp request for app_uuid: {request.app_uuid.uuid}") + try: + app_delete(self.db_engine, request.app_uuid.uuid) + LOGGER.debug(f"App with UUID {request.app_uuid.uuid} deleted successfully.") + return Empty() + except NotFoundException as e: + context.set_code(grpc.StatusCode.NOT_FOUND) + context.set_details(f"App not found: {e}") + raise e + + diff --git a/src/qkd_app/service/__main__.py b/src/qkd_app/service/__main__.py index ed7e554728eb2de6240dd4facb7f084337a026a4..17f3ac240c33b28454e2df43862dd66a50eb5c45 100644 --- a/src/qkd_app/service/__main__.py +++ b/src/qkd_app/service/__main__.py @@ -4,7 +4,7 @@ # 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 +# 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, @@ -12,82 +12,82 @@ # See the License for the specific language governing permissions and # limitations under the License. -import logging, signal, sys, threading +import logging +import signal +import sys +import threading from prometheus_client import start_http_server -#from common.Constants import ServiceNameEnum -from common.Settings import ( - #ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC, get_env_var_name, - get_log_level, get_metrics_port, wait_for_environment_variables) +from common.Settings import get_log_level, get_metrics_port from qkd_app.service.QKDAppService import AppService -from qkd_app.service.rest_server.RestServer import RestServer -from qkd_app.service.rest_server.qkd_app import register_qkd_app -#from common.message_broker.Factory import get_messagebroker_backend -#from common.message_broker.MessageBroker import MessageBroker from qkd_app.service.database.Engine import Engine from qkd_app.service.database.models._Base import rebuild_database +# Set up logging +LOG_LEVEL = get_log_level() +logging.basicConfig(level=LOG_LEVEL, format="[%(asctime)s] %(levelname)s:%(name)s:%(message)s") +LOGGER = logging.getLogger(__name__) + +#LOGGER.addHandler(logging.StreamHandler(stream=sys.stderr)) +#LOGGER.setLevel(logging.WARNING) + +# Event for terminating the service gracefully terminate = threading.Event() -LOGGER : logging.Logger = None -def signal_handler(signal, frame): # pylint: disable=redefined-outer-name - LOGGER.warning('Terminate signal received') +def signal_handler(signum, frame): + """ + Handle termination signals like SIGINT and SIGTERM to ensure graceful shutdown. + """ + LOGGER.warning('Termination signal received') terminate.set() def main(): - global LOGGER # pylint: disable=global-statement - - log_level = get_log_level() - logging.basicConfig(level=log_level, format="[%(asctime)s] %(levelname)s:%(name)s:%(message)s") - LOGGER = logging.getLogger(__name__) - - wait_for_environment_variables([ - #get_env_var_name(ServiceNameEnum.CONTEXT, ENVVAR_SUFIX_SERVICE_HOST ), - #get_env_var_name(ServiceNameEnum.CONTEXT, ENVVAR_SUFIX_SERVICE_PORT_GRPC), - ]) - + LOGGER.info('Starting...') + # Register signal handlers for graceful shutdown signal.signal(signal.SIGINT, signal_handler) signal.signal(signal.SIGTERM, signal_handler) - LOGGER.info('Starting...') - - # Start metrics server + # Start Prometheus metrics server metrics_port = get_metrics_port() start_http_server(metrics_port) + LOGGER.info(f'Metrics server started on port {metrics_port}') - # Get Database Engine instance and initialize database, if needed + # Initialize the SQLAlchemy database engine LOGGER.info('Getting SQLAlchemy DB Engine...') db_engine = Engine.get_engine() if db_engine is None: - LOGGER.error('Unable to get SQLAlchemy DB Engine...') + LOGGER.error('Unable to get SQLAlchemy DB Engine. Exiting...') return -1 + # Try creating the database or log any issues try: Engine.create_database(db_engine) - except: # pylint: disable=bare-except # pragma: no cover - LOGGER.exception('Failed to check/create the database: {:s}'.format(str(db_engine.url))) + except Exception as e: # More specific exception handling + LOGGER.exception(f'Failed to check/create the database: {db_engine.url}. Error: {str(e)}') + return -1 + # Rebuild the database schema if necessary rebuild_database(db_engine) - # Get message broker instance - messagebroker = None #MessageBroker(get_messagebroker_backend()) + # Initialize the message broker (if needed) + messagebroker = None # Disabled until further notice, can be re-enabled when necessary + # messagebroker = MessageBroker(get_messagebroker_backend()) - # Starting context service + # Start the gRPC App Service grpc_service = AppService(db_engine, messagebroker) grpc_service.start() - rest_server = RestServer() - register_qkd_app(rest_server) - rest_server.start() + LOGGER.info('Services started. Waiting for termination signal...') # Wait for Ctrl+C or termination signal - while not terminate.wait(timeout=1.0): pass + # Keep the process running until a termination signal is received + while not terminate.wait(timeout=1.0): + pass - LOGGER.info('Terminating...') + # Shutdown services gracefully on termination + LOGGER.info('Terminating services...') grpc_service.stop() - rest_server.shutdown() - rest_server.join() - LOGGER.info('Bye') + LOGGER.info('Shutdown complete. Exiting...') return 0 if __name__ == '__main__': diff --git a/src/qkd_app/service/database/Engine.py b/src/qkd_app/service/database/Engine.py index 8f528f9a1b3cacca2ea260901ab808461dd3183d..ec86618218cc396dea31404b88d33e46d320ed58 100644 --- a/src/qkd_app/service/database/Engine.py +++ b/src/qkd_app/service/database/Engine.py @@ -28,7 +28,7 @@ class Engine: if crdb_uri is None: CRDB_NAMESPACE = get_setting('CRDB_NAMESPACE') CRDB_SQL_PORT = get_setting('CRDB_SQL_PORT') - CRDB_DATABASE = get_setting('CRDB_DATABASE_APP') + CRDB_DATABASE = get_setting('CRDB_DATABASE') CRDB_USERNAME = get_setting('CRDB_USERNAME') CRDB_PASSWORD = get_setting('CRDB_PASSWORD') CRDB_SSLMODE = get_setting('CRDB_SSLMODE') diff --git a/src/qkd_app/service/database/QKDApp.py b/src/qkd_app/service/database/QKDApp.py index b1fb90d4efcd0770bcc4c48c1f00deb0e95687ad..539555a4dac055d56158298ed7db6dceec39f446 100644 --- a/src/qkd_app/service/database/QKDApp.py +++ b/src/qkd_app/service/database/QKDApp.py @@ -12,174 +12,162 @@ # See the License for the specific language governing permissions and # limitations under the License. -import datetime, logging, uuid +import datetime +import logging +from typing import Dict, List, Optional + from sqlalchemy.dialects.postgresql import insert from sqlalchemy.engine import Engine -from sqlalchemy.orm import Session, selectinload, sessionmaker +from sqlalchemy.orm import Session, sessionmaker from sqlalchemy_cockroachdb import run_transaction -from typing import Dict, List, Optional, Set, Tuple -from common.method_wrappers.ServiceExceptions import InvalidArgumentException, NotFoundException + +from common.method_wrappers.ServiceExceptions import NotFoundException from common.message_broker.MessageBroker import MessageBroker -from common.proto.context_pb2 import Empty -from common.proto.qkd_app_pb2 import ( - AppList, App, AppId) -from common.tools.grpc.Tools import grpc_message_to_json_string +from common.proto.qkd_app_pb2 import AppList, App, AppId +from qkd_app.service.database.uuids._Builder import get_uuid_from_string, get_uuid_random +from common.method_wrappers.ServiceExceptions import InvalidArgumentsException +from common.tools.object_factory.QKDApp import json_app_id +from common.tools.object_factory.Context import json_context_id + from .models.QKDAppModel import AppModel -from .models.enums.QKDAppStatus import grpc_to_enum__qkd_app_status -from .models.enums.QKDAppTypes import grpc_to_enum__qkd_app_types from .uuids.QKDApp import app_get_uuid -from common.tools.object_factory.Context import json_context_id -from common.tools.object_factory.QKDApp import json_app_id from context.service.database.uuids.Context import context_get_uuid +from .models.enums.QKDAppStatus import grpc_to_enum__qkd_app_status +from .models.enums.QKDAppTypes import grpc_to_enum__qkd_app_types +LOGGER = logging.getLogger(__name__) -#from .Events import notify_event_context, notify_event_device, notify_event_topology +def app_list_objs(db_engine: Engine, context_uuid: str = None) -> AppList: + """ + Fetches a list of all QKD applications from the database. Optionally filters by context UUID. -LOGGER = logging.getLogger(__name__) + :param db_engine: SQLAlchemy Engine for DB connection + :param context_uuid: UUID of the context to filter by (optional) + :return: AppList containing all apps + """ + def callback(session: Session) -> List[Dict]: + query = session.query(AppModel) + + if context_uuid: + query = query.filter_by(context_uuid=context_uuid) + return [obj.dump() for obj in query.all()] -def app_list_objs(db_engine : Engine) -> AppList: - def callback(session : Session) -> List[Dict]: - obj_list : List[AppModel] = session.query(AppModel)\ - .all() - return [obj.dump() for obj in obj_list] apps = run_transaction(sessionmaker(bind=db_engine), callback) return AppList(apps=apps) -def app_get(db_engine : Engine, request : AppId) -> App: + +def app_get(db_engine: Engine, request: AppId) -> App: + """ + Fetches a specific app by its UUID. + + :param db_engine: SQLAlchemy Engine for DB connection + :param request: AppId protobuf containing app ID and context ID + :return: App protobuf object + :raises NotFoundException: If the app is not found in the database + """ app_uuid = app_get_uuid(request, allow_random=False) - def callback(session : Session) -> Optional[Dict]: - obj : Optional[AppModel] = session.query(AppModel)\ - .filter_by(app_uuid=app_uuid).one_or_none() - return None if obj is None else obj.dump() + + def callback(session: Session) -> Optional[Dict]: + obj = session.query(AppModel).filter_by(app_uuid=app_uuid).one_or_none() + return obj.dump() if obj else None + obj = run_transaction(sessionmaker(bind=db_engine), callback) - if obj is None: - raw_app_uuid = request.app_uuid.uuid - raise NotFoundException('App', raw_app_uuid, extra_details=[ - 'app_uuid generated was: {:s}'.format(app_uuid) + + if not obj: + raise NotFoundException('App', request.app_uuid.uuid, extra_details=[ + f'app_uuid generated was: {app_uuid}' ]) + return App(**obj) -def app_set(db_engine : Engine, messagebroker : MessageBroker, request : App) -> AppId: - context_uuid = context_get_uuid(request.app_id.context_id, allow_random=False) - raw_app_uuid = request.app_id.app_uuid.uuid - app_uuid = app_get_uuid(request.app_id, allow_random=True) - app_type = request.app_type - app_status = grpc_to_enum__qkd_app_status(request.app_status) - app_type = grpc_to_enum__qkd_app_types(request.app_type) +def app_set(db_engine: Engine, messagebroker: MessageBroker, request: App) -> AppId: + """ + Creates or updates an app in the database. If the app already exists, updates the app. + Otherwise, inserts a new entry. - now = datetime.datetime.utcnow() + :param db_engine: SQLAlchemy Engine for DB connection + :param messagebroker: MessageBroker instance for notifications + :param request: App protobuf object containing app data + :return: AppId protobuf object representing the newly created or updated app + """ + context_uuid = context_get_uuid(request.app_id.context_id, allow_random=False) + app_uuid = app_get_uuid(request.app_id, allow_random=True) - - app_data = [{ - 'context_uuid' : context_uuid, - 'app_uuid' : app_uuid, - 'app_status' : app_status, - 'app_type' : app_type, - 'server_app_id' : request.server_app_id, - 'client_app_id' : request.client_app_id, - 'backing_qkdl_uuid' : [qkdl_id.qkdl_uuid.uuid for qkdl_id in request.backing_qkdl_id], - 'local_device_uuid' : request.local_device_id.device_uuid.uuid, - 'remote_device_uuid' : request.remote_device_id.device_uuid.uuid or None, - 'created_at' : now, - 'updated_at' : now, - }] - - - def callback(session : Session) -> Tuple[bool, List[Dict]]: + # Prepare app data for insertion/update + app_data = { + 'context_uuid': context_uuid, + 'app_uuid': app_uuid, + 'app_status': grpc_to_enum__qkd_app_status(request.app_status), + 'app_type': grpc_to_enum__qkd_app_types(request.app_type), + 'server_app_id': request.server_app_id, + 'client_app_id': request.client_app_id, + 'backing_qkdl_uuid': [qkdl.qkdl_uuid.uuid for qkdl in request.backing_qkdl_id], + 'local_device_uuid': request.local_device_id.device_uuid.uuid, + 'remote_device_uuid': request.remote_device_id.device_uuid.uuid if request.remote_device_id.device_uuid.uuid else None, + 'created_at': datetime.datetime.utcnow(), + 'updated_at': datetime.datetime.utcnow(), + } + + def callback(session: Session) -> bool: + # Create the insert statement stmt = insert(AppModel).values(app_data) + + # Apply the conflict resolution stmt = stmt.on_conflict_do_update( index_elements=[AppModel.app_uuid], set_=dict( - app_status = stmt.excluded.app_status, - app_type = stmt.excluded.app_type, - server_app_id = stmt.excluded.server_app_id, - client_app_id = stmt.excluded.client_app_id, - backing_qkdl_uuid = stmt.excluded.backing_qkdl_uuid, - local_device_uuid = stmt.excluded.local_device_uuid, - remote_device_uuid = stmt.excluded.remote_device_uuid, - updated_at = stmt.excluded.updated_at, + app_status=stmt.excluded.app_status, + app_type=stmt.excluded.app_type, + server_app_id=stmt.excluded.server_app_id, + client_app_id=stmt.excluded.client_app_id, + backing_qkdl_uuid=stmt.excluded.backing_qkdl_uuid, + local_device_uuid=stmt.excluded.local_device_uuid, + remote_device_uuid=stmt.excluded.remote_device_uuid, + updated_at=stmt.excluded.updated_at ) ) - stmt = stmt.returning(AppModel.created_at, AppModel.updated_at) - created_at,updated_at = session.execute(stmt).fetchone() - updated = updated_at > created_at - - return updated - - updated = run_transaction(sessionmaker(bind=db_engine), callback) - context_id = json_context_id(context_uuid) - app_id = json_app_id(app_uuid, context_id=context_id) - #event_type = EventTypeEnum.EVENTTYPE_UPDATE if updated else EventTypeEnum.EVENTTYPE_CREATE - #notify_event_app(messagebroker, event_type, app_id) - #notify_event_context(messagebroker, EventTypeEnum.EVENTTYPE_UPDATE, context_id) + session.execute(stmt) + return True + + run_transaction(sessionmaker(bind=db_engine), callback) + app_id = json_app_id(app_uuid, context_id=json_context_id(context_uuid)) + return AppId(**app_id) +def app_get_by_server(db_engine: Engine, server_app_id: str) -> App: + """ + Fetches an app by its server_app_id. + """ + def callback(session: Session) -> Optional[Dict]: + obj = session.query(AppModel).filter_by(server_app_id=server_app_id).one_or_none() + return obj.dump() if obj else None -def app_get_by_server(db_engine : Engine, request : str) -> App: - def callback(session : Session) -> Optional[Dict]: - obj : Optional[AppModel] = session.query(AppModel)\ - .filter_by(server_app_id=request).one_or_none() - return None if obj is None else obj.dump() obj = run_transaction(sessionmaker(bind=db_engine), callback) - if obj is None: - raise NotFoundException('No app match found for', request) + + if not obj: + raise NotFoundException('App', server_app_id) + return App(**obj) +def app_delete(db_engine: Engine, app_uuid: str) -> None: + """ + Deletes an app by its UUID from the database. + + :param db_engine: SQLAlchemy Engine for DB connection + :param app_uuid: The UUID of the app to be deleted + """ + def callback(session: Session) -> bool: + app_obj = session.query(AppModel).filter_by(app_uuid=app_uuid).one_or_none() + + if app_obj is None: + raise NotFoundException('App', app_uuid) + + session.delete(app_obj) + return True -""" -def device_delete(db_engine : Engine, messagebroker : MessageBroker, request : DeviceId) -> Empty: - device_uuid = device_get_uuid(request, allow_random=False) - def callback(session : Session) -> Tuple[bool, List[Dict]]: - query = session.query(TopologyDeviceModel) - query = query.filter_by(device_uuid=device_uuid) - topology_device_list : List[TopologyDeviceModel] = query.all() - topology_ids = [obj.topology.dump_id() for obj in topology_device_list] - num_deleted = session.query(DeviceModel).filter_by(device_uuid=device_uuid).delete() - return num_deleted > 0, topology_ids - deleted, updated_topology_ids = run_transaction(sessionmaker(bind=db_engine), callback) - device_id = json_device_id(device_uuid) - if deleted: - notify_event_device(messagebroker, EventTypeEnum.EVENTTYPE_REMOVE, device_id) - - context_ids : Dict[str, Dict] = dict() - topology_ids : Dict[str, Dict] = dict() - for topology_id in updated_topology_ids: - topology_uuid = topology_id['topology_uuid']['uuid'] - topology_ids[topology_uuid] = topology_id - context_id = topology_id['context_id'] - context_uuid = context_id['context_uuid']['uuid'] - context_ids[context_uuid] = context_id - - for topology_id in topology_ids.values(): - notify_event_topology(messagebroker, EventTypeEnum.EVENTTYPE_UPDATE, topology_id) - - for context_id in context_ids.values(): - notify_event_context(messagebroker, EventTypeEnum.EVENTTYPE_UPDATE, context_id) - - return Empty() - -def device_select(db_engine : Engine, request : DeviceFilter) -> DeviceList: - device_uuids = [ - device_get_uuid(device_id, allow_random=False) - for device_id in request.device_ids.device_ids - ] - dump_params = dict( - include_endpoints =request.include_endpoints, - include_config_rules=request.include_config_rules, - include_components =request.include_components, - ) - def callback(session : Session) -> List[Dict]: - query = session.query(DeviceModel) - if request.include_endpoints : query = query.options(selectinload(DeviceModel.endpoints)) - if request.include_config_rules: query = query.options(selectinload(DeviceModel.config_rules)) - #if request.include_components : query = query.options(selectinload(DeviceModel.components)) - obj_list : List[DeviceModel] = query.filter(DeviceModel.device_uuid.in_(device_uuids)).all() - return [obj.dump(**dump_params) for obj in obj_list] - devices = run_transaction(sessionmaker(bind=db_engine), callback) - return DeviceList(devices=devices) -""" + run_transaction(sessionmaker(bind=db_engine), callback) diff --git a/src/qkd_app/service/database/models/QKDAppModel.py b/src/qkd_app/service/database/models/QKDAppModel.py index c32b4e28c95105d8659cb52790f51b330764c2cf..d9797d73c9c168efee5810014a70e0425f67e051 100644 --- a/src/qkd_app/service/database/models/QKDAppModel.py +++ b/src/qkd_app/service/database/models/QKDAppModel.py @@ -12,52 +12,70 @@ # See the License for the specific language governing permissions and # limitations under the License. -import operator -from sqlalchemy import CheckConstraint, Column, DateTime, Float, Enum, ForeignKey, Integer, String -from sqlalchemy.dialects.postgresql import UUID, ARRAY -from sqlalchemy.orm import relationship +from sqlalchemy import Column, DateTime, String, Enum, ARRAY +from sqlalchemy.dialects.postgresql import UUID from typing import Dict from ._Base import _Base from .enums.QKDAppStatus import ORM_QKDAppStatusEnum from .enums.QKDAppTypes import ORM_QKDAppTypesEnum + class AppModel(_Base): + """ + ORM model representing a QKD (Quantum Key Distribution) Application. + This model stores information about the QKD app status, type, and related device and + backing QKD links. It is stored in the 'qkd_app' table. + """ __tablename__ = 'qkd_app' - app_uuid = Column(UUID(as_uuid=False), primary_key=True) - context_uuid = Column(UUID(as_uuid=False), nullable=False) # Supposed to be Foreign Key - app_status = Column(Enum(ORM_QKDAppStatusEnum), nullable=False) - app_type = Column(Enum(ORM_QKDAppTypesEnum), nullable=False) - server_app_id = Column(String, nullable=False) - client_app_id = Column(ARRAY(String), nullable=False) - backing_qkdl_uuid = Column(ARRAY(UUID(as_uuid=False)), nullable=False) - local_device_uuid = Column(UUID(as_uuid=False), nullable=False) - remote_device_uuid = Column(UUID(as_uuid=False), nullable=True) + # Primary Key + app_uuid = Column(UUID(as_uuid=False), primary_key=True, nullable=False, doc="Unique identifier for the QKD app.") + + # Foreign Key-like field (context) + context_uuid = Column(UUID(as_uuid=False), nullable=False, doc="Foreign key linking to the application's context.") + + # Status and type + app_status = Column(Enum(ORM_QKDAppStatusEnum), nullable=False, doc="Current status of the QKD app.") + app_type = Column(Enum(ORM_QKDAppTypesEnum), nullable=False, doc="Type of the QKD app (internal or client).") - # Optare: Created_at and Updated_at are only used to know if an app was updated later on the code. Don't change it + # Application IDs + server_app_id = Column(String, nullable=False, doc="ID of the server-side QKD application.") + client_app_id = Column(ARRAY(String), nullable=False, doc="List of client-side QKD application IDs.") - created_at = Column(DateTime, nullable=False) - updated_at = Column(DateTime, nullable=False) + # Backing QKD links and devices + backing_qkdl_uuid = Column(ARRAY(UUID(as_uuid=False)), nullable=False, doc="List of UUIDs of the backing QKD links.") + local_device_uuid = Column(UUID(as_uuid=False), nullable=False, doc="UUID of the local QKD device.") + remote_device_uuid = Column(UUID(as_uuid=False), nullable=True, doc="UUID of the remote QKD device (nullable).") - #__table_args__ = ( - # CheckConstraint(... >= 0, name='name_value_...'), - #) + # Timestamps + created_at = Column(DateTime, nullable=False, doc="Timestamp when the QKD app record was created.") + updated_at = Column(DateTime, nullable=False, doc="Timestamp when the QKD app record was last updated.") def dump_id(self) -> Dict: + """ + Serializes the primary key fields (context and app UUID) into a dictionary. + + :return: A dictionary with 'context_id' and 'app_uuid' keys. + """ return { 'context_id': {'context_uuid': {'uuid': self.context_uuid}}, 'app_uuid': {'uuid': self.app_uuid} } def dump(self) -> Dict: - result = { - 'app_id' : self.dump_id(), - 'app_status' : self.app_status.value, - 'app_type' : self.app_type.value, - 'server_app_id' : self.server_app_id, - 'client_app_id' : self.client_app_id, - 'backing_qkdl_id' : [{'qkdl_uuid': {'uuid': qkdl_id}} for qkdl_id in self.backing_qkdl_uuid], - 'local_device_id' : {'device_uuid': {'uuid': self.local_device_uuid}}, - 'remote_device_id' : {'device_uuid': {'uuid': self.remote_device_uuid}}, + """ + Serializes the entire QKD app model into a dictionary, including app status, type, IDs, + device info, and backing QKD links. + + :return: A dictionary representation of the QKD app. + """ + return { + 'app_id': self.dump_id(), + 'app_status': self.app_status.value, + 'app_type': self.app_type.value, + 'server_app_id': self.server_app_id, + 'client_app_id': self.client_app_id, + 'backing_qkdl_id': [{'qkdl_uuid': {'uuid': qkdl_id}} for qkdl_id in self.backing_qkdl_uuid], + 'local_device_id': {'device_uuid': {'uuid': self.local_device_uuid}}, + 'remote_device_id': {'device_uuid': {'uuid': self.remote_device_uuid}} if self.remote_device_uuid else None, } - return result diff --git a/src/qkd_app/service/database/models/_Base.py b/src/qkd_app/service/database/models/_Base.py index 51863e1d5c06a875c298eab726cfdc3b7fcb75ca..f17fb9a56dcd120ad1dc95ceee720aa942f6ae6c 100644 --- a/src/qkd_app/service/database/models/_Base.py +++ b/src/qkd_app/service/database/models/_Base.py @@ -13,32 +13,17 @@ # limitations under the License. import sqlalchemy -from typing import Any, List -from sqlalchemy.orm import Session, sessionmaker, declarative_base -from sqlalchemy.sql import text -from sqlalchemy_cockroachdb import run_transaction +from sqlalchemy.orm import declarative_base _Base = declarative_base() -''' -def create_performance_enhancers(db_engine : sqlalchemy.engine.Engine) -> None: - def index_storing( - index_name : str, table_name : str, index_fields : List[str], storing_fields : List[str] - ) -> Any: - str_index_fields = ','.join(['"{:s}"'.format(index_field) for index_field in index_fields]) - str_storing_fields = ','.join(['"{:s}"'.format(storing_field) for storing_field in storing_fields]) - INDEX_STORING = 'CREATE INDEX IF NOT EXISTS {:s} ON "{:s}" ({:s}) STORING ({:s});' - return text(INDEX_STORING.format(index_name, table_name, str_index_fields, str_storing_fields)) - - statements = [ - # In case of relations - ] - def callback(session : Session) -> bool: - for stmt in statements: session.execute(stmt) - run_transaction(sessionmaker(bind=db_engine), callback) -''' - -def rebuild_database(db_engine : sqlalchemy.engine.Engine, drop_if_exists : bool = False): - if drop_if_exists: _Base.metadata.drop_all(db_engine) +def rebuild_database(db_engine: sqlalchemy.engine.Engine, drop_if_exists: bool = False): + """ + Rebuild the database schema for the QKD application. Optionally drop the existing schema if specified. + + :param db_engine: SQLAlchemy engine instance. + :param drop_if_exists: Boolean indicating if the schema should be dropped before rebuilding. + """ + if drop_if_exists: + _Base.metadata.drop_all(db_engine) _Base.metadata.create_all(db_engine) - #create_performance_enhancers(db_engine) diff --git a/src/qkd_app/service/database/models/enums/QKDAppStatus.py b/src/qkd_app/service/database/models/enums/QKDAppStatus.py index d3063ef56704ce1bdd48d15ea8c6486ed7c8cfae..980a8b14adca8c69eaf567037dc09872f33622f9 100644 --- a/src/qkd_app/service/database/models/enums/QKDAppStatus.py +++ b/src/qkd_app/service/database/models/enums/QKDAppStatus.py @@ -12,16 +12,19 @@ # See the License for the specific language governing permissions and # limitations under the License. -import enum, functools +import enum +import functools from common.proto.qkd_app_pb2 import QKDAppStatusEnum from ._GrpcToEnum import grpc_to_enum +# Enum mapping for ORM-based app statuses. class ORM_QKDAppStatusEnum(enum.Enum): - ON = QKDAppStatusEnum.QKDAPPSTATUS_ON + ON = QKDAppStatusEnum.QKDAPPSTATUS_ON DISCONNECTED = QKDAppStatusEnum.QKDAPPSTATUS_DISCONNECTED - OUT_OF_TIME = QKDAppStatusEnum.QKDAPPSTATUS_OUT_OF_TIME - ZOMBIE = QKDAppStatusEnum.QKDAPPSTATUS_ZOMBIE - + OUT_OF_TIME = QKDAppStatusEnum.QKDAPPSTATUS_OUT_OF_TIME + ZOMBIE = QKDAppStatusEnum.QKDAPPSTATUS_ZOMBIE +# Function to map between gRPC and ORM enums. grpc_to_enum__qkd_app_status = functools.partial( - grpc_to_enum, QKDAppStatusEnum, ORM_QKDAppStatusEnum) + grpc_to_enum, QKDAppStatusEnum, ORM_QKDAppStatusEnum +) diff --git a/src/qkd_app/service/database/models/enums/QKDAppTypes.py b/src/qkd_app/service/database/models/enums/QKDAppTypes.py index f50b8982d80c0af97c2cbd96d336f450afc50f9b..fdd318cec49b7b7ec8e1a0347c8b0f8c1aeb3a5c 100644 --- a/src/qkd_app/service/database/models/enums/QKDAppTypes.py +++ b/src/qkd_app/service/database/models/enums/QKDAppTypes.py @@ -12,14 +12,17 @@ # See the License for the specific language governing permissions and # limitations under the License. -import enum, functools +import enum +import functools from common.proto.qkd_app_pb2 import QKDAppTypesEnum from ._GrpcToEnum import grpc_to_enum +# Enum mapping for ORM-based app types. class ORM_QKDAppTypesEnum(enum.Enum): INTERNAL = QKDAppTypesEnum.QKDAPPTYPES_INTERNAL - CLIENT = QKDAppTypesEnum.QKDAPPTYPES_CLIENT - + CLIENT = QKDAppTypesEnum.QKDAPPTYPES_CLIENT +# Function to map between gRPC and ORM enums. grpc_to_enum__qkd_app_types = functools.partial( - grpc_to_enum, QKDAppTypesEnum, ORM_QKDAppTypesEnum) + grpc_to_enum, QKDAppTypesEnum, ORM_QKDAppTypesEnum +) diff --git a/src/qkd_app/service/database/uuids/QKDApp.py b/src/qkd_app/service/database/uuids/QKDApp.py index 175f1d5f3cf4ceda12a022b4afadb376e11ae5a5..f6c0e1e12d591e747adf9497c77177e0fdd4dc51 100644 --- a/src/qkd_app/service/database/uuids/QKDApp.py +++ b/src/qkd_app/service/database/uuids/QKDApp.py @@ -16,15 +16,22 @@ from common.proto.qkd_app_pb2 import AppId from common.method_wrappers.ServiceExceptions import InvalidArgumentsException from ._Builder import get_uuid_from_string, get_uuid_random -def app_get_uuid( - app_id : AppId, allow_random : bool = False -) -> str: +def app_get_uuid(app_id: AppId, allow_random: bool = False) -> str: + """ + Retrieves or generates the UUID for an app. + + :param app_id: AppId object that contains the app UUID + :param allow_random: If True, generates a random UUID if app_uuid is not set + :return: App UUID as a string + """ app_uuid = app_id.app_uuid.uuid - if len(app_uuid) > 0: + if app_uuid: return get_uuid_from_string(app_uuid) - if allow_random: return get_uuid_random() + + if allow_random: + return get_uuid_random() raise InvalidArgumentsException([ ('app_id.app_uuid.uuid', app_uuid), - ], extra_details=['At least one is required to produce a App UUID']) + ], extra_details=['At least one UUID is required to identify the app.']) diff --git a/src/qkd_app/service/database/uuids/_Builder.py b/src/qkd_app/service/database/uuids/_Builder.py index 39c98de69d577ce2722693e57c4ee678124f9e30..c5996b0f9d2cced27fd05e3966c3a60fa9bae24d 100644 --- a/src/qkd_app/service/database/uuids/_Builder.py +++ b/src/qkd_app/service/database/uuids/_Builder.py @@ -15,30 +15,37 @@ from typing import Optional, Union from uuid import UUID, uuid4, uuid5 -# Generate a UUIDv5-like from the SHA-1 of "TFS" and no namespace to be used as the NAMESPACE for all -# the context UUIDs generated. For efficiency purposes, the UUID is hardcoded; however, it is produced -# using the following code: -# from hashlib import sha1 -# from uuid import UUID -# hash = sha1(bytes('TFS', 'utf-8')).digest() -# NAMESPACE_TFS = UUID(bytes=hash[:16], version=5) +# Hardcoded namespace for generating UUIDs. NAMESPACE_TFS = UUID('200e3a1f-2223-534f-a100-758e29c37f40') -def get_uuid_from_string(str_uuid_or_name : Union[str, UUID], prefix_for_name : Optional[str] = None) -> str: - # if UUID given, assume it is already a valid UUID - if isinstance(str_uuid_or_name, UUID): return str_uuid_or_name +def get_uuid_from_string(str_uuid_or_name: Union[str, UUID], prefix_for_name: Optional[str] = None) -> str: + """ + Convert a string or UUID object into a UUID string. If input is a name, generate a UUID using the TFS namespace. + + :param str_uuid_or_name: Input string or UUID to be converted into UUID format + :param prefix_for_name: Optional prefix to add before the name when generating a name-based UUID + :return: A valid UUID string + :raises ValueError: If the input is invalid and cannot be converted to a UUID + """ + if isinstance(str_uuid_or_name, UUID): + return str(str_uuid_or_name) # Ensure returning a string representation + if not isinstance(str_uuid_or_name, str): - MSG = 'Parameter({:s}) cannot be used to produce a UUID' - raise Exception(MSG.format(str(repr(str_uuid_or_name)))) + raise ValueError(f"Invalid parameter ({repr(str_uuid_or_name)}). Expected a string or UUID to produce a valid UUID.") + try: - # try to parse as UUID + # Try to interpret the input as a UUID return str(UUID(str_uuid_or_name)) - except: # pylint: disable=bare-except - # produce a UUID within TFS namespace from parameter - if prefix_for_name is not None: - str_uuid_or_name = '{:s}/{:s}'.format(prefix_for_name, str_uuid_or_name) + except ValueError: + # If the input isn't a valid UUID, generate one using the name-based approach + if prefix_for_name: + str_uuid_or_name = f"{prefix_for_name}/{str_uuid_or_name}" return str(uuid5(NAMESPACE_TFS, str_uuid_or_name)) def get_uuid_random() -> str: - # Generate random UUID. No need to use namespace since "namespace + random = random". + """ + Generate and return a new random UUID as a string. + + :return: A randomly generated UUID string + """ return str(uuid4()) diff --git a/src/qos_profile/.gitlab-ci.yml b/src/qos_profile/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..a688cdb0590701d1f2659cac0c1049368a2228a2 --- /dev/null +++ b/src/qos_profile/.gitlab-ci.yml @@ -0,0 +1,107 @@ +# Copyright 2022-2024 ETSI OSG/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. + +# Build, tag, and push the Docker image to the GitLab Docker registry +build qos_profile: + variables: + IMAGE_NAME: 'qos_profile' # name of the microservice + IMAGE_TAG: 'latest' # tag of the container image (production, development, etc) + stage: build + before_script: + - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY + script: + - docker buildx build -t "$IMAGE_NAME:$IMAGE_TAG" -f ./src/$IMAGE_NAME/Dockerfile . + - docker tag "$IMAGE_NAME:$IMAGE_TAG" "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG" + - docker push "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG" + after_script: + - docker images --filter="dangling=true" --quiet | xargs -r docker rmi + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)' + - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"' + - changes: + - src/common/**/*.py + - proto/*.proto + - src/$IMAGE_NAME/**/*.{py,in,yml} + - src/$IMAGE_NAME/Dockerfile + - src/$IMAGE_NAME/tests/*.py + - manifests/${IMAGE_NAME}service.yaml + - .gitlab-ci.yml + +# Apply unit test to the component +unit_test qos_profile: + variables: + IMAGE_NAME: 'qos_profile' # name of the microservice + IMAGE_TAG: 'latest' # tag of the container image (production, development, etc) + stage: unit_test + needs: + - build qos_profile + before_script: + - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY + - if docker network list | grep teraflowbridge; then echo "teraflowbridge is already created"; else docker network create --driver=bridge teraflowbridge; fi + - if docker container ls | grep crdb; then docker rm -f crdb; else echo "CockroachDB container is not in the system"; fi + - if docker volume ls | grep crdb; then docker volume rm -f crdb; else echo "CockroachDB volume is not in the system"; fi + - if docker container ls | grep $IMAGE_NAME; then docker rm -f $IMAGE_NAME; else echo "$IMAGE_NAME container is not in the system"; fi + script: + - docker pull "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG" + - docker pull "cockroachdb/cockroach:latest-v22.2" + - docker volume create crdb + - > + docker run --name crdb -d --network=teraflowbridge -p 26257:26257 -p 8080:8080 + --env COCKROACH_DATABASE=tfs_test --env COCKROACH_USER=tfs --env COCKROACH_PASSWORD=tfs123 + --volume "crdb:/cockroach/cockroach-data" + cockroachdb/cockroach:latest-v22.2 start-single-node + - echo "Waiting for initialization..." + - while ! docker logs crdb 2>&1 | grep -q 'finished creating default user \"tfs\"'; do sleep 1; done + - docker logs crdb + - docker ps -a + - CRDB_ADDRESS=$(docker inspect crdb --format "{{.NetworkSettings.Networks.teraflowbridge.IPAddress}}") + - echo $CRDB_ADDRESS + - > + docker run --name $IMAGE_NAME -d -p 3030:3030 + --env "CRDB_URI=cockroachdb://tfs:tfs123@${CRDB_ADDRESS}:26257/tfs_test?sslmode=require" + --volume "$PWD/src/$IMAGE_NAME/tests:/opt/results" + --network=teraflowbridge + $CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG + - docker ps -a + - sleep 5 + - docker logs $IMAGE_NAME + - > + docker exec -i $IMAGE_NAME bash -c + "coverage run -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_crud.py --junitxml=/opt/results/${IMAGE_NAME}_report.xml" + - docker exec -i $IMAGE_NAME bash -c "coverage report --include='${IMAGE_NAME}/*' --show-missing" + coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/' + after_script: + # Check status after the tests + - docker ps -a + - docker logs $IMAGE_NAME + - docker rm -f $IMAGE_NAME crdb + - docker volume rm -f crdb + - docker network rm teraflowbridge + - docker volume prune --force + - docker image prune --force + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)' + - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"' + - changes: + - src/common/**/*.py + - proto/*.proto + - src/$IMAGE_NAME/**/*.{py,in,yml} + - src/$IMAGE_NAME/Dockerfile + - src/$IMAGE_NAME/tests/*.py + - manifests/${IMAGE_NAME}service.yaml + - .gitlab-ci.yml + artifacts: + when: always + reports: + junit: src/$IMAGE_NAME/tests/${IMAGE_NAME}_report.xml diff --git a/src/qos_profile/Config.py b/src/qos_profile/Config.py new file mode 100644 index 0000000000000000000000000000000000000000..3ee6f7071f145e06c3aeaefc09a43ccd88e619e3 --- /dev/null +++ b/src/qos_profile/Config.py @@ -0,0 +1,14 @@ +# Copyright 2022-2024 ETSI OSG/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. + diff --git a/src/qos_profile/Dockerfile b/src/qos_profile/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..361dc588c298b384b597edc2709333ba29cf28de --- /dev/null +++ b/src/qos_profile/Dockerfile @@ -0,0 +1,68 @@ +# Copyright 2022-2024 ETSI OSG/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. + +FROM python:3.9-slim + +# Install dependencies +RUN apt-get --yes --quiet --quiet update && \ + apt-get --yes --quiet --quiet install wget g++ git && \ + rm -rf /var/lib/apt/lists/* + +# Set Python to show logs as they occur +ENV PYTHONUNBUFFERED=0 + +# Download the gRPC health probe +RUN GRPC_HEALTH_PROBE_VERSION=v0.2.0 && \ + wget -qO/bin/grpc_health_probe https://github.com/grpc-ecosystem/grpc-health-probe/releases/download/${GRPC_HEALTH_PROBE_VERSION}/grpc_health_probe-linux-amd64 && \ + chmod +x /bin/grpc_health_probe + +# Get generic Python packages +RUN python3 -m pip install --upgrade pip +RUN python3 -m pip install --upgrade setuptools wheel +RUN python3 -m pip install --upgrade pip-tools + +# Get common Python packages +# Note: this step enables sharing the previous Docker build steps among all the Python components +WORKDIR /var/teraflow +COPY common_requirements.in common_requirements.in +RUN pip-compile --quiet --output-file=common_requirements.txt common_requirements.in +RUN python3 -m pip install -r common_requirements.txt + +# Add common files into working directory +WORKDIR /var/teraflow/common +COPY src/common/. ./ +RUN rm -rf proto + +# Create proto sub-folder, copy .proto files, and generate Python code +RUN mkdir -p /var/teraflow/common/proto +WORKDIR /var/teraflow/common/proto +RUN touch __init__.py +COPY proto/*.proto ./ +RUN python3 -m grpc_tools.protoc -I=. --python_out=. --grpc_python_out=. *.proto +RUN rm *.proto +RUN find . -type f -exec sed -i -E 's/(import\ .*)_pb2/from . \1_pb2/g' {} \; + +# Create component sub-folders, get specific Python packages +RUN mkdir -p /var/teraflow/qos_profile +WORKDIR /var/teraflow/qos_profile +COPY src/qos_profile/requirements.in requirements.in +RUN pip-compile --quiet --output-file=requirements.txt requirements.in +RUN python3 -m pip install -r requirements.txt + +# Add component files into working directory +WORKDIR /var/teraflow +COPY src/qos_profile/. qos_profile/ + +# Start the service +ENTRYPOINT ["python", "-m", "qos_profile.service"] diff --git a/src/qos_profile/__init__.py b/src/qos_profile/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..3ee6f7071f145e06c3aeaefc09a43ccd88e619e3 --- /dev/null +++ b/src/qos_profile/__init__.py @@ -0,0 +1,14 @@ +# Copyright 2022-2024 ETSI OSG/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. + diff --git a/src/qos_profile/client/QoSProfileClient.py b/src/qos_profile/client/QoSProfileClient.py new file mode 100644 index 0000000000000000000000000000000000000000..748b3f208cc44e80c2e7b88f163f937328249633 --- /dev/null +++ b/src/qos_profile/client/QoSProfileClient.py @@ -0,0 +1,91 @@ +# Copyright 2022-2024 ETSI OSG/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. + +from typing import Iterator +import grpc, logging +from common.Constants import ServiceNameEnum +from common.Settings import get_service_host, get_service_port_grpc +from common.proto.context_pb2 import Empty, QoSProfileId +from common.proto.qos_profile_pb2 import QoSProfile, QoDConstraintsRequest +from common.proto.context_pb2 import Constraint +from common.proto.qos_profile_pb2_grpc import QoSProfileServiceStub +from common.tools.client.RetryDecorator import retry, delay_exponential +from common.tools.grpc.Tools import grpc_message_to_json_string + +LOGGER = logging.getLogger(__name__) +MAX_RETRIES = 15 +DELAY_FUNCTION = delay_exponential(initial=0.01, increment=2.0, maximum=5.0) +RETRY_DECORATOR = retry(max_retries=MAX_RETRIES, delay_function=DELAY_FUNCTION, prepare_method_name='connect') + +class QoSProfileClient: + def __init__(self, host=None, port=None): + if not host: host = get_service_host(ServiceNameEnum.QOSPROFILE) + if not port: port = get_service_port_grpc(ServiceNameEnum.QOSPROFILE) + self.endpoint = '{:s}:{:s}'.format(str(host), str(port)) + LOGGER.debug('Creating channel to {:s}...'.format(str(self.endpoint))) + self.channel = None + self.stub = None + self.connect() + LOGGER.debug('Channel created') + + def connect(self): + self.channel = grpc.insecure_channel(self.endpoint) + self.stub = QoSProfileServiceStub(self.channel) + + def close(self): + if self.channel is not None: self.channel.close() + self.channel = None + self.stub = None + + @RETRY_DECORATOR + def CreateQoSProfile(self, request: QoSProfile) -> QoSProfile: + LOGGER.debug('CreateQoSProfile request: {:s}'.format(grpc_message_to_json_string(request))) + response = self.stub.CreateQoSProfile(request) + LOGGER.debug('CreateQoSProfile result: {:s}'.format(grpc_message_to_json_string(response))) + return response + + @RETRY_DECORATOR + def UpdateQoSProfile(self, request: QoSProfile) -> QoSProfile: + LOGGER.debug('UpdateQoSProfile request: {:s}'.format(grpc_message_to_json_string(request))) + response = self.stub.UpdateQoSProfile(request) + LOGGER.debug('UpdateQoSProfile result: {:s}'.format(grpc_message_to_json_string(response))) + return response + + @RETRY_DECORATOR + def DeleteQoSProfile(self, request: QoSProfileId) -> Empty: + LOGGER.debug('DeleteQoSProfile request: {:s}'.format(grpc_message_to_json_string(request))) + response = self.stub.DeleteQoSProfile(request) + LOGGER.debug('DeleteQoSProfile result: {:s}'.format(grpc_message_to_json_string(response))) + return response + + @RETRY_DECORATOR + def GetQoSProfile(self, request: QoSProfileId) -> QoSProfile: + LOGGER.debug('GetQoSProfile request: {:s}'.format(grpc_message_to_json_string(request))) + response = self.stub.GetQoSProfile(request) + LOGGER.debug('GetQoSProfile result: {:s}'.format(grpc_message_to_json_string(response))) + return response + + @RETRY_DECORATOR + def GetQoSProfiles(self, request: Empty) -> Iterator[QoSProfile]: + LOGGER.debug('GetQoSProfiles request: {:s}'.format(grpc_message_to_json_string(request))) + response = self.stub.GetQoSProfiles(request) + LOGGER.debug('GetQoSProfiles result: {:s}'.format(grpc_message_to_json_string(response))) + return response + + @RETRY_DECORATOR + def GetConstraintListFromQoSProfile(self, request: QoDConstraintsRequest) -> Iterator[Constraint]: + LOGGER.debug('GetConstraintListFromQoSProfile request: {:s}'.format(grpc_message_to_json_string(request))) + response = self.stub.GetConstraintListFromQoSProfile(request) + LOGGER.debug('GetConstraintListFromQoSProfile result: {:s}'.format(grpc_message_to_json_string(response))) + return response diff --git a/src/qos_profile/client/__init__.py b/src/qos_profile/client/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..3ee6f7071f145e06c3aeaefc09a43ccd88e619e3 --- /dev/null +++ b/src/qos_profile/client/__init__.py @@ -0,0 +1,14 @@ +# Copyright 2022-2024 ETSI OSG/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. + diff --git a/src/qos_profile/requirements.in b/src/qos_profile/requirements.in new file mode 100644 index 0000000000000000000000000000000000000000..3e98fef362277dbf60019902e115d1c733bea9e7 --- /dev/null +++ b/src/qos_profile/requirements.in @@ -0,0 +1,18 @@ +# Copyright 2022-2024 ETSI OSG/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. + +psycopg2-binary==2.9.* +SQLAlchemy==1.4.* +sqlalchemy-cockroachdb==1.4.* +SQLAlchemy-Utils==0.38.* diff --git a/src/qos_profile/service/QoSProfileService.py b/src/qos_profile/service/QoSProfileService.py new file mode 100644 index 0000000000000000000000000000000000000000..ce5c5591b498787240c5390bbe5575822bc9da91 --- /dev/null +++ b/src/qos_profile/service/QoSProfileService.py @@ -0,0 +1,29 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import sqlalchemy +from common.Constants import ServiceNameEnum +from common.Settings import get_service_port_grpc +from common.proto.qos_profile_pb2_grpc import add_QoSProfileServiceServicer_to_server +from common.tools.service.GenericGrpcService import GenericGrpcService +from .QoSProfileServiceServicerImpl import QoSProfileServiceServicerImpl + +class QoSProfileService(GenericGrpcService): + def __init__(self, db_engine: sqlalchemy.engine.Engine, cls_name: str = __name__) -> None: + port = get_service_port_grpc(ServiceNameEnum.QOSPROFILE) + super().__init__(port, cls_name=cls_name) + self.qos_profile_servicer = QoSProfileServiceServicerImpl(db_engine) + + def install_servicers(self): + add_QoSProfileServiceServicer_to_server(self.qos_profile_servicer, self.server) diff --git a/src/qos_profile/service/QoSProfileServiceServicerImpl.py b/src/qos_profile/service/QoSProfileServiceServicerImpl.py new file mode 100644 index 0000000000000000000000000000000000000000..e705b35ae1e1bf8f2398ba95601c5a4723ba39a1 --- /dev/null +++ b/src/qos_profile/service/QoSProfileServiceServicerImpl.py @@ -0,0 +1,96 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import grpc, logging, sqlalchemy +from typing import Iterator + +import grpc._channel +from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_method +from common.proto.context_pb2 import Constraint, ConstraintActionEnum, Constraint_QoSProfile, Constraint_Schedule, Empty, QoSProfileId +from common.proto.qos_profile_pb2 import QoSProfile, QoDConstraintsRequest +from common.proto.qos_profile_pb2_grpc import QoSProfileServiceServicer +from .database.QoSProfile import set_qos_profile, delete_qos_profile, get_qos_profile, get_qos_profiles + + +LOGGER = logging.getLogger(__name__) + +METRICS_POOL = MetricsPool('QoSProfile', 'RPC') + +class QoSProfileServiceServicerImpl(QoSProfileServiceServicer): + def __init__(self, db_engine: sqlalchemy.engine.Engine) -> None: + LOGGER.debug('Servicer Created') + self.db_engine = db_engine + + def _get_metrics(self) -> MetricsPool: return METRICS_POOL + + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) + def CreateQoSProfile(self, request: QoSProfile, context: grpc.ServicerContext) -> QoSProfile: + qos_profile = get_qos_profile(self.db_engine, request.qos_profile_id.qos_profile_id.uuid) + if qos_profile is not None: + context.set_details(f'QoSProfile {request.qos_profile_id.qos_profile_id.uuid} already exists') + context.set_code(grpc.StatusCode.ALREADY_EXISTS) + return QoSProfile() + return set_qos_profile(self.db_engine, request) + + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) + def UpdateQoSProfile(self, request: QoSProfile, context: grpc.ServicerContext) -> QoSProfile: + qos_profile = get_qos_profile(self.db_engine, request.qos_profile_id.qos_profile_id.uuid) + if qos_profile is None: + context.set_details(f'QoSProfile {request.qos_profile_id.qos_profile_id.uuid} not found') + context.set_code(grpc.StatusCode.NOT_FOUND) + return QoSProfile() + return set_qos_profile(self.db_engine, request) + + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) + def DeleteQoSProfile(self, request: QoSProfileId, context: grpc.ServicerContext) -> Empty: + qos_profile = get_qos_profile(self.db_engine, request.qos_profile_id.uuid) + if qos_profile is None: + context.set_details(f'QoSProfile {request.qos_profile_id.uuid} not found') + context.set_code(grpc.StatusCode.NOT_FOUND) + return QoSProfile() + return delete_qos_profile(self.db_engine, request.qos_profile_id.uuid) + + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) + def GetQoSProfile(self, request: QoSProfileId, context: grpc.ServicerContext) -> QoSProfile: + qos_profile = get_qos_profile(self.db_engine, request.qos_profile_id.uuid) + if qos_profile is None: + context.set_details(f'QoSProfile {request.qos_profile_id.uuid} not found') + context.set_code(grpc.StatusCode.NOT_FOUND) + return QoSProfile() + return qos_profile + + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) + def GetQoSProfiles(self, request: Empty, context: grpc.ServicerContext) -> Iterator[QoSProfile]: + yield from get_qos_profiles(self.db_engine, request) + + + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) + def GetConstraintListFromQoSProfile(self, request: QoDConstraintsRequest, context: grpc.ServicerContext) -> Iterator[Constraint]: + qos_profile = get_qos_profile(self.db_engine, request.qos_profile_id.qos_profile_id.uuid) + if qos_profile is None: + context.set_details(f'QoSProfile {request.qos_profile_id.qos_profile_id.uuid} not found') + context.set_code(grpc.StatusCode.NOT_FOUND) + yield Constraint() + + qos_profile_constraint = Constraint_QoSProfile() + qos_profile_constraint.qos_profile_name = qos_profile.name + qos_profile_constraint.qos_profile_id.CopyFrom(qos_profile.qos_profile_id) + constraint_qos = Constraint() + constraint_qos.action = ConstraintActionEnum.CONSTRAINTACTION_SET + constraint_qos.qos_profile.CopyFrom(qos_profile_constraint) + yield constraint_qos + constraint_schedule = Constraint() + constraint_schedule.action = ConstraintActionEnum.CONSTRAINTACTION_SET + constraint_schedule.schedule.CopyFrom(Constraint_Schedule(start_timestamp=request.start_timestamp, duration_days=request.duration/86400)) + yield constraint_schedule diff --git a/src/qos_profile/service/__init__.py b/src/qos_profile/service/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..3ee6f7071f145e06c3aeaefc09a43ccd88e619e3 --- /dev/null +++ b/src/qos_profile/service/__init__.py @@ -0,0 +1,14 @@ +# Copyright 2022-2024 ETSI OSG/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. + diff --git a/src/qos_profile/service/__main__.py b/src/qos_profile/service/__main__.py new file mode 100644 index 0000000000000000000000000000000000000000..7f9e6de92b3ddf24e46a53f478bf90046e32d523 --- /dev/null +++ b/src/qos_profile/service/__main__.py @@ -0,0 +1,66 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import logging, signal, sys, threading +from prometheus_client import start_http_server +from common.Settings import get_log_level, get_metrics_port +from common.tools.database.GenericDatabase import Database +from .QoSProfileService import QoSProfileService +from .database.models.QoSProfile import QoSProfileModel + +LOG_LEVEL = get_log_level() +logging.basicConfig(level=LOG_LEVEL, format="[%(asctime)s] %(levelname)s:%(name)s:%(message)s") +LOGGER = logging.getLogger(__name__) + + +terminate = threading.Event() + +def signal_handler(signal, frame): # pylint: disable=redefined-outer-name,unused-argument + LOGGER.warning('Terminate signal received') + terminate.set() + +def main(): + LOGGER.info('Starting...') + signal.signal(signal.SIGINT, signal_handler) + signal.signal(signal.SIGTERM, signal_handler) + + # Start metrics server + metrics_port = get_metrics_port() + start_http_server(metrics_port) + + # Get Database Engine instance and initialize database, if needed + db_manager = Database(QoSProfileModel) + + try: + db_manager.create_database() + db_manager.create_tables() + except Exception as e: # pylint: disable=bare-except # pragma: no cover + LOGGER.exception('Failed to check/create the database: {:s}'.format(str(db_manager.db_engine.url))) + raise e + + # Starting service + grpc_service = QoSProfileService(db_manager.db_engine) + grpc_service.start() + + # Wait for Ctrl+C or termination signal + while not terminate.wait(timeout=1.0): pass + + LOGGER.info('Terminating...') + grpc_service.stop() + + LOGGER.info('Bye') + return 0 + +if __name__ == '__main__': + sys.exit(main()) diff --git a/src/kpi_manager/database/KpiEngine.py b/src/qos_profile/service/database/Engine.py similarity index 64% rename from src/kpi_manager/database/KpiEngine.py rename to src/qos_profile/service/database/Engine.py index 0fce7e3d36cf2f03a18f311c815719a4f17b2869..6ba1a82d0b5790deded242ecde682020a0c785f8 100644 --- a/src/kpi_manager/database/KpiEngine.py +++ b/src/qos_profile/service/database/Engine.py @@ -12,29 +12,44 @@ # See the License for the specific language governing permissions and # limitations under the License. -import logging, sqlalchemy +import logging, sqlalchemy, sqlalchemy_utils from common.Settings import get_setting LOGGER = logging.getLogger(__name__) -CRDB_URI_TEMPLATE = 'cockroachdb://{:s}:{:s}@cockroachdb-public.{:s}.svc.cluster.local:{:s}/{:s}?sslmode={:s}' -class KpiEngine: +APP_NAME = 'tfs' +ECHO = False # true: dump SQL commands and transactions executed +CRDB_URI_TEMPLATE = 'cockroachdb://{:s}:{:s}@qos-profileservice.{:s}.svc.cluster.local:{:s}/{:s}?sslmode={:s}' + +class Engine: @staticmethod def get_engine() -> sqlalchemy.engine.Engine: crdb_uri = get_setting('CRDB_URI', default=None) if crdb_uri is None: CRDB_NAMESPACE = get_setting('CRDB_NAMESPACE') CRDB_SQL_PORT = get_setting('CRDB_SQL_PORT') - CRDB_DATABASE = 'tfs_kpi_mgmt' # TODO: define variable get_setting('CRDB_DATABASE_KPI_MGMT') + CRDB_DATABASE = get_setting('CRDB_DATABASE') CRDB_USERNAME = get_setting('CRDB_USERNAME') CRDB_PASSWORD = get_setting('CRDB_PASSWORD') CRDB_SSLMODE = get_setting('CRDB_SSLMODE') crdb_uri = CRDB_URI_TEMPLATE.format( CRDB_USERNAME, CRDB_PASSWORD, CRDB_NAMESPACE, CRDB_SQL_PORT, CRDB_DATABASE, CRDB_SSLMODE) + try: - engine = sqlalchemy.create_engine(crdb_uri, echo=False) - LOGGER.info(' KpiDBmanager initalized with DB URL: {:}'.format(crdb_uri)) + engine = sqlalchemy.create_engine( + crdb_uri, connect_args={'application_name': APP_NAME}, echo=ECHO, future=True) except: # pylint: disable=bare-except # pragma: no cover LOGGER.exception('Failed to connect to database: {:s}'.format(str(crdb_uri))) - return None # type: ignore + return None + return engine + + @staticmethod + def create_database(engine : sqlalchemy.engine.Engine) -> None: + if not sqlalchemy_utils.database_exists(engine.url): + sqlalchemy_utils.create_database(engine.url) + + @staticmethod + def drop_database(engine : sqlalchemy.engine.Engine) -> None: + if sqlalchemy_utils.database_exists(engine.url): + sqlalchemy_utils.drop_database(engine.url) diff --git a/src/qos_profile/service/database/QoSProfile.py b/src/qos_profile/service/database/QoSProfile.py new file mode 100644 index 0000000000000000000000000000000000000000..86823c16586bb15db4cfd846c97d141095aa6944 --- /dev/null +++ b/src/qos_profile/service/database/QoSProfile.py @@ -0,0 +1,116 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import logging +from sqlalchemy.dialects.postgresql import insert +from sqlalchemy.engine import Engine +from sqlalchemy.orm import Session, sessionmaker +from sqlalchemy_cockroachdb import run_transaction +from typing import List, Optional + +from common.proto.context_pb2 import Empty, Uuid, QoSProfileId +from common.proto.qos_profile_pb2 import QoSProfileValueUnitPair, QoSProfile +from common.tools.grpc.Tools import grpc_message_to_json +from .models.QoSProfile import QoSProfileModel + +LOGGER = logging.getLogger(__name__) + +def grpc_message_to_qos_table_data(message: QoSProfile) -> dict: + return { + 'qos_profile_id' : message.qos_profile_id.qos_profile_id.uuid, + 'name' : message.name, + 'description' : message.description, + 'status' : message.status, + 'targetMinUpstreamRate' : grpc_message_to_json(message.targetMinUpstreamRate), + 'maxUpstreamRate' : grpc_message_to_json(message.maxUpstreamRate), + 'maxUpstreamBurstRate' : grpc_message_to_json(message.maxUpstreamBurstRate), + 'targetMinDownstreamRate' : grpc_message_to_json(message.targetMinDownstreamRate), + 'maxDownstreamRate' : grpc_message_to_json(message.maxDownstreamRate), + 'maxDownstreamBurstRate' : grpc_message_to_json(message.maxDownstreamBurstRate), + 'minDuration' : grpc_message_to_json(message.minDuration), + 'maxDuration' : grpc_message_to_json(message.maxDuration), + 'priority' : message.priority, + 'packetDelayBudget' : grpc_message_to_json(message.packetDelayBudget), + 'jitter' : grpc_message_to_json(message.jitter), + 'packetErrorLossRate' : message.packetErrorLossRate, + } + +def qos_table_data_to_grpc_message(data: QoSProfileModel) -> QoSProfile: + return QoSProfile( + qos_profile_id = QoSProfileId(qos_profile_id=Uuid(uuid=data.qos_profile_id)), + name = data.name, + description = data.description, + status = data.status, + targetMinUpstreamRate = QoSProfileValueUnitPair(**data.targetMinUpstreamRate), + maxUpstreamRate = QoSProfileValueUnitPair(**data.maxUpstreamRate), + maxUpstreamBurstRate = QoSProfileValueUnitPair(**data.maxUpstreamBurstRate), + targetMinDownstreamRate = QoSProfileValueUnitPair(**data.targetMinDownstreamRate), + maxDownstreamRate = QoSProfileValueUnitPair(**data.maxDownstreamRate), + maxDownstreamBurstRate = QoSProfileValueUnitPair(**data.maxDownstreamBurstRate), + minDuration = QoSProfileValueUnitPair(**data.minDuration), + maxDuration = QoSProfileValueUnitPair(**data.maxDuration), + priority = data.priority, + packetDelayBudget = QoSProfileValueUnitPair(**data.packetDelayBudget), + jitter = QoSProfileValueUnitPair(**data.jitter), + packetErrorLossRate = data.packetErrorLossRate + ) + +def set_qos_profile(db_engine : Engine, request : QoSProfile) -> QoSProfile: + qos_profile_data = grpc_message_to_qos_table_data(request) + def callback(session : Session) -> bool: + stmt = insert(QoSProfileModel).values([qos_profile_data]) + stmt = stmt.on_conflict_do_update(index_elements=[QoSProfileModel.qos_profile_id], + set_=dict( + + name = stmt.excluded.name, + description = stmt.excluded.description, + status = stmt.excluded.status, + targetMinUpstreamRate = stmt.excluded.targetMinUpstreamRate, + maxUpstreamRate = stmt.excluded.maxUpstreamRate, + maxUpstreamBurstRate = stmt.excluded.maxUpstreamBurstRate, + targetMinDownstreamRate = stmt.excluded.targetMinDownstreamRate, + maxDownstreamRate = stmt.excluded.maxDownstreamRate, + maxDownstreamBurstRate = stmt.excluded.maxDownstreamBurstRate, + minDuration = stmt.excluded.minDuration, + maxDuration = stmt.excluded.maxDuration, + priority = stmt.excluded.priority, + packetDelayBudget = stmt.excluded.packetDelayBudget, + jitter = stmt.excluded.jitter, + packetErrorLossRate = stmt.excluded.packetErrorLossRate, + ) + ) + stmt = stmt.returning(QoSProfileModel) + qos_profile = session.execute(stmt).fetchall() + return qos_profile[0] + qos_profile_row = run_transaction(sessionmaker(bind=db_engine), callback) + return qos_table_data_to_grpc_message(qos_profile_row) + +def delete_qos_profile(db_engine : Engine, request : str) -> Empty: + def callback(session : Session) -> bool: + num_deleted = session.query(QoSProfileModel).filter_by(qos_profile_id=request).delete() + return num_deleted > 0 + deleted = run_transaction(sessionmaker(bind=db_engine), callback) + return Empty() + +def get_qos_profile(db_engine : Engine, request : str) -> Optional[QoSProfile]: + def callback(session : Session) -> Optional[QoSProfile]: + obj : Optional[QoSProfileModel] = session.query(QoSProfileModel).filter_by(qos_profile_id=request).one_or_none() + return None if obj is None else qos_table_data_to_grpc_message(obj) + return run_transaction(sessionmaker(bind=db_engine), callback) + +def get_qos_profiles(db_engine : Engine, request : Empty) -> List[QoSProfile]: + def callback(session : Session) -> List[QoSProfile]: + obj_list : List[QoSProfileModel] = session.query(QoSProfileModel).all() + return [qos_table_data_to_grpc_message(obj) for obj in obj_list] + return run_transaction(sessionmaker(bind=db_engine), callback) diff --git a/src/qos_profile/service/database/__init__.py b/src/qos_profile/service/database/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..3ee6f7071f145e06c3aeaefc09a43ccd88e619e3 --- /dev/null +++ b/src/qos_profile/service/database/__init__.py @@ -0,0 +1,14 @@ +# Copyright 2022-2024 ETSI OSG/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. + diff --git a/src/qos_profile/service/database/models/QoSProfile.py b/src/qos_profile/service/database/models/QoSProfile.py new file mode 100644 index 0000000000000000000000000000000000000000..bfbdeef0a35490b1a62b80bddb098fd2bf90c2e4 --- /dev/null +++ b/src/qos_profile/service/database/models/QoSProfile.py @@ -0,0 +1,38 @@ +# Copyright 2022-2024 ETSI OSG/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. + +from sqlalchemy import Column, Integer, String, JSON +from sqlalchemy.dialects.postgresql import UUID +from ._Base import _Base + + +class QoSProfileModel(_Base): + __tablename__ = 'qos_profile' + + qos_profile_id = Column(UUID(as_uuid=False), primary_key=True) + name = Column(String, nullable=False) + description = Column(String, nullable=False) + status = Column(String, nullable=False) + targetMinUpstreamRate = Column(JSON, nullable=False) + maxUpstreamRate = Column(JSON, nullable=False) + maxUpstreamBurstRate = Column(JSON, nullable=False) + targetMinDownstreamRate = Column(JSON, nullable=False) + maxDownstreamRate = Column(JSON, nullable=False) + maxDownstreamBurstRate = Column(JSON, nullable=False) + minDuration = Column(JSON, nullable=False) + maxDuration = Column(JSON, nullable=False) + priority = Column(Integer, nullable=False) + packetDelayBudget = Column(JSON, nullable=False) + jitter = Column(JSON, nullable=False) + packetErrorLossRate = Column(Integer, nullable=False) diff --git a/src/qos_profile/service/database/models/_Base.py b/src/qos_profile/service/database/models/_Base.py new file mode 100644 index 0000000000000000000000000000000000000000..d94dad3cdfc4dad473cc12eb00d502b05595b8f4 --- /dev/null +++ b/src/qos_profile/service/database/models/_Base.py @@ -0,0 +1,22 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import sqlalchemy +from sqlalchemy.orm import declarative_base + +_Base = declarative_base() + +def rebuild_database(db_engine : sqlalchemy.engine.Engine, drop_if_exists : bool = False): + if drop_if_exists: _Base.metadata.drop_all(db_engine) + _Base.metadata.create_all(db_engine) diff --git a/src/qos_profile/service/database/models/__init__.py b/src/qos_profile/service/database/models/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..bbfc943b68af13a11e562abbc8680ade71db8f02 --- /dev/null +++ b/src/qos_profile/service/database/models/__init__.py @@ -0,0 +1,13 @@ +# Copyright 2022-2024 ETSI OSG/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. diff --git a/src/qos_profile/tests/.gitignore b/src/qos_profile/tests/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..6b97d6fe3ad32f39097745229ab7f547f26ecb12 --- /dev/null +++ b/src/qos_profile/tests/.gitignore @@ -0,0 +1 @@ +# Add here your files containing confidential testbed details such as IP addresses, ports, usernames, passwords, etc. diff --git a/src/qos_profile/tests/__init__.py b/src/qos_profile/tests/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..3ee6f7071f145e06c3aeaefc09a43ccd88e619e3 --- /dev/null +++ b/src/qos_profile/tests/__init__.py @@ -0,0 +1,14 @@ +# Copyright 2022-2024 ETSI OSG/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. + diff --git a/src/qos_profile/tests/conftest.py b/src/qos_profile/tests/conftest.py new file mode 100644 index 0000000000000000000000000000000000000000..6e8d42b336accef155967ab8d736272f17efcbdc --- /dev/null +++ b/src/qos_profile/tests/conftest.py @@ -0,0 +1,95 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import os, pytest, sqlalchemy +from _pytest.config import Config +from _pytest.terminal import TerminalReporter +from common.Constants import ServiceNameEnum +from common.Settings import ( + ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC, + get_env_var_name, get_service_port_grpc +) +from common.proto.context_pb2 import Uuid, QoSProfileId +from common.proto.qos_profile_pb2 import QoSProfileValueUnitPair, QoSProfile +from common.method_wrappers.Decorator import MetricsPool +from qos_profile.client.QoSProfileClient import QoSProfileClient +from qos_profile.service.QoSProfileService import QoSProfileService +from qos_profile.service.database.Engine import Engine +from qos_profile.service.database.models._Base import rebuild_database + +LOCAL_HOST = '127.0.0.1' +GRPC_PORT = 10000 + int(get_service_port_grpc(ServiceNameEnum.QOSPROFILE)) # avoid privileged ports + +os.environ[get_env_var_name(ServiceNameEnum.QOSPROFILE, ENVVAR_SUFIX_SERVICE_HOST )] = str(LOCAL_HOST) +os.environ[get_env_var_name(ServiceNameEnum.QOSPROFILE, ENVVAR_SUFIX_SERVICE_PORT_GRPC)] = str(GRPC_PORT) + +@pytest.fixture(scope='session') +def qosprofile_db(request) -> sqlalchemy.engine.Engine: # pylint: disable=unused-argument + _db_engine = Engine.get_engine() + Engine.drop_database(_db_engine) + Engine.create_database(_db_engine) + rebuild_database(_db_engine) + yield _db_engine + +RAW_METRICS : MetricsPool = None + +@pytest.fixture(scope='session') +def qosprofile_service( + qosprofile_db : sqlalchemy.engine.Engine # pylint: disable=redefined-outer-name +): + global RAW_METRICS # pylint: disable=global-statement + _service = QoSProfileService(qosprofile_db) + RAW_METRICS = _service.qos_profile_servicer._get_metrics() + _service.start() + yield _service + _service.stop() + +@pytest.fixture(scope='session') +def qos_profile_client(qosprofile_service : QoSProfileService): # pylint: disable=redefined-outer-name,unused-argument + _client = QoSProfileClient() + yield _client + _client.close() + +@pytest.hookimpl(hookwrapper=True) +def pytest_terminal_summary( + terminalreporter : TerminalReporter, exitstatus : int, config : Config # pylint: disable=unused-argument +): + yield + + if RAW_METRICS is not None: + print('') + print('Performance Results:') + print(RAW_METRICS.get_pretty_table().get_string()) + +def create_qos_profile_from_json(qos_profile_data: dict) -> QoSProfile: + def create_QoSProfileValueUnitPair(data) -> QoSProfileValueUnitPair: + return QoSProfileValueUnitPair(value=data['value'], unit=data['unit']) + qos_profile = QoSProfile() + qos_profile.qos_profile_id.CopyFrom(QoSProfileId(qos_profile_id=Uuid(uuid=qos_profile_data['qos_profile_id']))) + qos_profile.name = qos_profile_data['name'] + qos_profile.description = qos_profile_data['description'] + qos_profile.status = qos_profile_data['status'] + qos_profile.targetMinUpstreamRate.CopyFrom(create_QoSProfileValueUnitPair(qos_profile_data['targetMinUpstreamRate'])) + qos_profile.maxUpstreamRate.CopyFrom(create_QoSProfileValueUnitPair(qos_profile_data['maxUpstreamRate'])) + qos_profile.maxUpstreamBurstRate.CopyFrom(create_QoSProfileValueUnitPair(qos_profile_data['maxUpstreamBurstRate'])) + qos_profile.targetMinDownstreamRate.CopyFrom(create_QoSProfileValueUnitPair(qos_profile_data['targetMinDownstreamRate'])) + qos_profile.maxDownstreamRate.CopyFrom(create_QoSProfileValueUnitPair(qos_profile_data['maxDownstreamRate'])) + qos_profile.maxDownstreamBurstRate.CopyFrom(create_QoSProfileValueUnitPair(qos_profile_data['maxDownstreamBurstRate'])) + qos_profile.minDuration.CopyFrom(create_QoSProfileValueUnitPair(qos_profile_data['minDuration'])) + qos_profile.maxDuration.CopyFrom(create_QoSProfileValueUnitPair(qos_profile_data['maxDuration'])) + qos_profile.priority = qos_profile_data['priority'] + qos_profile.packetDelayBudget.CopyFrom(create_QoSProfileValueUnitPair(qos_profile_data['packetDelayBudget'])) + qos_profile.jitter.CopyFrom(create_QoSProfileValueUnitPair(qos_profile_data['jitter'])) + qos_profile.packetErrorLossRate = qos_profile_data['packetErrorLossRate'] + return qos_profile diff --git a/src/qos_profile/tests/test_constraints.py b/src/qos_profile/tests/test_constraints.py new file mode 100644 index 0000000000000000000000000000000000000000..78fe73d64c11502c6468134f937003d2700e5b71 --- /dev/null +++ b/src/qos_profile/tests/test_constraints.py @@ -0,0 +1,94 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import logging +from google.protobuf.json_format import MessageToDict + +from common.proto.qos_profile_pb2 import QoDConstraintsRequest +from common.tools.grpc.Tools import grpc_message_to_json_string +from qos_profile.client.QoSProfileClient import QoSProfileClient + +from .conftest import create_qos_profile_from_json + +LOGGER = logging.getLogger(__name__) +LOGGER.setLevel(logging.DEBUG) + +qos_profile_data = { + "qos_profile_id": "0afc905f-f1f0-4ae2-9925-9df17140b8bf", + "name": "QCI_2_voice", + "description": "QoS profile for game streaming", + "status": "ACTIVE", + "targetMinUpstreamRate": { + "value": 5, + "unit": "bps" + }, + "maxUpstreamRate": { + "value": 5, + "unit": "bps" + }, + "maxUpstreamBurstRate": { + "value": 5, + "unit": "bps" + }, + "targetMinDownstreamRate": { + "value": 5, + "unit": "bps" + }, + "maxDownstreamRate": { + "value": 5, + "unit": "bps" + }, + "maxDownstreamBurstRate": { + "value": 5, + "unit": "bps" + }, + "minDuration": { + "value": 5, + "unit": "Minutes" + }, + "maxDuration": { + "value": 6, + "unit": "Minutes" + }, + "priority": 5, + "packetDelayBudget": { + "value": 5, + "unit": "Minutes" + }, + "jitter": { + "value": 5, + "unit": "Minutes" + }, + "packetErrorLossRate": 3 +} + + +def test_get_constraints(qos_profile_client: QoSProfileClient): + qos_profile = create_qos_profile_from_json(qos_profile_data) + qos_profile_created = qos_profile_client.CreateQoSProfile(qos_profile) + LOGGER.info('qos_profile_data = {:s}'.format(grpc_message_to_json_string(qos_profile_created))) + constraints = list(qos_profile_client.GetConstraintListFromQoSProfile(QoDConstraintsRequest( + qos_profile_id=qos_profile.qos_profile_id, start_timestamp=1726063284.25332, duration=86400) + )) + constraint_1 = constraints[0] + constraint_2 = constraints[1] + assert len(constraints) == 2 + assert constraint_1.WhichOneof('constraint') == 'qos_profile' + assert constraint_1.qos_profile.qos_profile_id == qos_profile.qos_profile_id + assert constraint_1.qos_profile.qos_profile_name == 'QCI_2_voice' + assert constraint_2.WhichOneof('constraint') == 'schedule' + assert constraint_2.schedule.start_timestamp == 1726063284.25332 + assert constraint_2.schedule.duration_days == 1 + + qos_profile_client.DeleteQoSProfile(qos_profile.qos_profile_id) diff --git a/src/qos_profile/tests/test_crud.py b/src/qos_profile/tests/test_crud.py new file mode 100644 index 0000000000000000000000000000000000000000..9b92646c3341d2801e3b04741430075b4956a263 --- /dev/null +++ b/src/qos_profile/tests/test_crud.py @@ -0,0 +1,117 @@ +# Copyright 2022-2024 ETSI OSG/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. + +from grpc import RpcError, StatusCode +import logging, pytest +from .conftest import create_qos_profile_from_json +from common.proto.context_pb2 import Empty, Uuid, QoSProfileId +from common.tools.grpc.Tools import grpc_message_to_json_string +from qos_profile.client.QoSProfileClient import QoSProfileClient + +LOGGER = logging.getLogger(__name__) +LOGGER.setLevel(logging.DEBUG) + +qos_profile_data = { + "qos_profile_id": "f00406f5-8e36-4abc-a0ec-b871c7f062b7", + "name": "QCI_1_voice", + "description": "QoS profile for video streaming", + "status": "ACTIVE", + "targetMinUpstreamRate": { + "value": 10, + "unit": "bps" + }, + "maxUpstreamRate": { + "value": 10, + "unit": "bps" + }, + "maxUpstreamBurstRate": { + "value": 10, + "unit": "bps" + }, + "targetMinDownstreamRate": { + "value": 10, + "unit": "bps" + }, + "maxDownstreamRate": { + "value": 10, + "unit": "bps" + }, + "maxDownstreamBurstRate": { + "value": 10, + "unit": "bps" + }, + "minDuration": { + "value": 12, + "unit": "Minutes" + }, + "maxDuration": { + "value": 12, + "unit": "Minutes" + }, + "priority": 20, + "packetDelayBudget": { + "value": 12, + "unit": "Minutes" + }, + "jitter": { + "value": 12, + "unit": "Minutes" + }, + "packetErrorLossRate": 3 +} + +def test_create_qos_profile(qos_profile_client: QoSProfileClient): + qos_profile = create_qos_profile_from_json(qos_profile_data) + qos_profile_created = qos_profile_client.CreateQoSProfile(qos_profile) + LOGGER.info('qos_profile_data = {:s}'.format(grpc_message_to_json_string(qos_profile_created))) + assert qos_profile == qos_profile_created + + +def test_failed_create_qos_profile(qos_profile_client: QoSProfileClient): + qos_profile = create_qos_profile_from_json(qos_profile_data) + with pytest.raises(RpcError) as exc: + qos_profile_created = qos_profile_client.CreateQoSProfile(qos_profile) + assert exc.value.code() == StatusCode.ALREADY_EXISTS + +def test_get_qos_profile(qos_profile_client: QoSProfileClient): + qos_profile = create_qos_profile_from_json(qos_profile_data) + qos_profile_got = qos_profile_client.GetQoSProfile(qos_profile.qos_profile_id) + LOGGER.info('qos_profile_data = {:s}'.format(grpc_message_to_json_string(qos_profile_got))) + assert qos_profile == qos_profile_got + +def test_get_qos_profiles(qos_profile_client: QoSProfileClient): + qos_profile = create_qos_profile_from_json(qos_profile_data) + qos_profiles_got = list(qos_profile_client.GetQoSProfiles(Empty())) + the_qos_profile = [q for q in qos_profiles_got if q.qos_profile_id == qos_profile.qos_profile_id] + LOGGER.info('qos_profile_data = {:s}'.format(grpc_message_to_json_string(qos_profiles_got))) + assert len(the_qos_profile) == 1 + assert qos_profile == the_qos_profile[0] + +def test_update_qos_profile(qos_profile_client: QoSProfileClient): + qos_profile = create_qos_profile_from_json(qos_profile_data) + qos_profile.packetErrorLossRate = 5 + qos_profile_updated = qos_profile_client.UpdateQoSProfile(qos_profile) + LOGGER.info('qos_profile_data = {:s}'.format(grpc_message_to_json_string(qos_profile_updated))) + assert qos_profile_updated.packetErrorLossRate == 5 + +def test_failed_delete_qos_profiles(qos_profile_client: QoSProfileClient): + qos_profile = create_qos_profile_from_json(qos_profile_data) + with pytest.raises(RpcError) as exc: + qos_profiles_deleted = qos_profile_client.DeleteQoSProfile(QoSProfileId(qos_profile_id=Uuid(uuid='f8b1c625-ac01-405c-b1f7-b5ee06e16282'))) + assert exc.value.code() == StatusCode.NOT_FOUND + +def test_delete_qos_profiles(qos_profile_client: QoSProfileClient): + qos_profile = create_qos_profile_from_json(qos_profile_data) + qos_profiles_deleted = qos_profile_client.DeleteQoSProfile(qos_profile.qos_profile_id) + assert qos_profiles_deleted == Empty() diff --git a/src/service/service/ServiceServiceServicerImpl.py b/src/service/service/ServiceServiceServicerImpl.py index fd265c8e05ed068e516cadad260864315ec81d36..992b11cf3edaaed8211cd70a08452cd091cdf19a 100644 --- a/src/service/service/ServiceServiceServicerImpl.py +++ b/src/service/service/ServiceServiceServicerImpl.py @@ -17,7 +17,8 @@ from typing import Optional from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_method from common.method_wrappers.ServiceExceptions import ( AlreadyExistsException, InvalidArgumentException, NotFoundException, NotImplementedException, - OperationFailedException) + OperationFailedException +) from common.proto.context_pb2 import ( Connection, ConstraintActionEnum, Empty, Service, ServiceId, ServiceStatusEnum, ServiceTypeEnum, TopologyId @@ -30,6 +31,9 @@ from common.tools.grpc.Tools import grpc_message_to_json, grpc_message_to_json_s from common.tools.object_factory.Context import json_context_id from common.tools.object_factory.Topology import json_topology_id from common.Constants import DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME +from common.Settings import ( + is_deployed_e2e_orch, is_deployed_optical, is_deployed_te +) from context.client.ContextClient import ContextClient from e2e_orchestrator.client.E2EOrchestratorClient import E2EOrchestratorClient from pathcomp.frontend.client.PathCompClient import PathCompClient @@ -39,8 +43,8 @@ from .service_handler_api.ServiceHandlerFactory import ServiceHandlerFactory from .task_scheduler.TaskScheduler import TasksScheduler from .tools.GeodesicDistance import gps_distance from .tools.OpticalTools import ( - add_lightpath, delete_lightpath, adapt_reply, get_device_name_from_uuid, get_optical_band,refresh_opticalcontroller, - DelFlexLightpath + add_lightpath, delete_lightpath, adapt_reply, get_device_name_from_uuid, + get_optical_band, refresh_opticalcontroller, DelFlexLightpath ) @@ -143,7 +147,7 @@ class ServiceServiceServicerImpl(ServiceServiceServicer): service.service_type = request.service_type # pylint: disable=no-member service.service_status.service_status = ServiceStatusEnum.SERVICESTATUS_PLANNED # pylint: disable=no-member - if service.service_type == ServiceTypeEnum.SERVICETYPE_TE: + if is_deployed_te() and service.service_type == ServiceTypeEnum.SERVICETYPE_TE: # TE service: context_client.SetService(request) @@ -165,7 +169,7 @@ class ServiceServiceServicerImpl(ServiceServiceServicer): str_service_status = ServiceStatusEnum.Name(service_status.service_status) raise Exception(MSG.format(service_key, str_service_status)) - if service.service_type == ServiceTypeEnum.SERVICETYPE_E2E: + if is_deployed_e2e_orch() and service.service_type == ServiceTypeEnum.SERVICETYPE_E2E: # End-to-End service: service_id_with_uuids = context_client.SetService(request) @@ -249,7 +253,7 @@ class ServiceServiceServicerImpl(ServiceServiceServicer): tasks_scheduler = TasksScheduler(self.service_handler_factory) - if service.service_type == ServiceTypeEnum.SERVICETYPE_OPTICAL_CONNECTIVITY: + if is_deployed_optical() and service.service_type == ServiceTypeEnum.SERVICETYPE_OPTICAL_CONNECTIVITY: context_id_x = json_context_id(DEFAULT_CONTEXT_NAME) topology_id_x = json_topology_id( DEFAULT_TOPOLOGY_NAME, context_id_x) @@ -281,7 +285,7 @@ class ServiceServiceServicerImpl(ServiceServiceServicer): # to get the reply form the optical module reply_txt = add_lightpath(src, dst, bitrate, bidir, ob_band) - LOGGER.info('reply_text={:s}'.format(reply_txt)) + # reply with 2 transponders and 2 roadms reply_json = json.loads(reply_txt) optical_band_txt = "" @@ -292,7 +296,7 @@ class ServiceServiceServicerImpl(ServiceServiceServicer): parent_ob = reply_json["parent_opt_band"] LOGGER.debug('Parent optical-band={}'.format(parent_ob)) optical_band_txt = get_optical_band(parent_ob) - LOGGER.info('optical-band details={}'.format(optical_band_txt)) + else: LOGGER.debug('expected optical band not found') else: @@ -301,13 +305,11 @@ class ServiceServiceServicerImpl(ServiceServiceServicer): LOGGER.debug('Using existing optical band') else: LOGGER.debug('Using existing optical band') - + if reply_txt is not None: optical_reply = adapt_reply( devices, _service, reply_json, context_uuid_x, topology_uuid_x, optical_band_txt ) - LOGGER.info('optical_reply={:s}'.format( - grpc_message_to_json_string(optical_reply))) tasks_scheduler.compose_from_pathcompreply( optical_reply, is_delete=False) @@ -343,13 +345,13 @@ class ServiceServiceServicerImpl(ServiceServiceServicer): if service is None: raise Exception('Service({:s}) not found'.format(grpc_message_to_json_string(request))) # pylint: disable=no-member service.service_status.service_status = ServiceStatusEnum.SERVICESTATUS_PENDING_REMOVAL - + if service.service_type == ServiceTypeEnum.SERVICETYPE_OPTICAL_CONNECTIVITY: service.service_status.service_status = ServiceStatusEnum.SERVICESTATUS_ACTIVE - + context_client.SetService(service) - if service.service_type == ServiceTypeEnum.SERVICETYPE_TE: + if is_deployed_te() and service.service_type == ServiceTypeEnum.SERVICETYPE_TE: # TE service te_service_client = TEServiceClient() te_service_client.DeleteLSP(request) @@ -357,12 +359,12 @@ class ServiceServiceServicerImpl(ServiceServiceServicer): return Empty() if service.service_type == ServiceTypeEnum.SERVICETYPE_OPTICAL_CONNECTIVITY: - params={ - "src":None, - "dst":None, - "bitrate":None, - 'ob_id':None, - 'flow_id':None + params = { + "src" : None, + "dst" : None, + "bitrate" : None, + 'ob_id' : None, + 'flow_id' : None } devs = [] @@ -382,30 +384,30 @@ class ServiceServiceServicerImpl(ServiceServiceServicer): bitrate = int(float(constraint.custom.constraint_value)) break - bitrate = int( - float(service.service_constraints[0].custom.constraint_value)) + 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 - LOGGER.info(f"DELETE configuration rules {c_rules_dict}") + ob_id = None + flow_id = None + if "ob_id" in c_rules_dict: - ob_id=c_rules_dict["ob_id"] + 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['bitrate'] = bitrate + params['dst' ] = dst + params['src' ] = src + params['ob_id' ] = ob_id + params['flow_id'] = flow_id + tasks_scheduler = TasksScheduler(self.service_handler_factory) - tasks_scheduler.compose_from_optical_service(service, params=params,is_delete=True ) + tasks_scheduler.compose_from_optical_service(service, params=params, is_delete=True) tasks_scheduler.execute_all() return Empty() diff --git a/src/service/service/__main__.py b/src/service/service/__main__.py index 22b7c721c9b90e5307cfce0648509d5010e10619..d4bbccea4fdb03fa8e8f93d8b9987b8436bb434a 100644 --- a/src/service/service/__main__.py +++ b/src/service/service/__main__.py @@ -12,11 +12,12 @@ # See the License for the specific language governing permissions and # limitations under the License. -import logging, signal, sys, threading , os +import logging, signal, sys, threading from prometheus_client import start_http_server from common.Constants import ServiceNameEnum from common.Settings import ( - ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC, find_environment_variables, get_env_var_name, get_log_level, get_metrics_port, + ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC, + get_env_var_name, get_log_level, get_metrics_port, wait_for_environment_variables ) from .ServiceService import ServiceService @@ -44,21 +45,7 @@ def main(): get_env_var_name(ServiceNameEnum.DEVICE, ENVVAR_SUFIX_SERVICE_PORT_GRPC), get_env_var_name(ServiceNameEnum.PATHCOMP, ENVVAR_SUFIX_SERVICE_HOST ), get_env_var_name(ServiceNameEnum.PATHCOMP, ENVVAR_SUFIX_SERVICE_PORT_GRPC), - get_env_var_name(ServiceNameEnum.OPTICALCONTROLLER, ENVVAR_SUFIX_SERVICE_PORT_GRPC), - get_env_var_name(ServiceNameEnum.OPTICALCONTROLLER, ENVVAR_SUFIX_SERVICE_HOST ), - - # get_env_var_name(ServiceNameEnum.QKD_APP, ENVVAR_SUFIX_SERVICE_HOST ), - # get_env_var_name(ServiceNameEnum.QKD_APP, ENVVAR_SUFIX_SERVICE_PORT_GRPC), ]) - VAR_NAME_OPTICAL_CONTROLLER_HOST = get_env_var_name(ServiceNameEnum.OPTICALCONTROLLER, ENVVAR_SUFIX_SERVICE_HOST) - VAR_NAME_OPTICAL_CONTROLLER_PORT = get_env_var_name(ServiceNameEnum.OPTICALCONTROLLER, ENVVAR_SUFIX_SERVICE_PORT_GRPC) - opticalcontrollers_url = find_environment_variables([ - VAR_NAME_OPTICAL_CONTROLLER_HOST, - VAR_NAME_OPTICAL_CONTROLLER_PORT, -]) - OPTICAL_IP = opticalcontrollers_url.get(VAR_NAME_OPTICAL_CONTROLLER_HOST) - OPTICAL_PORT = opticalcontrollers_url.get(VAR_NAME_OPTICAL_CONTROLLER_PORT) - signal.signal(signal.SIGINT, signal_handler) signal.signal(signal.SIGTERM, signal_handler) diff --git a/src/service/service/service_handler_api/SettingsHandler.py b/src/service/service/service_handler_api/SettingsHandler.py index 97ff3bcde09bf8047b4120cd4402987c52b8411d..24c5b638a35859b144969425d36ddad63a39d611 100644 --- a/src/service/service/service_handler_api/SettingsHandler.py +++ b/src/service/service/service_handler_api/SettingsHandler.py @@ -13,7 +13,6 @@ # limitations under the License. import anytree, json, logging - from typing import Any, List, Optional, Tuple, Union from common.proto.context_pb2 import ConfigActionEnum, ConfigRule, Device, EndPoint, ServiceConfig from common.tools.grpc.Tools import grpc_message_to_json, grpc_message_to_json_string @@ -58,6 +57,11 @@ class SettingsHandler: def get(self, key_or_path : Union[str, List[str]], default : Optional[Any] = None) -> Optional[TreeNode]: return get_subnode(self.__resolver, self.__config, key_or_path, default=default) + def get_service_settings(self) -> Optional[TreeNode]: + service_settings_uri = '/settings' + service_settings = self.get(service_settings_uri) + return service_settings + def get_device_settings(self, device : Device) -> Optional[TreeNode]: device_keys = device.device_id.device_uuid.uuid, device.name @@ -112,7 +116,7 @@ class SettingsHandler: raw_data = SettingsHandler._config_rule_to_raw(config_rule) if raw_data is None: return action, key_or_path, value = raw_data - LOGGER.info(f"update_config_rule action {action} key_or_path:{key_or_path} and value {value}") + if action == ConfigActionEnum.CONFIGACTION_SET: self.set(key_or_path, value) elif action == ConfigActionEnum.CONFIGACTION_DELETE: diff --git a/src/service/service/service_handlers/l3nm_gnmi_openconfig/ConfigRuleComposer.py b/src/service/service/service_handlers/l3nm_gnmi_openconfig/ConfigRuleComposer.py index be314a8c1ee5112dd9d321dd2c1ee1dc6173aca4..777cc4588a6d3a1a3664f736faf03665efa50c79 100644 --- a/src/service/service/service_handlers/l3nm_gnmi_openconfig/ConfigRuleComposer.py +++ b/src/service/service/service_handlers/l3nm_gnmi_openconfig/ConfigRuleComposer.py @@ -12,33 +12,65 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import Dict, List, Optional, Tuple -from common.proto.context_pb2 import Device, EndPoint +import json, logging, netaddr, re +from typing import Dict, List, Optional, Set, Tuple +from common.DeviceTypes import DeviceTypeEnum +from common.proto.context_pb2 import ConfigActionEnum, Device, EndPoint, Service from common.tools.object_factory.ConfigRule import json_config_rule_delete, json_config_rule_set - from service.service.service_handler_api.AnyTreeTools import TreeNode -def _interface(if_name, sif_index, ipv4_address, ipv4_prefix, enabled) -> Tuple[str, Dict]: - str_path = '/interface[{:s}]'.format(if_name) - str_data = {'name': if_name, 'enabled': enabled, 'sub_if_index': sif_index, - 'sub_if_enabled': enabled, 'sub_if_ipv4_enabled': enabled, - 'sub_if_ipv4_address': ipv4_address, 'sub_if_ipv4_prefix': ipv4_prefix} - return str_path, str_data +LOGGER = logging.getLogger(__name__) + +NETWORK_INSTANCE = 'teraflowsdn' + +RE_IF = re.compile(r'^\/interface\[([^\]]+)\]$') +RE_SUBIF = re.compile(r'^\/interface\[([^\]]+)\]\/subinterface\[([^\]]+)\]$') +RE_SR = re.compile(r'^\/network_instance\[([^\]]+)\]\/protocols\[STATIC\]/route\[([^\:]+)\:([^\]]+)\]$') + +def _interface( + interface : str, if_type : Optional[str] = 'l3ipvlan', index : int = 0, vlan_id : Optional[int] = None, + address_ip : Optional[str] = None, address_prefix : Optional[int] = None, mtu : Optional[int] = None, + enabled : bool = True +) -> Tuple[str, Dict]: + path = '/interface[{:s}]/subinterface[{:d}]'.format(interface, index) + data = {'name': interface, 'type': if_type, 'index': index, 'enabled': enabled} + if if_type is not None: data['type'] = if_type + if vlan_id is not None: data['vlan_id'] = vlan_id + if address_ip is not None: data['address_ip'] = address_ip + if address_prefix is not None: data['address_prefix'] = address_prefix + if mtu is not None: data['mtu'] = mtu + return path, data -def _network_instance(ni_name, ni_type) -> Tuple[str, Dict]: - str_path = '/network_instance[{:s}]'.format(ni_name) - str_data = {'name': ni_name, 'type': ni_type} - return str_path, str_data +def _network_instance(ni_name : str, ni_type : str) -> Tuple[str, Dict]: + path = '/network_instance[{:s}]'.format(ni_name) + data = {'name': ni_name, 'type': ni_type} + return path, data -def _network_instance_static_route(ni_name, prefix, next_hop, next_hop_index=0) -> Tuple[str, Dict]: - str_path = '/network_instance[{:s}]/static_route[{:s}]'.format(ni_name, prefix) - str_data = {'name': ni_name, 'prefix': prefix, 'next_hop': next_hop, 'next_hop_index': next_hop_index} - return str_path, str_data +def _network_instance_protocol(ni_name : str, protocol : str) -> Tuple[str, Dict]: + path = '/network_instance[{:s}]/protocols[{:s}]'.format(ni_name, protocol) + data = {'name': ni_name, 'identifier': protocol, 'protocol_name': protocol} + return path, data -def _network_instance_interface(ni_name, if_name, sif_index) -> Tuple[str, Dict]: - str_path = '/network_instance[{:s}]/interface[{:s}.{:d}]'.format(ni_name, if_name, sif_index) - str_data = {'name': ni_name, 'if_name': if_name, 'sif_index': sif_index} - return str_path, str_data +def _network_instance_protocol_static(ni_name : str) -> Tuple[str, Dict]: + return _network_instance_protocol(ni_name, 'STATIC') + +def _network_instance_protocol_static_route( + ni_name : str, prefix : str, next_hop : str, metric : int +) -> Tuple[str, Dict]: + protocol = 'STATIC' + path = '/network_instance[{:s}]/protocols[{:s}]/static_route[{:s}:{:d}]'.format(ni_name, protocol, prefix, metric) + index = 'AUTO_{:d}_{:s}'.format(metric, next_hop.replace('.', '-')) + data = { + 'name': ni_name, 'identifier': protocol, 'protocol_name': protocol, + 'prefix': prefix, 'index': index, 'next_hop': next_hop, 'metric': metric + } + return path, data + +def _network_instance_interface(ni_name : str, interface : str, sub_interface_index : int) -> Tuple[str, Dict]: + sub_interface_name = '{:s}.{:d}'.format(interface, sub_interface_index) + path = '/network_instance[{:s}]/interface[{:s}]'.format(ni_name, sub_interface_name) + data = {'name': ni_name, 'id': sub_interface_name, 'interface': interface, 'subinterface': sub_interface_index} + return path, data class EndpointComposer: def __init__(self, endpoint_uuid : str) -> None: @@ -46,74 +78,201 @@ class EndpointComposer: self.objekt : Optional[EndPoint] = None self.sub_interface_index = 0 self.ipv4_address = None - self.ipv4_prefix = None + self.ipv4_prefix_len = None - def configure(self, endpoint_obj : EndPoint, settings : Optional[TreeNode]) -> None: - self.objekt = endpoint_obj + def configure(self, endpoint_obj : Optional[EndPoint], settings : Optional[TreeNode]) -> None: + if endpoint_obj is not None: + self.objekt = endpoint_obj if settings is None: return json_settings : Dict = settings.value - self.ipv4_address = json_settings['ipv4_address'] - self.ipv4_prefix = json_settings['ipv4_prefix'] - self.sub_interface_index = json_settings['sub_interface_index'] + + if 'address_ip' in json_settings: + self.ipv4_address = json_settings['address_ip'] + elif 'ip_address' in json_settings: + self.ipv4_address = json_settings['ip_address'] + else: + MSG = 'IP Address not found. Tried: address_ip and ip_address. endpoint_obj={:s} settings={:s}' + LOGGER.warning(MSG.format(str(endpoint_obj), str(settings))) + + if 'address_prefix' in json_settings: + self.ipv4_prefix_len = json_settings['address_prefix'] + elif 'prefix_length' in json_settings: + self.ipv4_prefix_len = json_settings['prefix_length'] + else: + MSG = 'IP Address Prefix not found. Tried: address_prefix and prefix_length. endpoint_obj={:s} settings={:s}' + LOGGER.warning(MSG.format(str(endpoint_obj), str(settings))) + + self.sub_interface_index = json_settings.get('index', 0) def get_config_rules(self, network_instance_name : str, delete : bool = False) -> List[Dict]: + if self.ipv4_address is None: return [] + if self.ipv4_prefix_len is None: return [] json_config_rule = json_config_rule_delete if delete else json_config_rule_set - return [ - json_config_rule(*_interface( - self.objekt.name, self.sub_interface_index, self.ipv4_address, self.ipv4_prefix, True - )), + config_rules = [ json_config_rule(*_network_instance_interface( network_instance_name, self.objekt.name, self.sub_interface_index )), ] + if not delete: + config_rules.extend([ + json_config_rule(*_interface( + self.objekt.name, index=self.sub_interface_index, address_ip=self.ipv4_address, + address_prefix=self.ipv4_prefix_len, enabled=True + )), + ]) + return config_rules + + def dump(self) -> Dict: + return { + 'index' : self.sub_interface_index, + 'address_ip' : self.ipv4_address, + 'address_prefix': self.ipv4_prefix_len, + } class DeviceComposer: def __init__(self, device_uuid : str) -> None: self.uuid = device_uuid self.objekt : Optional[Device] = None - self.endpoints : Dict[str, EndpointComposer] = dict() - self.static_routes : Dict[str, str] = dict() - + self.aliases : Dict[str, str] = dict() # endpoint_name => endpoint_uuid + self.endpoints : Dict[str, EndpointComposer] = dict() # endpoint_uuid => EndpointComposer + self.connected : Set[str] = set() + self.static_routes : Dict[str, Dict[int, str]] = dict() # {prefix => {metric => next_hop}} + + def set_endpoint_alias(self, endpoint_name : str, endpoint_uuid : str) -> None: + self.aliases[endpoint_name] = endpoint_uuid + def get_endpoint(self, endpoint_uuid : str) -> EndpointComposer: + endpoint_uuid = self.aliases.get(endpoint_uuid, endpoint_uuid) if endpoint_uuid not in self.endpoints: self.endpoints[endpoint_uuid] = EndpointComposer(endpoint_uuid) return self.endpoints[endpoint_uuid] def configure(self, device_obj : Device, settings : Optional[TreeNode]) -> None: self.objekt = device_obj + for endpoint_obj in device_obj.device_endpoints: + endpoint_uuid = endpoint_obj.endpoint_id.endpoint_uuid.uuid + self.set_endpoint_alias(endpoint_obj.name, endpoint_uuid) + self.get_endpoint(endpoint_obj.name).configure(endpoint_obj, None) + + # Find management interfaces + mgmt_ifaces = set() + for config_rule in device_obj.device_config.config_rules: + if config_rule.action != ConfigActionEnum.CONFIGACTION_SET: continue + if config_rule.WhichOneof('config_rule') != 'custom': continue + config_rule_custom = config_rule.custom + match = RE_IF.match(config_rule_custom.resource_key) + if match is None: continue + if_name = match.groups()[0] + resource_value = json.loads(config_rule_custom.resource_value) + management = resource_value.get('management', False) + if management: mgmt_ifaces.add(if_name) + + # Find data plane interfaces + for config_rule in device_obj.device_config.config_rules: + if config_rule.action != ConfigActionEnum.CONFIGACTION_SET: continue + if config_rule.WhichOneof('config_rule') != 'custom': continue + config_rule_custom = config_rule.custom + + match = RE_SUBIF.match(config_rule_custom.resource_key) + if match is not None: + if_name, subif_index = match.groups() + if if_name in mgmt_ifaces: continue + resource_value = json.loads(config_rule_custom.resource_value) + if 'address_ip' not in resource_value: continue + if 'address_prefix' not in resource_value: continue + ipv4_network = str(resource_value['address_ip']) + ipv4_prefix_len = int(resource_value['address_prefix']) + endpoint = self.get_endpoint(if_name) + endpoint.ipv4_address = ipv4_network + endpoint.ipv4_prefix_len = ipv4_prefix_len + endpoint.sub_interface_index = int(subif_index) + endpoint_ip_network = netaddr.IPNetwork('{:s}/{:d}'.format(ipv4_network, ipv4_prefix_len)) + self.connected.add(str(endpoint_ip_network.cidr)) + + match = RE_SR.match(config_rule_custom.resource_key) + if match is not None: + ni_name, prefix, metric = match.groups() + if ni_name != NETWORK_INSTANCE: continue + resource_value : Dict = json.loads(config_rule_custom.resource_value) + next_hop = resource_value['next_hop'] + self.static_routes.setdefault(prefix, dict())[metric] = next_hop + if settings is None: return json_settings : Dict = settings.value - static_routes = json_settings.get('static_routes', []) + static_routes : List[Dict] = json_settings.get('static_routes', []) for static_route in static_routes: prefix = static_route['prefix'] next_hop = static_route['next_hop'] - self.static_routes[prefix] = next_hop + metric = static_route.get('metric', 0) + self.static_routes.setdefault(prefix, dict())[metric] = next_hop def get_config_rules(self, network_instance_name : str, delete : bool = False) -> List[Dict]: + SELECTED_DEVICES = {DeviceTypeEnum.PACKET_ROUTER.value, DeviceTypeEnum.EMULATED_PACKET_ROUTER.value} + if self.objekt.device_type not in SELECTED_DEVICES: return [] + json_config_rule = json_config_rule_delete if delete else json_config_rule_set config_rules = [ json_config_rule(*_network_instance(network_instance_name, 'L3VRF')) ] for endpoint in self.endpoints.values(): config_rules.extend(endpoint.get_config_rules(network_instance_name, delete=delete)) - for prefix, next_hop in self.static_routes.items(): + if len(self.static_routes) > 0: config_rules.append( - json_config_rule(*_network_instance_static_route(network_instance_name, prefix, next_hop)) + json_config_rule(*_network_instance_protocol_static(network_instance_name)) ) + for prefix, metric_next_hop in self.static_routes.items(): + for metric, next_hop in metric_next_hop.items(): + config_rules.append( + json_config_rule(*_network_instance_protocol_static_route( + network_instance_name, prefix, next_hop, metric + )) + ) if delete: config_rules = list(reversed(config_rules)) return config_rules + def dump(self) -> Dict: + return { + 'endpoints' : { + endpoint_uuid : endpoint.dump() + for endpoint_uuid, endpoint in self.endpoints.items() + }, + 'connected' : list(self.connected), + 'static_routes' : self.static_routes, + } + class ConfigRuleComposer: def __init__(self) -> None: - self.devices : Dict[str, DeviceComposer] = dict() + self.objekt : Optional[Service] = None + self.aliases : Dict[str, str] = dict() # device_name => device_uuid + self.devices : Dict[str, DeviceComposer] = dict() # device_uuid => DeviceComposer + + def set_device_alias(self, device_name : str, device_uuid : str) -> None: + self.aliases[device_name] = device_uuid def get_device(self, device_uuid : str) -> DeviceComposer: + device_uuid = self.aliases.get(device_uuid, device_uuid) if device_uuid not in self.devices: self.devices[device_uuid] = DeviceComposer(device_uuid) return self.devices[device_uuid] - def get_config_rules(self, network_instance_name : str, delete : bool = False) -> Dict[str, List[Dict]]: + def configure(self, service_obj : Service, settings : Optional[TreeNode]) -> None: + self.objekt = service_obj + if settings is None: return + #json_settings : Dict = settings.value + # For future use + + def get_config_rules( + self, network_instance_name : str = NETWORK_INSTANCE, delete : bool = False + ) -> Dict[str, List[Dict]]: return { device_uuid : device.get_config_rules(network_instance_name, delete=delete) for device_uuid, device in self.devices.items() } + + def dump(self) -> Dict: + return { + 'devices' : { + device_uuid : device.dump() + for device_uuid, device in self.devices.items() + } + } diff --git a/src/service/service/service_handlers/l3nm_gnmi_openconfig/L3NMGnmiOpenConfigServiceHandler.py b/src/service/service/service_handlers/l3nm_gnmi_openconfig/L3NMGnmiOpenConfigServiceHandler.py index 5856b5f61893174a92ce02a303ae9ad30be16005..88bb5655b872dfce90988686e7d8bc242d866bf0 100644 --- a/src/service/service/service_handlers/l3nm_gnmi_openconfig/L3NMGnmiOpenConfigServiceHandler.py +++ b/src/service/service/service_handlers/l3nm_gnmi_openconfig/L3NMGnmiOpenConfigServiceHandler.py @@ -15,14 +15,17 @@ import json, logging from typing import Any, Dict, List, Optional, Tuple, Union from common.method_wrappers.Decorator import MetricsPool, metered_subclass_method -from common.proto.context_pb2 import ConfigRule, DeviceId, Service +from common.proto.context_pb2 import ConfigRule, ConnectionId, DeviceId, Service +from common.tools.object_factory.Connection import json_connection_id from common.tools.object_factory.Device import json_device_id from common.type_checkers.Checkers import chk_type -from service.service.service_handler_api.Tools import get_device_endpoint_uuids, get_endpoint_matching from service.service.service_handler_api._ServiceHandler import _ServiceHandler from service.service.service_handler_api.SettingsHandler import SettingsHandler +from service.service.service_handler_api.Tools import get_device_endpoint_uuids, get_endpoint_matching from service.service.task_scheduler.TaskExecutor import TaskExecutor +from service.service.tools.EndpointIdFormatters import endpointids_to_raw from .ConfigRuleComposer import ConfigRuleComposer +from .StaticRouteGenerator import StaticRouteGenerator LOGGER = logging.getLogger(__name__) @@ -35,24 +38,35 @@ class L3NMGnmiOpenConfigServiceHandler(_ServiceHandler): self.__service = service self.__task_executor = task_executor self.__settings_handler = SettingsHandler(service.service_config, **settings) - self.__composer = ConfigRuleComposer() - self.__endpoint_map : Dict[Tuple[str, str], str] = dict() + self.__config_rule_composer = ConfigRuleComposer() + self.__static_route_generator = StaticRouteGenerator(self.__config_rule_composer) + self.__endpoint_map : Dict[Tuple[str, str], Tuple[str, str]] = dict() def _compose_config_rules(self, endpoints : List[Tuple[str, str, Optional[str]]]) -> None: + if len(endpoints) % 2 != 0: raise Exception('Number of endpoints should be even') + + service_settings = self.__settings_handler.get_service_settings() + self.__config_rule_composer.configure(self.__service, service_settings) + for endpoint in endpoints: device_uuid, endpoint_uuid = get_device_endpoint_uuids(endpoint) device_obj = self.__task_executor.get_device(DeviceId(**json_device_id(device_uuid))) device_settings = self.__settings_handler.get_device_settings(device_obj) - _device = self.__composer.get_device(device_obj.name) + self.__config_rule_composer.set_device_alias(device_obj.name, device_uuid) + _device = self.__config_rule_composer.get_device(device_obj.name) _device.configure(device_obj, device_settings) endpoint_obj = get_endpoint_matching(device_obj, endpoint_uuid) endpoint_settings = self.__settings_handler.get_endpoint_settings(device_obj, endpoint_obj) + _device.set_endpoint_alias(endpoint_obj.name, endpoint_uuid) _endpoint = _device.get_endpoint(endpoint_obj.name) _endpoint.configure(endpoint_obj, endpoint_settings) - self.__endpoint_map[(device_uuid, endpoint_uuid)] = device_obj.name + self.__endpoint_map[(device_uuid, endpoint_uuid)] = (device_obj.name, endpoint_obj.name) + + self.__static_route_generator.compose(endpoints) + LOGGER.debug('config_rule_composer = {:s}'.format(json.dumps(self.__config_rule_composer.dump()))) def _do_configurations( self, config_rules_per_device : Dict[str, List[Dict]], endpoints : List[Tuple[str, str, Optional[str]]], @@ -62,7 +76,7 @@ class L3NMGnmiOpenConfigServiceHandler(_ServiceHandler): results_per_device = dict() for device_name,json_config_rules in config_rules_per_device.items(): try: - device_obj = self.__composer.get_device(device_name).objekt + device_obj = self.__config_rule_composer.get_device(device_name).objekt if len(json_config_rules) == 0: continue del device_obj.device_config.config_rules[:] for json_config_rule in json_config_rules: @@ -78,7 +92,8 @@ class L3NMGnmiOpenConfigServiceHandler(_ServiceHandler): results = [] for endpoint in endpoints: device_uuid, endpoint_uuid = get_device_endpoint_uuids(endpoint) - device_name = self.__endpoint_map[(device_uuid, endpoint_uuid)] + device_name, _ = self.__endpoint_map[(device_uuid, endpoint_uuid)] + if device_name not in results_per_device: continue results.append(results_per_device[device_name]) return results @@ -88,12 +103,16 @@ class L3NMGnmiOpenConfigServiceHandler(_ServiceHandler): ) -> List[Union[bool, Exception]]: chk_type('endpoints', endpoints, list) if len(endpoints) == 0: return [] - service_uuid = self.__service.service_id.service_uuid.uuid - #settings = self.__settings_handler.get('/settings') - self._compose_config_rules(endpoints) - network_instance_name = service_uuid.split('-')[0] - config_rules_per_device = self.__composer.get_config_rules(network_instance_name, delete=False) + #service_uuid = self.__service.service_id.service_uuid.uuid + connection = self.__task_executor.get_connection(ConnectionId(**json_connection_id(connection_uuid))) + connection_endpoint_ids = endpointids_to_raw(connection.path_hops_endpoint_ids) + self._compose_config_rules(connection_endpoint_ids) + #network_instance_name = service_uuid.split('-')[0] + #config_rules_per_device = self.__config_rule_composer.get_config_rules(network_instance_name, delete=False) + config_rules_per_device = self.__config_rule_composer.get_config_rules(delete=False) + LOGGER.debug('config_rules_per_device={:s}'.format(str(config_rules_per_device))) results = self._do_configurations(config_rules_per_device, endpoints) + LOGGER.debug('results={:s}'.format(str(results))) return results @metered_subclass_method(METRICS_POOL) @@ -102,12 +121,16 @@ class L3NMGnmiOpenConfigServiceHandler(_ServiceHandler): ) -> List[Union[bool, Exception]]: chk_type('endpoints', endpoints, list) if len(endpoints) == 0: return [] - service_uuid = self.__service.service_id.service_uuid.uuid - #settings = self.__settings_handler.get('/settings') - self._compose_config_rules(endpoints) - network_instance_name = service_uuid.split('-')[0] - config_rules_per_device = self.__composer.get_config_rules(network_instance_name, delete=True) + #service_uuid = self.__service.service_id.service_uuid.uuid + connection = self.__task_executor.get_connection(ConnectionId(**json_connection_id(connection_uuid))) + connection_endpoint_ids = endpointids_to_raw(connection.path_hops_endpoint_ids) + self._compose_config_rules(connection_endpoint_ids) + #network_instance_name = service_uuid.split('-')[0] + #config_rules_per_device = self.__config_rule_composer.get_config_rules(network_instance_name, delete=True) + config_rules_per_device = self.__config_rule_composer.get_config_rules(delete=True) + LOGGER.debug('config_rules_per_device={:s}'.format(str(config_rules_per_device))) results = self._do_configurations(config_rules_per_device, endpoints, delete=True) + LOGGER.debug('results={:s}'.format(str(results))) return results @metered_subclass_method(METRICS_POOL) diff --git a/src/service/service/service_handlers/l3nm_gnmi_openconfig/StaticRouteGenerator.py b/src/service/service/service_handlers/l3nm_gnmi_openconfig/StaticRouteGenerator.py new file mode 100644 index 0000000000000000000000000000000000000000..a16e4d5b1c46da600b9dc078ca9f6a74c7eaa187 --- /dev/null +++ b/src/service/service/service_handlers/l3nm_gnmi_openconfig/StaticRouteGenerator.py @@ -0,0 +1,197 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import json, logging, netaddr, sys +from typing import List, Optional, Tuple +from .ConfigRuleComposer import ConfigRuleComposer + +LOGGER = logging.getLogger(__name__) + +# Used to infer routing networks for adjacent ports when there is no hint in device/endpoint settings +ROOT_NEIGHBOR_ROUTING_NETWORK = netaddr.IPNetwork('10.254.254.0/16') +NEIGHBOR_ROUTING_NETWORKS_PREFIX_LEN = 30 +NEIGHBOR_ROUTING_NETWORKS = set(ROOT_NEIGHBOR_ROUTING_NETWORK.subnet(NEIGHBOR_ROUTING_NETWORKS_PREFIX_LEN)) + +def _generate_neighbor_addresses() -> Tuple[netaddr.IPAddress, netaddr.IPAddress, int]: + ip_network = NEIGHBOR_ROUTING_NETWORKS.pop() + ip_addresses = list(ip_network.iter_hosts()) + ip_addresses.append(NEIGHBOR_ROUTING_NETWORKS_PREFIX_LEN) + return ip_addresses + +def _compute_gateway(ip_network : netaddr.IPNetwork, gateway_host=1) -> netaddr.IPAddress: + return netaddr.IPAddress(ip_network.cidr.first + gateway_host) + +def _compose_ipv4_network(ipv4_network, ipv4_prefix_len) -> netaddr.IPNetwork: + return netaddr.IPNetwork('{:s}/{:d}'.format(str(ipv4_network), int(ipv4_prefix_len))) + +class StaticRouteGenerator: + def __init__(self, config_rule_composer : ConfigRuleComposer) -> None: + self._config_rule_composer = config_rule_composer + + def compose(self, connection_hop_list : List[Tuple[str, str, Optional[str]]]) -> None: + link_endpoints = self._compute_link_endpoints(connection_hop_list) + LOGGER.debug('link_endpoints = {:s}'.format(str(link_endpoints))) + + self._compute_link_addresses(link_endpoints) + LOGGER.debug('config_rule_composer = {:s}'.format(json.dumps(self._config_rule_composer.dump()))) + + self._discover_connected_networks(connection_hop_list) + LOGGER.debug('config_rule_composer = {:s}'.format(json.dumps(self._config_rule_composer.dump()))) + + # Compute and propagate static routes forward (service_endpoint_a => service_endpoint_b) + self._compute_static_routes(link_endpoints) + + # Compute and propagate static routes backward (service_endpoint_b => service_endpoint_a) + reversed_endpoints = list(reversed(connection_hop_list)) + reversed_link_endpoints = self._compute_link_endpoints(reversed_endpoints) + LOGGER.debug('reversed_link_endpoints = {:s}'.format(str(reversed_link_endpoints))) + self._compute_static_routes(reversed_link_endpoints) + + LOGGER.debug('config_rule_composer = {:s}'.format(json.dumps(self._config_rule_composer.dump()))) + + def _compute_link_endpoints( + self, connection_hop_list : List[Tuple[str, str, Optional[str]]] + ) -> List[Tuple[Tuple[str, str, Optional[str]], Tuple[str, str, Optional[str]]]]: + num_connection_hops = len(connection_hop_list) + if num_connection_hops % 2 != 0: raise Exception('Number of connection hops must be even') + if num_connection_hops < 4: raise Exception('Number of connection hops must be >= 4') + + # Skip service endpoints (first and last) + it_connection_hops = iter(connection_hop_list[1:-1]) + return list(zip(it_connection_hops, it_connection_hops)) + + def _compute_link_addresses( + self, link_endpoints_list : List[Tuple[Tuple[str, str, Optional[str]], Tuple[str, str, Optional[str]]]] + ) -> None: + for link_endpoints in link_endpoints_list: + device_endpoint_a, device_endpoint_b = link_endpoints + + device_uuid_a, endpoint_uuid_a = device_endpoint_a[0:2] + endpoint_a = self._config_rule_composer.get_device(device_uuid_a).get_endpoint(endpoint_uuid_a) + + device_uuid_b, endpoint_uuid_b = device_endpoint_b[0:2] + endpoint_b = self._config_rule_composer.get_device(device_uuid_b).get_endpoint(endpoint_uuid_b) + + if endpoint_a.ipv4_address is None and endpoint_b.ipv4_address is None: + ip_endpoint_a, ip_endpoint_b, prefix_len = _generate_neighbor_addresses() + endpoint_a.ipv4_address = str(ip_endpoint_a) + endpoint_a.ipv4_prefix_len = prefix_len + endpoint_b.ipv4_address = str(ip_endpoint_b) + endpoint_b.ipv4_prefix_len = prefix_len + elif endpoint_a.ipv4_address is not None and endpoint_b.ipv4_address is None: + prefix_len = endpoint_a.ipv4_prefix_len + ip_network_a = _compose_ipv4_network(endpoint_a.ipv4_address, prefix_len) + if prefix_len > 30: + MSG = 'Unsupported prefix_len for {:s}: {:s}' + raise Exception(MSG.format(str(endpoint_a), str(prefix_len))) + ip_endpoint_b = _compute_gateway(ip_network_a, gateway_host=1) + if ip_endpoint_b == ip_network_a.ip: + ip_endpoint_b = _compute_gateway(ip_network_a, gateway_host=2) + endpoint_b.ipv4_address = str(ip_endpoint_b) + endpoint_b.ipv4_prefix_len = prefix_len + elif endpoint_a.ipv4_address is None and endpoint_b.ipv4_address is not None: + prefix_len = endpoint_b.ipv4_prefix_len + ip_network_b = _compose_ipv4_network(endpoint_b.ipv4_address, prefix_len) + if prefix_len > 30: + MSG = 'Unsupported prefix_len for {:s}: {:s}' + raise Exception(MSG.format(str(endpoint_b), str(prefix_len))) + ip_endpoint_a = _compute_gateway(ip_network_b, gateway_host=1) + if ip_endpoint_a == ip_network_b.ip: + ip_endpoint_a = _compute_gateway(ip_network_b, gateway_host=2) + endpoint_a.ipv4_address = str(ip_endpoint_a) + endpoint_a.ipv4_prefix_len = prefix_len + elif endpoint_a.ipv4_address is not None and endpoint_b.ipv4_address is not None: + ip_network_a = _compose_ipv4_network(endpoint_a.ipv4_address, endpoint_a.ipv4_prefix_len) + ip_network_b = _compose_ipv4_network(endpoint_b.ipv4_address, endpoint_b.ipv4_prefix_len) + if ip_network_a.cidr != ip_network_b.cidr: + MSG = 'Incompatible CIDRs: endpoint_a({:s})=>{:s} endpoint_b({:s})=>{:s}' + raise Exception(MSG.format(str(endpoint_a), str(ip_network_a), str(endpoint_b), str(ip_network_b))) + if ip_network_a.ip == ip_network_b.ip: + MSG = 'Duplicated IP: endpoint_a({:s})=>{:s} endpoint_b({:s})=>{:s}' + raise Exception(MSG.format(str(endpoint_a), str(ip_network_a), str(endpoint_b), str(ip_network_b))) + + def _discover_connected_networks(self, connection_hop_list : List[Tuple[str, str, Optional[str]]]) -> None: + for connection_hop in connection_hop_list: + device_uuid, endpoint_uuid = connection_hop[0:2] + device = self._config_rule_composer.get_device(device_uuid) + endpoint = device.get_endpoint(endpoint_uuid) + + if endpoint.ipv4_address is None: continue + ip_network = _compose_ipv4_network(endpoint.ipv4_address, endpoint.ipv4_prefix_len) + + device.connected.add(str(ip_network.cidr)) + + def _compute_static_routes( + self, link_endpoints_list : List[Tuple[Tuple[str, str, Optional[str]], Tuple[str, str, Optional[str]]]] + ) -> None: + for link_endpoints in link_endpoints_list: + device_endpoint_a, device_endpoint_b = link_endpoints + + device_uuid_a, endpoint_uuid_a = device_endpoint_a[0:2] + device_a = self._config_rule_composer.get_device(device_uuid_a) + endpoint_a = device_a.get_endpoint(endpoint_uuid_a) + + device_uuid_b, endpoint_uuid_b = device_endpoint_b[0:2] + device_b = self._config_rule_composer.get_device(device_uuid_b) + endpoint_b = device_b.get_endpoint(endpoint_uuid_b) + + # Compute static routes from networks connected in device_a + for ip_network_a in device_a.connected: + if ip_network_a in device_b.connected: continue + if ip_network_a in device_b.static_routes: continue + if ip_network_a in ROOT_NEIGHBOR_ROUTING_NETWORK: continue + endpoint_a_ip_network = _compose_ipv4_network(endpoint_a.ipv4_address, endpoint_a.ipv4_prefix_len) + next_hop = str(endpoint_a_ip_network.ip) + metric = 1 + device_b.static_routes.setdefault(ip_network_a, dict())[metric] = next_hop + + # Compute static routes from networks connected in device_b + for ip_network_b in device_b.connected: + if ip_network_b in device_a.connected: continue + if ip_network_b in device_a.static_routes: continue + if ip_network_b in ROOT_NEIGHBOR_ROUTING_NETWORK: continue + endpoint_b_ip_network = _compose_ipv4_network(endpoint_b.ipv4_address, endpoint_b.ipv4_prefix_len) + next_hop = str(endpoint_b_ip_network.ip) + metric = 1 + device_a.static_routes.setdefault(ip_network_b, dict())[metric] = next_hop + + # Propagate static routes from networks connected in device_a + for ip_network_a, metric_next_hop in device_a.static_routes.items(): + if ip_network_a in device_b.connected: continue + if ip_network_a in ROOT_NEIGHBOR_ROUTING_NETWORK: continue + endpoint_a_ip_network = _compose_ipv4_network(endpoint_a.ipv4_address, endpoint_a.ipv4_prefix_len) + if ip_network_a in device_b.static_routes: + current_metric = min(device_b.static_routes[ip_network_a].keys()) + else: + current_metric = int(sys.float_info.max) + for metric, next_hop in metric_next_hop.items(): + new_metric = metric + 1 + if new_metric >= current_metric: continue + next_hop_a = str(endpoint_a_ip_network.ip) + device_b.static_routes.setdefault(ip_network_a, dict())[metric] = next_hop_a + + # Propagate static routes from networks connected in device_b + for ip_network_b in device_b.static_routes.keys(): + if ip_network_b in device_a.connected: continue + if ip_network_b in ROOT_NEIGHBOR_ROUTING_NETWORK: continue + endpoint_b_ip_network = _compose_ipv4_network(endpoint_b.ipv4_address, endpoint_b.ipv4_prefix_len) + if ip_network_b in device_a.static_routes: + current_metric = min(device_a.static_routes[ip_network_b].keys()) + else: + current_metric = int(sys.float_info.max) + for metric, next_hop in metric_next_hop.items(): + new_metric = metric + 1 + if new_metric >= current_metric: continue + next_hop_b = str(endpoint_b_ip_network.ip) + device_a.static_routes.setdefault(ip_network_b, dict())[metric] = next_hop_b diff --git a/src/service/service/service_handlers/oc/ConfigRules.py b/src/service/service/service_handlers/oc/ConfigRules.py deleted file mode 100644 index 44245705ecdb48d33c9152328a352d736cc3dd27..0000000000000000000000000000000000000000 --- a/src/service/service/service_handlers/oc/ConfigRules.py +++ /dev/null @@ -1,255 +0,0 @@ -# Copyright 2022-2024 ETSI OSG/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. - -from typing import Dict, List -from common.tools.object_factory.ConfigRule import json_config_rule_delete, json_config_rule_set -from service.service.service_handler_api.AnyTreeTools import TreeNode - -def setup_config_rules( - service_uuid : str, connection_uuid : str, device_uuid : str, endpoint_uuid : str, endpoint_name : str, - service_settings : TreeNode, endpoint_settings : TreeNode -) -> List[Dict]: - - if service_settings is None: return [] - if endpoint_settings is None: return [] - - json_settings : Dict = service_settings.value - json_endpoint_settings : Dict = endpoint_settings.value - - service_short_uuid = service_uuid.split('-')[-1] - network_instance_name = '{:s}-NetInst'.format(service_short_uuid) - network_interface_desc = '{:s}-NetIf'.format(service_uuid) - network_subinterface_desc = '{:s}-NetSubIf'.format(service_uuid) - - mtu = json_settings.get('mtu', 1450 ) # 1512 - #address_families = json_settings.get('address_families', [] ) # ['IPV4'] - bgp_as = json_settings.get('bgp_as', 0 ) # 65000 - bgp_route_target = json_settings.get('bgp_route_target', '0:0') # 65000:333 - - #router_id = json_endpoint_settings.get('router_id', '0.0.0.0') # '10.95.0.10' - route_distinguisher = json_endpoint_settings.get('route_distinguisher', '0:0' ) # '60001:801' - sub_interface_index = json_endpoint_settings.get('sub_interface_index', 0 ) # 1 - vlan_id = json_endpoint_settings.get('vlan_id', 1 ) # 400 - address_ip = json_endpoint_settings.get('address_ip', '0.0.0.0') # '2.2.2.1' - address_prefix = json_endpoint_settings.get('address_prefix', 24 ) # 30 - if_subif_name = '{:s}.{:d}'.format(endpoint_name, vlan_id) - - json_config_rules = [ - json_config_rule_set( - '/network_instance[{:s}]'.format(network_instance_name), { - 'name': network_instance_name, 'description': network_interface_desc, 'type': 'L3VRF', - 'route_distinguisher': route_distinguisher, - #'router_id': router_id, 'address_families': address_families, - }), - json_config_rule_set( - '/interface[{:s}]'.format(endpoint_name), { - 'name': endpoint_name, 'description': network_interface_desc, 'mtu': mtu, - }), - json_config_rule_set( - '/interface[{:s}]/subinterface[{:d}]'.format(endpoint_name, sub_interface_index), { - 'name': endpoint_name, 'index': sub_interface_index, - 'description': network_subinterface_desc, 'vlan_id': vlan_id, - 'address_ip': address_ip, 'address_prefix': address_prefix, - }), - json_config_rule_set( - '/network_instance[{:s}]/interface[{:s}]'.format(network_instance_name, if_subif_name), { - 'name': network_instance_name, 'id': if_subif_name, 'interface': endpoint_name, - 'subinterface': sub_interface_index, - }), - json_config_rule_set( - '/network_instance[{:s}]/protocols[BGP]'.format(network_instance_name), { - 'name': network_instance_name, 'identifier': 'BGP', 'protocol_name': 'BGP', 'as': bgp_as, - }), - json_config_rule_set( - '/network_instance[{:s}]/table_connections[STATIC][BGP][IPV4]'.format(network_instance_name), { - 'name': network_instance_name, 'src_protocol': 'STATIC', 'dst_protocol': 'BGP', - 'address_family': 'IPV4', #'default_import_policy': 'REJECT_ROUTE', - }), - json_config_rule_set( - '/network_instance[{:s}]/table_connections[DIRECTLY_CONNECTED][BGP][IPV4]'.format( - network_instance_name), { - 'name': network_instance_name, 'src_protocol': 'DIRECTLY_CONNECTED', 'dst_protocol': 'BGP', - 'address_family': 'IPV4', #'default_import_policy': 'REJECT_ROUTE', - }), - json_config_rule_set( - '/routing_policy/bgp_defined_set[{:s}_rt_import]'.format(network_instance_name), { - 'ext_community_set_name': '{:s}_rt_import'.format(network_instance_name), - }), - json_config_rule_set( - '/routing_policy/bgp_defined_set[{:s}_rt_import][route-target:{:s}]'.format( - network_instance_name, bgp_route_target), { - 'ext_community_set_name': '{:s}_rt_import'.format(network_instance_name), - 'ext_community_member' : 'route-target:{:s}'.format(bgp_route_target), - }), - json_config_rule_set( - '/routing_policy/policy_definition[{:s}_import]'.format(network_instance_name), { - 'policy_name': '{:s}_import'.format(network_instance_name), - }), - json_config_rule_set( - '/routing_policy/policy_definition[{:s}_import]/statement[{:s}]'.format( - network_instance_name, '3'), { - 'policy_name': '{:s}_import'.format(network_instance_name), 'statement_name': '3', - 'ext_community_set_name': '{:s}_rt_import'.format(network_instance_name), - 'match_set_options': 'ANY', 'policy_result': 'ACCEPT_ROUTE', - }), - json_config_rule_set( - # pylint: disable=duplicate-string-formatting-argument - '/network_instance[{:s}]/inter_instance_policies[{:s}_import]'.format( - network_instance_name, network_instance_name), { - 'name': network_instance_name, 'import_policy': '{:s}_import'.format(network_instance_name), - }), - json_config_rule_set( - '/routing_policy/bgp_defined_set[{:s}_rt_export]'.format(network_instance_name), { - 'ext_community_set_name': '{:s}_rt_export'.format(network_instance_name), - }), - json_config_rule_set( - '/routing_policy/bgp_defined_set[{:s}_rt_export][route-target:{:s}]'.format( - network_instance_name, bgp_route_target), { - 'ext_community_set_name': '{:s}_rt_export'.format(network_instance_name), - 'ext_community_member' : 'route-target:{:s}'.format(bgp_route_target), - }), - json_config_rule_set( - '/routing_policy/policy_definition[{:s}_export]'.format(network_instance_name), { - 'policy_name': '{:s}_export'.format(network_instance_name), - }), - json_config_rule_set( - '/routing_policy/policy_definition[{:s}_export]/statement[{:s}]'.format( - network_instance_name, '3'), { - 'policy_name': '{:s}_export'.format(network_instance_name), 'statement_name': '3', - 'ext_community_set_name': '{:s}_rt_export'.format(network_instance_name), - 'match_set_options': 'ANY', 'policy_result': 'ACCEPT_ROUTE', - }), - json_config_rule_set( - # pylint: disable=duplicate-string-formatting-argument - '/network_instance[{:s}]/inter_instance_policies[{:s}_export]'.format( - network_instance_name, network_instance_name), { - 'name': network_instance_name, 'export_policy': '{:s}_export'.format(network_instance_name), - }), - ] - - return json_config_rules - -def teardown_config_rules( - service_uuid : str, connection_uuid : str, device_uuid : str, endpoint_uuid : str, endpoint_name : str, - service_settings : TreeNode, endpoint_settings : TreeNode -) -> List[Dict]: - - if service_settings is None: return [] - if endpoint_settings is None: return [] - - json_settings : Dict = service_settings.value - json_endpoint_settings : Dict = endpoint_settings.value - - #mtu = json_settings.get('mtu', 1450 ) # 1512 - #address_families = json_settings.get('address_families', [] ) # ['IPV4'] - #bgp_as = json_settings.get('bgp_as', 0 ) # 65000 - bgp_route_target = json_settings.get('bgp_route_target', '0:0') # 65000:333 - - #router_id = json_endpoint_settings.get('router_id', '0.0.0.0') # '10.95.0.10' - #route_distinguisher = json_endpoint_settings.get('route_distinguisher', '0:0' ) # '60001:801' - sub_interface_index = json_endpoint_settings.get('sub_interface_index', 0 ) # 1 - vlan_id = json_endpoint_settings.get('vlan_id', 1 ) # 400 - #address_ip = json_endpoint_settings.get('address_ip', '0.0.0.0') # '2.2.2.1' - #address_prefix = json_endpoint_settings.get('address_prefix', 24 ) # 30 - - if_subif_name = '{:s}.{:d}'.format(endpoint_name, vlan_id) - service_short_uuid = service_uuid.split('-')[-1] - network_instance_name = '{:s}-NetInst'.format(service_short_uuid) - #network_interface_desc = '{:s}-NetIf'.format(service_uuid) - #network_subinterface_desc = '{:s}-NetSubIf'.format(service_uuid) - - json_config_rules = [ - json_config_rule_delete( - '/network_instance[{:s}]/interface[{:s}]'.format(network_instance_name, if_subif_name), { - 'name': network_instance_name, 'id': if_subif_name, - }), - json_config_rule_delete( - '/interface[{:s}]/subinterface[{:d}]'.format(endpoint_name, sub_interface_index), { - 'name': endpoint_name, 'index': sub_interface_index, - }), - json_config_rule_delete( - '/interface[{:s}]'.format(endpoint_name), { - 'name': endpoint_name, - }), - json_config_rule_delete( - '/network_instance[{:s}]/table_connections[DIRECTLY_CONNECTED][BGP][IPV4]'.format( - network_instance_name), { - 'name': network_instance_name, 'src_protocol': 'DIRECTLY_CONNECTED', 'dst_protocol': 'BGP', - 'address_family': 'IPV4', - }), - json_config_rule_delete( - '/network_instance[{:s}]/table_connections[STATIC][BGP][IPV4]'.format(network_instance_name), { - 'name': network_instance_name, 'src_protocol': 'STATIC', 'dst_protocol': 'BGP', - 'address_family': 'IPV4', - }), - json_config_rule_delete( - '/network_instance[{:s}]/protocols[BGP]'.format(network_instance_name), { - 'name': network_instance_name, 'identifier': 'BGP', 'protocol_name': 'BGP', - }), - json_config_rule_delete( - # pylint: disable=duplicate-string-formatting-argument - '/network_instance[{:s}]/inter_instance_policies[{:s}_import]'.format( - network_instance_name, network_instance_name), { - 'name': network_instance_name, - }), - json_config_rule_delete( - '/routing_policy/policy_definition[{:s}_import]/statement[{:s}]'.format( - network_instance_name, '3'), { - 'policy_name': '{:s}_import'.format(network_instance_name), 'statement_name': '3', - }), - json_config_rule_delete( - '/routing_policy/policy_definition[{:s}_import]'.format(network_instance_name), { - 'policy_name': '{:s}_import'.format(network_instance_name), - }), - json_config_rule_delete( - '/routing_policy/bgp_defined_set[{:s}_rt_import][route-target:{:s}]'.format( - network_instance_name, bgp_route_target), { - 'ext_community_set_name': '{:s}_rt_import'.format(network_instance_name), - 'ext_community_member' : 'route-target:{:s}'.format(bgp_route_target), - }), - json_config_rule_delete( - '/routing_policy/bgp_defined_set[{:s}_rt_import]'.format(network_instance_name), { - 'ext_community_set_name': '{:s}_rt_import'.format(network_instance_name), - }), - json_config_rule_delete( - # pylint: disable=duplicate-string-formatting-argument - '/network_instance[{:s}]/inter_instance_policies[{:s}_export]'.format( - network_instance_name, network_instance_name), { - 'name': network_instance_name, - }), - json_config_rule_delete( - '/routing_policy/policy_definition[{:s}_export]/statement[{:s}]'.format( - network_instance_name, '3'), { - 'policy_name': '{:s}_export'.format(network_instance_name), 'statement_name': '3', - }), - json_config_rule_delete( - '/routing_policy/policy_definition[{:s}_export]'.format(network_instance_name), { - 'policy_name': '{:s}_export'.format(network_instance_name), - }), - json_config_rule_delete( - '/routing_policy/bgp_defined_set[{:s}_rt_export][route-target:{:s}]'.format( - network_instance_name, bgp_route_target), { - 'ext_community_set_name': '{:s}_rt_export'.format(network_instance_name), - 'ext_community_member' : 'route-target:{:s}'.format(bgp_route_target), - }), - json_config_rule_delete( - '/routing_policy/bgp_defined_set[{:s}_rt_export]'.format(network_instance_name), { - 'ext_community_set_name': '{:s}_rt_export'.format(network_instance_name), - }), - json_config_rule_delete( - '/network_instance[{:s}]'.format(network_instance_name), { - 'name': network_instance_name - }), - ] - return json_config_rules diff --git a/src/service/service/service_handlers/oc/OCServiceHandler.py b/src/service/service/service_handlers/oc/OCServiceHandler.py index aafc880e580aebb3b19ff36d7f7a73b28b226df3..277080d6589d08e9765b16962b2cc5737c2c50af 100644 --- a/src/service/service/service_handlers/oc/OCServiceHandler.py +++ b/src/service/service/service_handlers/oc/OCServiceHandler.py @@ -13,19 +13,20 @@ # limitations under the License. import json, logging -from anytree import RenderTree from typing import Any, List, Optional, Tuple, Union from common.method_wrappers.Decorator import MetricsPool, metered_subclass_method -from common.proto.context_pb2 import ConfigRule, DeviceId, Service +from common.proto.context_pb2 import DeviceId, Service from common.tools.object_factory.Device import json_device_id from common.type_checkers.Checkers import chk_type from common.DeviceTypes import DeviceTypeEnum -from service.service.service_handler_api.Tools import get_device_endpoint_uuids, get_endpoint_matching +from service.service.service_handler_api.Tools import get_endpoint_matching from service.service.service_handler_api._ServiceHandler import _ServiceHandler from service.service.service_handler_api.SettingsHandler import SettingsHandler from service.service.task_scheduler.TaskExecutor import TaskExecutor -from .ConfigRules import setup_config_rules, teardown_config_rules -from .OCTools import convert_endpoints_to_flows, endpoints_to_flows, handle_flows_names , check_media_channel_existance +from .OCTools import ( + convert_endpoints_to_flows, endpoints_to_flows, + #handle_flows_names, check_media_channel_existance +) LOGGER = logging.getLogger(__name__) @@ -51,11 +52,9 @@ class OCServiceHandler(_ServiceHandler): settings=None if self.__settings_handler.get('/settings-ob_{}'.format(connection_uuid)): - LOGGER.info(f"setEndpoint ob {connection_uuid}") is_opticalband=True settings = self.__settings_handler.get('/settings-ob_{}'.format(connection_uuid)) else: - LOGGER.info(f"setEndpoint {connection_uuid}") settings = self.__settings_handler.get('/settings') bidir = settings.value.get("bidir") @@ -64,64 +63,46 @@ class OCServiceHandler(_ServiceHandler): #flow is the new variable that stores input-output relationship #flows = convert_endpoints_to_flows(endpoints) - flows = endpoints_to_flows(endpoints, bidir, is_opticalband) - #handled_flows=handle_flows_names(flows=flows,task_executor=self.__task_executor) - - LOGGER.info(f"Computed Flows {flows}") - + results = [] + #new cycle for setting optical devices - LOGGER.info(f"settings_oc_service: {settings}") - for device_uuid in flows.keys(): + for device_uuid, dev_flows in flows.items(): try: - dev_flows = flows[device_uuid] device_obj = self.__task_executor.get_device(DeviceId(**json_device_id(device_uuid))) - - - if (settings): - + if settings: self.__task_executor.configure_optical_device(device_obj, settings, dev_flows, is_opticalband) results.append(True) except Exception as e: # pylint: disable=broad-except LOGGER.exception('Unable to configure Device({:s})'.format(str(device_uuid))) results.append(e) - + return results @metered_subclass_method(METRICS_POOL) def DeleteEndpoint( self, endpoints : List[Tuple[str, str, Optional[str]]], connection_uuid : Optional[str] = None ) -> List[Union[bool, Exception]]: - is_opticalband =False flows = convert_endpoints_to_flows(endpoints) - - chk_type('endpoints', endpoints, list) if len(endpoints) == 0: return [] - if self.__settings_handler.get('/settings-ob_{}'.format(connection_uuid)): is_opticalband =True settings = self.__settings_handler.get('/settings-ob_{}'.format(connection_uuid)) else: settings = self.__settings_handler.get('/settings') - - - LOGGER.info(f"from DeleteEndpoint settings {settings.value}") - dev_flows=[] + results = [] - for device_uuid in flows.keys(): + for device_uuid, dev_flows in flows.items(): try: channel_indexes= [] - dev_flows = flows[device_uuid] - LOGGER.info(f"from DeleteEndpoint dev_flows {dev_flows}") - device_obj = self.__task_executor.get_device(DeviceId(**json_device_id(device_uuid))) - LOGGER.info(f"from DeleteEndpoint device type {device_obj.device_type}") + if (device_obj.device_type == DeviceTypeEnum.OPTICAL_TRANSPONDER._value_): for endpoint in dev_flows: src , dst = endpoint @@ -134,22 +115,19 @@ class OCServiceHandler(_ServiceHandler): dst_endpoint_obj = get_endpoint_matching(device_obj, dst) dist_enpoint_name=dst_endpoint_obj.name channel_indexes.append((src_enpoint_name,dist_enpoint_name)) - else : - if not is_opticalband: - if 'flow_id' in settings.value: - - channel_indexes.append(settings.value["flow_id"]) - elif is_opticalband: - if "ob_id" in settings.value: - channel_indexes.append(settings.value["ob_id"]) - - LOGGER.info(f"from DeleteEndpoint channel_indexes {channel_indexes}") - if len(channel_indexes)>0: - errors=self.__task_executor.deconfigure_optical_device(device=device_obj - ,channel_indexes=channel_indexes - ,is_opticalband=is_opticalband - - ,dev_flow=dev_flows) + else: + if not is_opticalband: + if 'flow_id' in settings.value: + channel_indexes.append(settings.value["flow_id"]) + elif is_opticalband: + if "ob_id" in settings.value: + channel_indexes.append(settings.value["ob_id"]) + + if len(channel_indexes) > 0: + errors = self.__task_executor.deconfigure_optical_device( + device=device_obj, channel_indexes=channel_indexes, + is_opticalband=is_opticalband, dev_flow=dev_flows + ) # if (len(errors)==0): # service_id =self.__service.service_id # if not is_opticalband : @@ -200,29 +178,21 @@ class OCServiceHandler(_ServiceHandler): def DeleteConfig(self, resources : List[Tuple[str, Any]]) -> List[Union[bool, Exception]]: chk_type('resources', resources, list) if len(resources) == 0: return [] - service_id =self.__service.service_id + service_id = self.__service.service_id + results = [] for resource in resources: try: self.__settings_handler.delete(resource[0]) - # self.__task_executor.delete_setting(service_id,"/settings","value") except Exception as e: # pylint: disable=broad-except LOGGER.exception('Unable to DeleteConfig({:s})'.format(str(resource))) results.append(e) return results - - + def check_media_channel(self,connection_uuid): - if self.__settings_handler.get('/settings-ob_{}'.format(connection_uuid)): - - return False + return False else: - - return True - - - - \ No newline at end of file + return True diff --git a/src/service/service/service_handlers/oc/OCTools.py b/src/service/service/service_handlers/oc/OCTools.py index e796e2f6c6c83165328e1e282ea601a3f3e6212c..e9097c7e7136303586edc1d7c1dc56d89ad0b3dc 100644 --- a/src/service/service/service_handlers/oc/OCTools.py +++ b/src/service/service/service_handlers/oc/OCTools.py @@ -12,11 +12,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -from service.service.service_handler_api.Tools import get_device_endpoint_uuids, get_endpoint_matching -from typing import Dict, Any, List, Optional, Tuple -import logging , json -from common.proto.context_pb2 import ConfigRule, DeviceId, Service +import logging, json +from typing import Dict, List, Optional, Tuple +from common.proto.context_pb2 import DeviceId, Service from common.tools.object_factory.Device import json_device_id +from service.service.service_handler_api.Tools import get_endpoint_matching log = logging.getLogger(__name__) @@ -123,7 +123,7 @@ def ob_flows(endpoints : List[Tuple[str, str, Optional[str]]], bidir : int): if bidir: endpoint = endpoints[i] device_uuid, endpoint_uuid = endpoint[0:2] - log.info("current OCTools step {}, {}, {}".format(i, device_uuid, endpoint_uuid)) + if device_uuid not in entries.keys(): entries[device_uuid] = [] entry_tuple = "0", endpoint_uuid @@ -140,7 +140,7 @@ def ob_flows(endpoints : List[Tuple[str, str, Optional[str]]], bidir : int): return {} i = i + 2 if end > 4: - log.info("Bidirectional optical band connection with {} (>4) endpoints".format(end)) + while(i < end-2): #i endpoint = endpoints[i] @@ -189,19 +189,19 @@ def ob_flows(endpoints : List[Tuple[str, str, Optional[str]]], bidir : int): else: endpoint = endpoints[i] device_uuid, endpoint_uuid = endpoint[0:2] - log.info("current OCTools step {}, {}, {}".format(i, device_uuid, endpoint_uuid)) + if device_uuid not in entries.keys(): entries[device_uuid] = [] entry_tuple = "0", endpoint_uuid entries[device_uuid].append(entry_tuple) i = i + 1 if end > 2: - log.info("Unidirectional optical band connection with {} (>2) endpoints".format(end)) + while(i < end-1): #i endpoint = endpoints[i] device_uuid, endpoint_uuid = endpoint[0:2] - log.info("current OCTools step {}, {}, {}".format(i, device_uuid, endpoint_uuid)) + if device_uuid not in entries.keys(): entries[device_uuid] = [] #i+1 @@ -231,7 +231,7 @@ def conn_flows(endpoints : List[Tuple[str, str, Optional[str]]], bidir : int): #tx tp endpoint = endpoints[i] device_uuid, endpoint_uuid = endpoint[0:2] - log.info("current OCTools step {}, {}, {}".format(i, device_uuid, endpoint_uuid)) + if device_uuid not in entries.keys(): entries[device_uuid] = [] entry_tuple = "0", endpoint_uuid @@ -244,7 +244,7 @@ def conn_flows(endpoints : List[Tuple[str, str, Optional[str]]], bidir : int): #i endpoint = endpoints[i] device_uuid, endpoint_uuid = endpoint[0:2] - log.info("current OCTools step {}, {}, {}".format(i, device_uuid, endpoint_uuid)) + if device_uuid not in entries.keys(): entries[device_uuid] = [] #i+1 @@ -254,8 +254,7 @@ def conn_flows(endpoints : List[Tuple[str, str, Optional[str]]], bidir : int): entry_tuple = endpoint_uuid, next_endpoint_uuid entries[device_uuid].append(entry_tuple) else: - log.info(f"ERROR1 in bidirectional connection ") - log.info("{}, {}, {}".format(i+2, next_device_uuid, device_uuid)) + return {} #i+2 @@ -269,15 +268,14 @@ def conn_flows(endpoints : List[Tuple[str, str, Optional[str]]], bidir : int): entries[device_uuid].append(entry_tuple) i = i + 4 else: - log.info("ERROR2 in bidirection connection") - log.info("{}, {}, {}".format(i+4, next_2_device_uuid, device_uuid)) + return {} else: while(i < end-1): #i endpoint = endpoints[i] device_uuid, endpoint_uuid = endpoint[0:2] - log.info("current OCTools step {}, {}, {}".format(i, device_uuid, endpoint_uuid)) + if device_uuid not in entries.keys(): entries[device_uuid] = [] #i+1 @@ -288,8 +286,6 @@ def conn_flows(endpoints : List[Tuple[str, str, Optional[str]]], bidir : int): entries[device_uuid].append(entry_tuple) i = i + 2 else: - log.info("ERROR3 in bidirectional ob") - log.info("{}, {}, {}".format(i, next_device_uuid, device_uuid)) return {} #rx tp endpoint = endpoints[i] @@ -299,51 +295,48 @@ def conn_flows(endpoints : List[Tuple[str, str, Optional[str]]], bidir : int): entry_tuple = endpoint_uuid, "0", entries[device_uuid].append(entry_tuple) return entries - def endpoints_to_flows(endpoints : List[Tuple[str, str, Optional[str]]], bidir : int, is_ob: bool)->Dict: - log.info("AAAAAAAAAAAAAAAAAAAAAAAA: {}".format(endpoints)) if is_ob: entries = ob_flows(endpoints, bidir) else: entries = conn_flows(endpoints, bidir) return entries - -def get_device_endpint_name (endpoint_uuid:str,device_uuid:str,task_executor)->Tuple: +def get_device_endpint_name(endpoint_uuid : str, device_uuid : str, task_executor) -> Tuple: device_obj = task_executor.get_device(DeviceId(**json_device_id(device_uuid))) endpoint_obj = get_endpoint_matching(device_obj, endpoint_uuid) endpoint_name = endpoint_obj.name return (device_obj.name, endpoint_name) -def handle_flows_names (task_executor,flows:dict)->Dict : - new_flows={} - for index,( device_uuid_key , device_endpoints_list) in enumerate(flows.items()): +def handle_flows_names(task_executor, flows : dict) -> Dict: + new_flows = {} + for index, (device_uuid_key, device_endpoints_list) in enumerate(flows.items()): for endpoint_tupple in device_endpoints_list: - source_port=None - destination_port=None - device_name="" - source_endpoint,destination_endpoint =endpoint_tupple - if (source_endpoint !='0'): - if get_device_endpint_name(source_endpoint,device_uuid_key,task_executor) is not None: - device_name,source_port=get_device_endpint_name(source_endpoint,device_uuid_key,task_executor) - if (destination_endpoint !='0'): - if get_device_endpint_name(destination_endpoint,device_uuid_key,task_executor) is not None: - device_name,destination_port=get_device_endpint_name(destination_endpoint,device_uuid_key,task_executor) - if (device_name not in new_flows): - new_flows[device_name]=[] - new_flows[device_name].append((source_port,destination_port)) + source_port = None + destination_port = None + device_name = "" + source_endpoint, destination_endpoint = endpoint_tupple + if source_endpoint != '0': + if get_device_endpint_name(source_endpoint, device_uuid_key, task_executor) is not None: + device_name, source_port = get_device_endpint_name( + source_endpoint, device_uuid_key, task_executor + ) + if destination_endpoint != '0': + if get_device_endpint_name(destination_endpoint, device_uuid_key, task_executor) is not None: + device_name, destination_port = get_device_endpint_name( + destination_endpoint, device_uuid_key, task_executor + ) + if device_name not in new_flows: + new_flows[device_name] = [] + new_flows[device_name].append((source_port, destination_port)) return new_flows - -def check_media_channel_existance (service:Service): - has_media_channel=False +def check_media_channel_existance(service : Service): + has_media_channel = False for config_rule in service.service_config.config_rules: - log.info(f"config_rule {config_rule}") - if isinstance(config_rule.custom.resource_value,str): - settings=json.dumps(config_rule.custom.resource_value) - if "flow_id" in settings : - has_media_channel=True - log.info(f"has_media_channel {has_media_channel}") + if isinstance(config_rule.custom.resource_value, str): + settings = json.dumps(config_rule.custom.resource_value) + if "flow_id" in settings: + has_media_channel = True return has_media_channel - \ No newline at end of file diff --git a/src/service/service/service_handlers/qkd/qkd_service_handler.py b/src/service/service/service_handlers/qkd/qkd_service_handler.py index 0977388005ef72fe036de93de2dc73438f0c6163..2bfbcb59dd045d10b9267dc15119e1d17e1929d4 100644 --- a/src/service/service/service_handlers/qkd/qkd_service_handler.py +++ b/src/service/service/service_handlers/qkd/qkd_service_handler.py @@ -17,7 +17,8 @@ import json, logging, uuid from typing import Any, Dict, List, Optional, Tuple, Union from common.method_wrappers.Decorator import MetricsPool, metered_subclass_method from common.proto.context_pb2 import ConfigRule, DeviceId, Service -from common.proto.qkd_app_pb2 import App, QKDAppStatusEnum, QKDAppTypesEnum +from common.proto.qkd_app_pb2 import App, AppId, QKDAppStatusEnum, QKDAppTypesEnum +from common.proto.context_pb2 import ContextId, Uuid from common.tools.object_factory.ConfigRule import json_config_rule_delete, json_config_rule_set from common.tools.object_factory.Device import json_device_id from common.type_checkers.Checkers import chk_type @@ -41,6 +42,7 @@ class QKDServiceHandler(_ServiceHandler): self.__service = service self.__task_executor = task_executor self.__settings_handler = SettingsHandler(service.service_config, **settings) + self.qkd_app_client = task_executor._qkd_app_client # Initialize qkd_app_client # Optare: This function is where the service is created @@ -88,14 +90,9 @@ class QKDServiceHandler(_ServiceHandler): interfaces.append([0,0]) links.append([]) - - - - endpoint_left = get_endpoint_name_by_uuid(device, endpoint_left_uuid) if idx > 0 else None endpoint_right = get_endpoint_name_by_uuid(device, endpoint_right_uuid) if 2 * idx + 2 < len(endpoints) else None - for config_rule in device.device_config.config_rules: resource_key = config_rule.custom.resource_key @@ -271,7 +268,7 @@ class QKDServiceHandler(_ServiceHandler): 'remote_device_id': dst_device.device_id, } - self.__task_executor.register_app(App(**internal_app_src_dst)) + self.__task_executor.register_qkd_app(App(**internal_app_src_dst)) # Register App @@ -286,7 +283,7 @@ class QKDServiceHandler(_ServiceHandler): 'remote_device_id': src_device.device_id, } - self.__task_executor.register_app(App(**internal_app_dst_src)) + self.__task_executor.register_qkd_app(App(**internal_app_dst_src)) results.append(True) except Exception as e: # pylint: disable=broad-except @@ -297,31 +294,127 @@ class QKDServiceHandler(_ServiceHandler): # Optare: This will be to delete a service def DeleteEndpoint( - self, endpoints : List[Tuple[str, str, Optional[str]]], - connection_uuid : Optional[str] = None + self, endpoints: List[Tuple[str, str, Optional[str]]], connection_uuid: Optional[str] = None ) -> List[Union[bool, Exception]]: - """ Delete service endpoints form a list. - Parameters: - endpoints: List[Tuple[str, str, Optional[str]]] - List of tuples, each containing a device_uuid, - endpoint_uuid, and the topology_uuid of the endpoint - to be removed. - connection_uuid : Optional[str] - If specified, is the UUID of the connection this endpoint is associated to. - Returns: - results: List[Union[bool, Exception]] - List of results for endpoint deletions requested. - Return values must be in the same order as the requested - endpoints. If an endpoint is properly deleted, True must be - returned; otherwise, the Exception that is raised during - the processing must be returned. - """ - raise NotImplementedError() + chk_type('endpoints', endpoints, list) + if len(endpoints) == 0: + return [] + + LOGGER.info(f'Deleting Endpoints: {endpoints}') + LOGGER.info(f'Connection UUID: {connection_uuid}') + + service_uuid = self.__service.service_id.service_uuid.uuid + context_uuid = self.__service.service_id.context_id.context_uuid.uuid + LOGGER.info(f'Service UUID: {service_uuid}, Context UUID: {context_uuid}') + + results = [] + apps = list() # Initialize apps as an empty list, in case fetching fails + try: + # Initialize device lists and QKDN IDs + devices = [] + qkdn_ids = [] + interfaces = [] + links = [] + + # Populate devices and QKDN ids from endpoints + for idx, endpoint in enumerate(endpoints[::2]): + device_uuid, endpoint_left_uuid = get_device_endpoint_uuids(endpoint) + _, endpoint_right_uuid = get_device_endpoint_uuids(endpoints[2 * idx + 1]) + + device = self.__task_executor.get_device(DeviceId(**json_device_id(device_uuid))) + LOGGER.info(f'Device: {device}, Endpoint Left: {endpoint_left_uuid}, Endpoint Right: {endpoint_right_uuid}') + + devices.append(device) + interfaces.append([0, 0]) + links.append([]) + + for config_rule in device.device_config.config_rules: + resource_key = config_rule.custom.resource_key + + if resource_key == '__node__': + value = json.loads(config_rule.custom.resource_value) + qkdn_ids.append(value['qkdn_id']) + + elif resource_key.startswith('/interface'): + value = json.loads(config_rule.custom.resource_value) + try: + endpoint_str = value['qkdi_att_point']['uuid'] + if endpoint_str == endpoint_left_uuid: + interfaces[idx][0] = value['qkdi_id'] + elif endpoint_str == endpoint_right_uuid: + interfaces[idx][1] = value['qkdi_id'] + except KeyError: + pass + + elif resource_key.startswith('/link'): + value = json.loads(config_rule.custom.resource_value) + links[idx].append(( + value['uuid'], + (value['src_qkdn_id'], value['src_interface_id']), + (value['dst_qkdn_id'], value['dst_interface_id']) + )) + + LOGGER.info(f'Interfaces: {interfaces}, Links: {links}, QKDN IDs: {qkdn_ids}') + + # Fetch the related apps for the service using the same pattern as in routes.py + try: + context_id = ContextId(context_uuid=Uuid(uuid=context_uuid)) + apps_response = self.__task_executor._qkd_app_client.ListApps(context_id) + apps = apps_response.apps # Assign the apps to the list, if successful + LOGGER.info(f"Apps retrieved: {apps}") + except grpc.RpcError as e: + LOGGER.error(f"gRPC error while fetching apps: {e.details()}") + if e.code() != grpc.StatusCode.NOT_FOUND: + raise + apps = list() # If an error occurs, ensure `apps` is still an empty list + + # Filter related internal apps + related_apps = [ + app for app in apps + if app.server_app_id == service_uuid and app.app_type == QKDAppTypesEnum.QKDAPPTYPES_INTERNAL + ] + + # Log each app's details + for app in related_apps: + LOGGER.info(f"App ID: {app.app_id.app_uuid.uuid}, Status: {app.app_status}") + + # Update each app status to DISCONNECTED before deletion + for app in related_apps: + self.__task_executor.update_qkd_app_status(app, QKDAppStatusEnum.QKDAPPSTATUS_DISCONNECTED) + + results.append(True) + + except Exception as e: # pylint: disable=broad-except + LOGGER.error(f"Failed to delete QKD service: {str(e)}") + results.append(e) + + return results + + def fetch_related_internal_apps(self, context_uuid: str, service_uuid: str) -> List[App]: + try: + context_id = ContextId(context_uuid=Uuid(uuid=context_uuid)) + apps_response = self.qkd_app_client.ListApps(context_id) + + # Log the apps retrieved to ensure they exist and have a status + LOGGER.info(f"Apps retrieved: {apps_response.apps}") + + internal_apps = [ + app for app in apps_response.apps + if app.app_type == QKDAppTypesEnum.QKDAPPTYPES_INTERNAL + and app.server_app_id == service_uuid + and app.app_status == QKDAppStatusEnum.ACTIVE # Ensure you are checking status + ] + + LOGGER.info(f"Filtered internal apps: {internal_apps}") + return internal_apps + + except Exception as e: + LOGGER.error(f"Error fetching related internal apps: {e}") + return [] # Optare: Can be ingored. It's in case if a service is later updated. Not required to proper functioning - def SetConstraint(self, constraints: List[Tuple[str, Any]]) \ - -> List[Union[bool, Exception]]: + def SetConstraint(self, constraints: List[Tuple[str, Any]]) -> List[Union[bool, Exception]]: """ Create/Update service constraints. Parameters: constraints: List[Tuple[str, Any]] @@ -335,10 +428,30 @@ class QKDServiceHandler(_ServiceHandler): returned; otherwise, the Exception that is raised during the processing must be returned. """ - raise NotImplementedError() + results = [] + try: + for constraint_type, constraint_value in constraints: + LOGGER.info(f"Setting constraint: {constraint_type} with value: {constraint_value}") + + # Assuming you store constraints as part of service config rules + constraint_key = f"/constraints/{constraint_type}" + json_config_rule = json_config_rule_set(constraint_key, constraint_value) - def DeleteConstraint(self, constraints: List[Tuple[str, Any]]) \ - -> List[Union[bool, Exception]]: + # Apply the configuration rule to the service + self.__service.service_config.config_rules.append(ConfigRule(**json_config_rule)) + + # Reconfigure the service with new constraints + self.__task_executor.configure_service(self.__service) + + results.append(True) + + except Exception as e: + LOGGER.error(f"Failed to set constraints: {str(e)}") + results.append(e) + + return results + + def DeleteConstraint(self, constraints: List[Tuple[str, Any]]) -> List[Union[bool, Exception]]: """ Delete service constraints. Parameters: constraints: List[Tuple[str, Any]] @@ -354,16 +467,37 @@ class QKDServiceHandler(_ServiceHandler): be returned; otherwise, the Exception that is raised during the processing must be returned. """ - raise NotImplementedError() + results = [] + try: + for constraint_type, _ in constraints: + LOGGER.info(f"Deleting constraint: {constraint_type}") + + # Remove the constraint from the service config rules + constraint_key = f"/constraints/{constraint_type}" + json_config_rule = json_config_rule_delete(constraint_key) + + for rule in self.__service.service_config.config_rules: + if rule.custom.resource_key == constraint_key: + self.__service.service_config.config_rules.remove(rule) + + # Reconfigure the service after removing constraints + self.__task_executor.configure_service(self.__service) + + results.append(True) + + except Exception as e: + LOGGER.error(f"Failed to delete constraints: {str(e)}") + results.append(e) - def SetConfig(self, resources: List[Tuple[str, Any]]) \ - -> List[Union[bool, Exception]]: + return results + + def SetConfig(self, resources: List[Tuple[str, Any]]) -> List[Union[bool, Exception]]: """ Create/Update configuration for a list of service resources. Parameters: resources: List[Tuple[str, Any]] List of tuples, each containing a resource_key pointing to - the resource to be modified, and a resource_value - containing the new value to be set. + the resource to be modified, and a resource_value containing + the new value to be set. Returns: results: List[Union[bool, Exception]] List of results for resource key changes requested. @@ -372,10 +506,28 @@ class QKDServiceHandler(_ServiceHandler): returned; otherwise, the Exception that is raised during the processing must be returned. """ - raise NotImplementedError() + results = [] + try: + for resource_key, resource_value in resources: + LOGGER.info(f"Setting config: {resource_key} with value: {resource_value}") + + json_config_rule = json_config_rule_set(resource_key, resource_value) + + # Apply the configuration rule to the service + self.__service.service_config.config_rules.append(ConfigRule(**json_config_rule)) + + # Reconfigure the service with new configurations + self.__task_executor.configure_service(self.__service) + + results.append(True) + + except Exception as e: + LOGGER.error(f"Failed to set config: {str(e)}") + results.append(e) + + return results - def DeleteConfig(self, resources: List[Tuple[str, Any]]) \ - -> List[Union[bool, Exception]]: + def DeleteConfig(self, resources: List[Tuple[str, Any]]) -> List[Union[bool, Exception]]: """ Delete configuration for a list of service resources. Parameters: resources: List[Tuple[str, Any]] @@ -391,4 +543,25 @@ class QKDServiceHandler(_ServiceHandler): be returned; otherwise, the Exception that is raised during the processing must be returned. """ - raise NotImplementedError() + results = [] + try: + for resource_key, _ in resources: + LOGGER.info(f"Deleting config: {resource_key}") + + json_config_rule = json_config_rule_delete(resource_key) + + # Remove the matching configuration rule + for rule in self.__service.service_config.config_rules: + if rule.custom.resource_key == resource_key: + self.__service.service_config.config_rules.remove(rule) + + # Reconfigure the service after deleting configurations + self.__task_executor.configure_service(self.__service) + + results.append(True) + + except Exception as e: + LOGGER.error(f"Failed to delete config: {str(e)}") + results.append(e) + + return results diff --git a/src/service/service/task_scheduler/TaskExecutor.py b/src/service/service/task_scheduler/TaskExecutor.py index 90c8e8dbd1289373bf369d2ccc8b4d4f9a2a656c..ac06e321d342fc7cddb9f54958a38ed87067c922 100644 --- a/src/service/service/task_scheduler/TaskExecutor.py +++ b/src/service/service/task_scheduler/TaskExecutor.py @@ -14,13 +14,17 @@ import json, logging from enum import Enum -from typing import TYPE_CHECKING, Any, Dict, Optional, Union +from typing import TYPE_CHECKING, Any, Dict, Optional, Tuple, Union +from common.DeviceTypes import DeviceTypeEnum from common.method_wrappers.ServiceExceptions import NotFoundException +from typing import List +from common.proto.qkd_app_pb2 import QKDAppStatusEnum from common.proto.context_pb2 import ( Connection, ConnectionId, Device, DeviceDriverEnum, DeviceId, Service, ServiceId, - OpticalConfig, OpticalConfigId,ConnectionList,ServiceConfigRule + OpticalConfig, OpticalConfigId, ConnectionList, ServiceConfigRule ) -from common.proto.qkd_app_pb2 import App +from common.proto.qkd_app_pb2 import App, AppId +from common.proto.context_pb2 import ContextId from common.tools.context_queries.Connection import get_connection_by_id from common.tools.context_queries.Device import get_device from common.tools.context_queries.Service import get_service_by_id @@ -33,10 +37,8 @@ from service.service.service_handler_api.Exceptions import ( UnsatisfiedFilterException, UnsupportedFilterFieldException, UnsupportedFilterFieldValueException ) from service.service.service_handler_api.ServiceHandlerFactory import ServiceHandlerFactory, get_service_handler_class -from service.service.tools.ObjectKeys import get_connection_key, get_device_key, get_service_key +from service.service.tools.ObjectKeys import get_connection_key, get_device_key, get_service_key, get_qkd_app_key from service.service.tools.object_uuid import opticalconfig_get_uuid -from common.DeviceTypes import DeviceTypeEnum -from service.service.tools.ObjectKeys import get_connection_key, get_device_key, get_service_key, get_app_key if TYPE_CHECKING: from service.service.service_handler_api._ServiceHandler import _ServiceHandler @@ -125,47 +127,44 @@ class TaskExecutor: self._store_grpc_object(CacheableObjectType.DEVICE, device_key, device) # New function Andrea for Optical Devices - def configure_optical_device(self, device : Device, settings : str, flows : list, is_opticalband : bool): + def configure_optical_device( + self, device : Device, settings : str, flows : list, is_opticalband : bool + ): device_key = get_device_key(device.device_id) optical_config_id = OpticalConfigId() optical_config_id.opticalconfig_uuid = opticalconfig_get_uuid(device.device_id) - + optical_config = OpticalConfig() - + setting = settings.value if settings else "" - config_type=None + config_type = None try: - result = self._context_client.SelectOpticalConfig(optical_config_id) - + new_config = json.loads(result.config) if 'type' in new_config: config_type=new_config['type'] if config_type == 'optical-transponder': setting['status']='ENABLED' if result is not None : - new_config["new_config"] = setting - new_config["is_opticalband"] = is_opticalband new_config["flow"] = flows result.config = json.dumps(new_config) optical_config.CopyFrom(result) - LOGGER.info("resul from select optical config %s",optical_config) self._device_client.ConfigureOpticalDevice(optical_config) self._store_grpc_object(CacheableObjectType.DEVICE, device_key, device) - except Exception as e: LOGGER.info("error in configure_optical_device %s",e) - - # Deconfiguring Optical Devices ( CNIT ) - def deconfigure_optical_device(self, device : Device, channel_indexes :list,is_opticalband:bool,dev_flow:list): - - errors=[] - dev_flow=dev_flow + + # Deconfiguring Optical Devices ( CNIT ) + def deconfigure_optical_device( + self, device : Device, channel_indexes : list, is_opticalband : bool, dev_flow : list + ): + errors = [] flows = [] - indexes={} + indexes = {} new_config = {} optical_config_id = OpticalConfigId() optical_config_id.opticalconfig_uuid = opticalconfig_get_uuid(device.device_id) @@ -174,24 +173,20 @@ class TaskExecutor: for index in channel_indexes : flows.append(index) # if Roadm the channel index is the flow_id ,or ob_id - else : - for index in channel_indexes: - if ( not is_opticalband): - indexes["flow_id"]=index - else : - indexes["ob_id"]=index - - + else: + for index in channel_indexes: + if not is_opticalband: + indexes["flow_id"] = index + else: + indexes["ob_id"] = index + try: - result = self._context_client.SelectOpticalConfig(optical_config_id) # for extractor in device service to extract the index , dummy data for freq and band required - indexes["frequency"]=None - indexes["band"]=None - if result is not None : + indexes["frequency"] = None + indexes["band"] = None + if result is not None: new_config = json.loads(result.config) - - new_config["new_config"]=indexes new_config["flow"] = flows if len(flows)>0 else dev_flow new_config["is_opticalband"] = is_opticalband @@ -200,56 +195,47 @@ class TaskExecutor: # new_optical_config.opticalconfig_id.CopyFrom (optical_config_id) # new_optical_config.device_id.CopyFrom(device.device_id) self._device_client.DisableOpticalDevice(result) - - except Exception as e: errors.append(e) LOGGER.info("error in deconfigure_optical_device %s",e) return errors - - - def delete_setting (self,service_id:ServiceId, config_key:str,config_value:str) : + + def delete_setting( + self, service_id : ServiceId, config_key : str, config_value : str + ): service_configRule = ServiceConfigRule() service_configRule.service_id.CopyFrom( service_id) - service_configRule.configrule_custom.resource_key=config_key - service_configRule.configrule_custom.resource_value=config_value + service_configRule.configrule_custom.resource_key = config_key + service_configRule.configrule_custom.resource_value = config_value try: ctxt = ContextClient() ctxt.connect() ctxt.DeleteServiceConfigRule(service_configRule) ctxt.close() except Exception as e : - LOGGER.info("error in delete service config rule %s",e) - - - - - def check_service_for_media_channel (self,connections:ConnectionList,item)->bool: - service=item - if (isinstance(item,ServiceId)): - service=self.get_service(item) + LOGGER.info("error in delete service config rule %s",e) + + def check_service_for_media_channel(self, connections : ConnectionList, item) -> bool: + service = item + if (isinstance(item, ServiceId)): + service = self.get_service(item) class_service_handler = None service_handler_settings = {} for connection in connections.connections: connection_uuid=connection.connection_id.connection_uuid if class_service_handler is None: - class_service_handler=self.get_service_handler(connection, service,**service_handler_settings) - LOGGER.info(f"checking media_channel for service {connection_uuid}") + class_service_handler = self.get_service_handler(connection, service,**service_handler_settings) if class_service_handler.check_media_channel(connection_uuid): return True - return False - - def check_connection_for_media_channel (self,connection:Connection,service:Service)->bool: + return False + def check_connection_for_media_channel( + self, connection : Connection, service : Service + ) -> bool: service_handler_settings = {} - connection_uuid=connection.connection_id.connection_uuid - service_handler_class=self.get_service_handler(connection, service,**service_handler_settings) - - + connection_uuid = connection.connection_id.connection_uuid + service_handler_class = self.get_service_handler(connection, service, **service_handler_settings) return service_handler_class.check_media_channel(connection_uuid) - - - def get_device_controller(self, device : Device) -> Optional[Device]: #json_controller = None @@ -271,8 +257,8 @@ class TaskExecutor: def get_devices_from_connection( self, connection : Connection, exclude_managed_by_controller : bool = False - ) -> Dict[str, Device]: - devices = dict() + ) -> Dict[DeviceTypeEnum, Dict[str, Device]]: + devices : Dict[DeviceTypeEnum, Dict[str, Device]] = dict() for endpoint_id in connection.path_hops_endpoint_ids: device = self.get_device(endpoint_id.device_id) device_uuid = endpoint_id.device_id.device_uuid.uuid @@ -280,11 +266,14 @@ class TaskExecutor: controller = self.get_device_controller(device) if controller is None: - devices[device_uuid] = device + device_type = DeviceTypeEnum._value2member_map_[device.device_type] + devices.setdefault(device_type, dict())[device_uuid] = device else: if not exclude_managed_by_controller: - devices[device_uuid] = device - devices[controller.device_id.device_uuid.uuid] = controller + device_type = DeviceTypeEnum._value2member_map_[device.device_type] + devices.setdefault(device_type, dict())[device_uuid] = device + device_type = DeviceTypeEnum._value2member_map_[controller.device_type] + devices.setdefault(device_type, dict())[controller.device_id.device_uuid.uuid] = controller return devices # ----- Service-related methods ------------------------------------------------------------------------------------ @@ -311,34 +300,89 @@ class TaskExecutor: # ----- Service Handler Factory ------------------------------------------------------------------------------------ - def get_service_handler( + def get_service_handlers( self, connection : Connection, service : Service, **service_handler_settings - ) -> '_ServiceHandler': - connection_devices = self.get_devices_from_connection(connection, exclude_managed_by_controller=True) - try: - service_handler_class = get_service_handler_class( - self._service_handler_factory, service, connection_devices) - return service_handler_class(service, self, **service_handler_settings) - except (UnsatisfiedFilterException, UnsupportedFilterFieldException, UnsupportedFilterFieldValueException): - dict_connection_devices = { - cd_data.name : (cd_uuid, cd_data.name, { - (device_driver, DeviceDriverEnum.Name(device_driver)) - for device_driver in cd_data.device_drivers - }) - for cd_uuid,cd_data in connection_devices.items() - } - LOGGER.exception( - 'Unable to select service handler. service={:s} connection={:s} connection_devices={:s}'.format( + ) -> Dict[DeviceTypeEnum, Tuple['_ServiceHandler', Dict[str, Device]]]: + connection_device_types : Dict[DeviceTypeEnum, Dict[str, Device]] = self.get_devices_from_connection( + connection, exclude_managed_by_controller=True + ) + service_handlers : Dict[DeviceTypeEnum, Tuple['_ServiceHandler', Dict[str, Device]]] = dict() + for device_type, connection_devices in connection_device_types.items(): + try: + service_handler_class = get_service_handler_class( + self._service_handler_factory, service, connection_devices) + service_handler = service_handler_class(service, self, **service_handler_settings) + service_handlers[device_type] = (service_handler, connection_devices) + except ( + UnsatisfiedFilterException, UnsupportedFilterFieldException, + UnsupportedFilterFieldValueException + ): + dict_connection_devices = { + cd_data.name : (cd_uuid, cd_data.name, { + (device_driver, DeviceDriverEnum.Name(device_driver)) + for device_driver in cd_data.device_drivers + }) + for cd_uuid,cd_data in connection_devices.items() + } + MSG = 'Unable to select service handler. service={:s} connection={:s} connection_devices={:s}' + LOGGER.exception(MSG.format( grpc_message_to_json_string(service), grpc_message_to_json_string(connection), str(dict_connection_devices) - ) - ) + )) + return service_handlers # ----- QkdApp-related methods ------------------------------------------------------------------------------------- - def register_app(self, app: App) -> None: - app_key = get_app_key(app.app_id) + def register_qkd_app(self, app: App) -> None: + """ + Registers a QKD App and stores it in the cache. + """ + qkd_app_key = get_qkd_app_key(app.app_id) self._qkd_app_client.RegisterApp(app) - LOGGER.info("reg registered") - self._store_grpc_object(CacheableObjectType.QKD_APP, app_key, app) + LOGGER.info("QKD app registered with key: %s", qkd_app_key) + self._store_grpc_object(CacheableObjectType.QKD_APP, qkd_app_key, app) + + def update_qkd_app_status(self, app: App, new_status: QKDAppStatusEnum) -> None: + """ + Updates the status of a QKD app and persists it to the database. + """ + try: + app.app_status = new_status + LOGGER.info(f"Attempting to update app {app.app_id.app_uuid.uuid} to status {new_status}") + self._qkd_app_client.UpdateApp(app) + LOGGER.info(f"Successfully updated app {app.app_id.app_uuid.uuid} to status {new_status}") + except Exception as e: + LOGGER.error(f"Failed to update QKD app {app.app_id.app_uuid.uuid}: {str(e)}") + raise e + + def list_qkd_apps(self, context_id: ContextId) -> List[App]: + """ + Retrieves a list of QKD apps from the QKD App service. + """ + try: + apps_response = self._qkd_app_client.ListApps(context_id) + LOGGER.info(f"ListApps retrieved: {len(apps_response.apps)} apps with status") + + # Ensure that the status is logged and used + for app in apps_response.apps: + LOGGER.info(f"App ID: {app.app_id.app_uuid.uuid}, Status: {app.app_status}") + + return apps_response.apps + except Exception as e: + LOGGER.error(f"Failed to list QKD apps: {str(e)}") + return [] + + def delete_qkd_app(self, app_id: AppId) -> None: + """ + Deletes a QKD App by its AppId and removes it from the cache. + """ + qkd_app_key = get_qkd_app_key(app_id) + try: + LOGGER.info(f"Attempting to delete QKD app with AppId: {app_id}") + self._qkd_app_client.DeleteApp(app_id) + LOGGER.info(f"QKD app deleted with key: {qkd_app_key}") + self._delete_grpc_object(CacheableObjectType.QKD_APP, qkd_app_key) + except Exception as e: + LOGGER.error(f"Failed to delete QKD app with AppId {app_id}: {str(e)}") + raise e diff --git a/src/service/service/task_scheduler/TaskScheduler.py b/src/service/service/task_scheduler/TaskScheduler.py index fc1c8cfb9e0c58e8f48d806ee99db7e90dcdb994..c2d8423156fd145a262108701860aeb17df3e6f9 100644 --- a/src/service/service/task_scheduler/TaskScheduler.py +++ b/src/service/service/task_scheduler/TaskScheduler.py @@ -12,11 +12,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -import graphlib, logging, queue, time ,json +import graphlib, logging, queue, time from typing import TYPE_CHECKING, Dict, Tuple -from common.proto.context_pb2 import (Connection, ConnectionId, Service - , ServiceId, ServiceStatusEnum,ConnectionList - ,DeviceList) +from common.proto.context_pb2 import ( + Connection, ConnectionId, Service, ServiceId, ServiceStatusEnum, ConnectionList +) from common.proto.pathcomp_pb2 import PathCompReply from common.tools.grpc.Tools import grpc_message_to_json_string from context.client.ContextClient import ContextClient @@ -76,7 +76,7 @@ class TasksScheduler: return service_planned_key, service_active_key def _service_remove(self, service_id : ServiceId) -> Tuple[str, str]: - LOGGER.info(f"adding service into _dag {service_id}") + service_removing_key = self._add_task_if_not_exists(Task_ServiceSetStatus( self._executor, service_id, ServiceStatusEnum.SERVICESTATUS_PENDING_REMOVAL)) @@ -86,12 +86,16 @@ class TasksScheduler: self._dag.add(service_delete_key, service_removing_key) return service_removing_key, service_delete_key - def _optical_service_remove(self, service_id : ServiceId,has_media_channel:bool,has_optical_band=True) -> Tuple[str, str]: - LOGGER.info(f"adding service into _dag {service_id}") + def _optical_service_remove( + self, service_id : ServiceId, has_media_channel : bool, has_optical_band = True + ) -> Tuple[str, str]: service_removing_key = self._add_task_if_not_exists(Task_ServiceSetStatus( - self._executor, service_id, ServiceStatusEnum.SERVICESTATUS_ACTIVE)) + self._executor, service_id, ServiceStatusEnum.SERVICESTATUS_ACTIVE + )) - service_delete_key = self._add_task_if_not_exists(Task_OpticalServiceDelete(self._executor, service_id,has_media_channel,has_optical_band)) + service_delete_key = self._add_task_if_not_exists(Task_OpticalServiceDelete( + self._executor, service_id, has_media_channel, has_optical_band + )) # deleting a service requires the service is in removing state self._dag.add(service_delete_key, service_removing_key) @@ -114,57 +118,57 @@ class TasksScheduler: return connection_configure_key def _connection_deconfigure(self, connection_id : ConnectionId, service_id : ServiceId) -> str: - LOGGER.info(f"adding connection into _dag {connection_id}") connection_deconfigure_key = self._add_task_if_not_exists(Task_ConnectionDeconfigure( - self._executor, connection_id)) + self._executor, connection_id + )) # the connection deconfiguration depends on its connection's service being in removing state service_pending_removal_key = self._add_task_if_not_exists(Task_ServiceSetStatus( - self._executor, service_id, ServiceStatusEnum.SERVICESTATUS_PENDING_REMOVAL)) + self._executor, service_id, ServiceStatusEnum.SERVICESTATUS_PENDING_REMOVAL + )) self._dag.add(connection_deconfigure_key, service_pending_removal_key) # the connection's service depends on the connection deconfiguration to transition to delete service_delete_key = self._add_task_if_not_exists(Task_ServiceDelete( - self._executor, service_id)) + self._executor, service_id + )) self._dag.add(service_delete_key, connection_deconfigure_key) return connection_deconfigure_key - - - - def _optical_connection_deconfigure(self, connection_id : ConnectionId, service_id : ServiceId,has_media_channel:bool,has_optical_band=True) -> str: - LOGGER.info(f"adding connection into _dag {connection_id}") + + def _optical_connection_deconfigure( + self, connection_id : ConnectionId, service_id : ServiceId, + has_media_channel : bool, has_optical_band = True + ) -> str: connection_deconfigure_key = self._add_task_if_not_exists(Task_OpticalConnectionDeconfigure( - self._executor, connection_id,has_media_channel=has_media_channel)) + self._executor, connection_id, has_media_channel=has_media_channel + )) # the connection deconfiguration depends on its connection's service being in removing state service_pending_removal_key = self._add_task_if_not_exists(Task_ServiceSetStatus( - self._executor, service_id, ServiceStatusEnum.SERVICESTATUS_ACTIVE)) + self._executor, service_id, ServiceStatusEnum.SERVICESTATUS_ACTIVE + )) self._dag.add(connection_deconfigure_key, service_pending_removal_key) - - + service_delete_key = self._add_task_if_not_exists(Task_OpticalServiceDelete( - self._executor, service_id,has_media_channel,has_optical_band)) + self._executor, service_id, has_media_channel, has_optical_band + )) self._dag.add(service_delete_key, connection_deconfigure_key) return connection_deconfigure_key - def _optical_service_config_remove(self, connection_id : ConnectionId - , service_id : ServiceId - ) -> str: - LOGGER.info(f"_optical_service_config_remove {connection_id}") + def _optical_service_config_remove( + self, connection_id : ConnectionId, service_id : ServiceId + ) -> str: service_config_key = self._add_task_if_not_exists(Task_OpticalServiceConfigDelete( - self._executor,connection_id, service_id - - )) - + self._executor, connection_id, service_id + )) service_pending_removal_key = self._add_task_if_not_exists(Task_ServiceSetStatus( - self._executor, service_id, ServiceStatusEnum.SERVICESTATUS_ACTIVE)) - + self._executor, service_id, ServiceStatusEnum.SERVICESTATUS_ACTIVE + )) self._dag.add(service_config_key, service_pending_removal_key) return service_config_key - - + def compose_from_pathcompreply(self, pathcomp_reply : PathCompReply, is_delete : bool = False) -> None: t0 = time.time() include_service = self._service_remove if is_delete else self._service_create @@ -185,29 +189,32 @@ class TasksScheduler: t1 = time.time() LOGGER.debug('[compose_from_pathcompreply] elapsed_time: {:f} sec'.format(t1-t0)) - - - def check_service_for_media_channel (self,connections:ConnectionList,item)->Tuple[bool,bool]: - service=item - has_media_channel=False - has_optical_band=False - if (isinstance(item,ServiceId)): - service=self._executor.get_service(item) + + def check_service_for_media_channel( + self, connections : ConnectionList, item + )->Tuple[bool, bool]: + service = item + has_media_channel = False + has_optical_band = False + if isinstance(item, ServiceId): + service = self._executor.get_service(item) class_service_handler = None service_handler_settings = {} for connection in connections.connections: connection_uuid = connection.connection_id.connection_uuid.uuid if class_service_handler is None: - class_service_handler=self._executor.get_service_handler(connection, service,**service_handler_settings) - + class_service_handler = self._executor.get_service_handler( + connection, service, **service_handler_settings + ) if class_service_handler.check_media_channel(connection_uuid): - has_media_channel= True + has_media_channel = True else : - has_optical_band=True - - return (has_media_channel,has_optical_band) - - def compose_from_optical_service(self, service : Service,params:dict, is_delete : bool = False) -> None: + has_optical_band = True + return (has_media_channel, has_optical_band) + + def compose_from_optical_service( + self, service : Service, params : dict, is_delete : bool = False + ) -> None: t0 = time.time() include_service = self._optical_service_remove if is_delete else self._service_create include_connection = self._optical_connection_deconfigure if is_delete else self._connection_configure @@ -216,125 +223,103 @@ class TasksScheduler: explored_items = set() pending_items_to_explore = queue.Queue() pending_items_to_explore.put(service) - has_media_channel=None - has_optical_band=None - reply=None - code=0 - reply_not_allowed="DELETE_NOT_ALLOWED" + has_media_channel = None + has_optical_band = None + reply = None + code = 0 + reply_not_allowed = "DELETE_NOT_ALLOWED" while not pending_items_to_explore.empty(): try: item = pending_items_to_explore.get(block=False) - except queue.Empty: break - + if isinstance(item, Service): - str_item_key = grpc_message_to_json_string(item.service_id) if str_item_key in explored_items: continue connections = self._context_client.ListConnections(item.service_id) - has_media_channel,has_optical_band=self.check_service_for_media_channel(connections=connections,item=item.service_id) - + has_media_channel, has_optical_band = self.check_service_for_media_channel( + connections=connections, item=item.service_id + ) + if len(service.service_config.config_rules) > 0: - - - reply,code = delete_lightpath( - params['src'] - ,params ['dst'] - , params['bitrate'] - , params['ob_id'] - ,delete_band=not has_media_channel - , flow_id= params['flow_id'] - ) - - - if code == 400 and reply_not_allowed in reply : + reply, code = delete_lightpath( + params['src'], params ['dst'], params['bitrate'], params['ob_id'], + delete_band=not has_media_channel, flow_id= params['flow_id'] + ) + + if code == 400 and reply_not_allowed in reply: MSG = 'Deleteion for the service is not Allowed , Served Lightpaths is not empty' raise Exception(MSG) - LOGGER.info('entered') - include_service(item.service_id,has_media_channel=has_media_channel,has_optical_band=has_optical_band) + + include_service( + item.service_id, has_media_channel=has_media_channel, has_optical_band=has_optical_band + ) self._add_service_to_executor_cache(item) - - + for connection in connections.connections: - self._add_connection_to_executor_cache(connection) - pending_items_to_explore.put(connection) + self._add_connection_to_executor_cache(connection) + pending_items_to_explore.put(connection) explored_items.add(str_item_key) - elif isinstance(item, ServiceId): - - if code == 400 and reply_not_allowed in reply:break - + if code == 400 and reply_not_allowed in reply: break str_item_key = grpc_message_to_json_string(item) if str_item_key in explored_items: continue connections = self._context_client.ListConnections(item) - has_media_channel,has_optical_band=self.check_service_for_media_channel(connections=connections,item=item) - - - include_service(item,has_media_channel=has_media_channel,has_optical_band=has_optical_band) - - + has_media_channel, has_optical_band = self.check_service_for_media_channel( + connections=connections, item=item + ) + include_service( + item, has_media_channel=has_media_channel, has_optical_band=has_optical_band + ) self._executor.get_service(item) - + for connection in connections.connections: - self._add_connection_to_executor_cache(connection) pending_items_to_explore.put(connection) - - - - explored_items.add(str_item_key) elif isinstance(item, Connection): - - if code == 400 and reply_not_allowed in reply:break - str_item_key = grpc_message_to_json_string(item.connection_id) if str_item_key in explored_items: continue - - - connection_key = include_connection(item.connection_id, item.service_id,has_media_channel=has_media_channel,has_optical_band=has_optical_band) + connection_key = include_connection( + item.connection_id, item.service_id, has_media_channel=has_media_channel, + has_optical_band=has_optical_band + ) self._add_connection_to_executor_cache(connection) - - if include_service_config is not None : - connections_list = ConnectionList() - connections_list.connections.append(item) - - is_media_channel,_=self.check_service_for_media_channel(connections=connections_list,item=service) - - if has_optical_band and is_media_channel: - include_service_config(item.connection_id - , item.service_id - - ) - + if include_service_config is not None : + connections_list = ConnectionList() + connections_list.connections.append(item) + is_media_channel, _ = self.check_service_for_media_channel( + connections=connections_list, item=service + ) + if has_optical_band and is_media_channel: + include_service_config( + item.connection_id, item.service_id + ) self._executor.get_service(item.service_id) pending_items_to_explore.put(item.service_id) - - + for sub_service_id in item.sub_service_ids: - _,service_key_done = include_service(sub_service_id,has_media_channel=has_media_channel,has_optical_band=has_optical_band) + _,service_key_done = include_service( + sub_service_id, has_media_channel=has_media_channel, + has_optical_band=has_optical_band + ) self._executor.get_service(sub_service_id) self._dag.add(service_key_done, connection_key) pending_items_to_explore.put(sub_service_id) - - explored_items.add(str_item_key) - - else: MSG = 'Unsupported item {:s}({:s})' raise Exception(MSG.format(type(item).__name__, grpc_message_to_json_string(item))) - + t1 = time.time() LOGGER.debug('[compose_from_service] elapsed_time: {:f} sec'.format(t1-t0)) - def compose_from_service(self, service : Service, is_delete : bool = False) -> None: t0 = time.time() include_service = self._service_remove if is_delete else self._service_create @@ -357,12 +342,9 @@ class TasksScheduler: include_service(item.service_id) self._add_service_to_executor_cache(item) connections = self._context_client.ListConnections(item.service_id) - for connection in connections.connections: - self._add_connection_to_executor_cache(connection) pending_items_to_explore.put(connection) - explored_items.add(str_item_key) elif isinstance(item, ServiceId): @@ -375,7 +357,6 @@ class TasksScheduler: for connection in connections.connections: self._add_connection_to_executor_cache(connection) pending_items_to_explore.put(connection) - explored_items.add(str_item_key) elif isinstance(item, Connection): @@ -384,7 +365,6 @@ class TasksScheduler: connection_key = include_connection(item.connection_id, item.service_id) self._add_connection_to_executor_cache(connection) - self._executor.get_service(item.service_id) pending_items_to_explore.put(item.service_id) @@ -413,16 +393,20 @@ class TasksScheduler: self._add_connection_to_executor_cache(new_connection) service_updating_key = self._add_task_if_not_exists(Task_ServiceSetStatus( - self._executor, service.service_id, ServiceStatusEnum.SERVICESTATUS_UPDATING)) + self._executor, service.service_id, ServiceStatusEnum.SERVICESTATUS_UPDATING + )) old_connection_deconfigure_key = self._add_task_if_not_exists(Task_ConnectionDeconfigure( - self._executor, old_connection.connection_id)) + self._executor, old_connection.connection_id + )) new_connection_configure_key = self._add_task_if_not_exists(Task_ConnectionConfigure( - self._executor, new_connection.connection_id)) + self._executor, new_connection.connection_id + )) service_active_key = self._add_task_if_not_exists(Task_ServiceSetStatus( - self._executor, service.service_id, ServiceStatusEnum.SERVICESTATUS_ACTIVE)) + self._executor, service.service_id, ServiceStatusEnum.SERVICESTATUS_ACTIVE + )) # the old connection deconfiguration depends on service being in updating state self._dag.add(old_connection_deconfigure_key, service_updating_key) diff --git a/src/service/service/task_scheduler/tasks/Task_ConnectionConfigure.py b/src/service/service/task_scheduler/tasks/Task_ConnectionConfigure.py index f6c543c1ccb947eb01c3d5f5fb93c0504a77ca95..3f52f337ae163a6e8c78d873a58a291ecff4bd1a 100644 --- a/src/service/service/task_scheduler/tasks/Task_ConnectionConfigure.py +++ b/src/service/service/task_scheduler/tasks/Task_ConnectionConfigure.py @@ -12,8 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. +from typing import TYPE_CHECKING, Dict, Tuple +from common.DeviceTypes import DeviceTypeEnum from common.method_wrappers.ServiceExceptions import OperationFailedException -from common.proto.context_pb2 import ConnectionId +from common.proto.context_pb2 import ConnectionId, Device from common.tools.grpc.Tools import grpc_message_to_json_string from service.service.service_handler_api.Tools import check_errors_setendpoint from service.service.task_scheduler.TaskExecutor import TaskExecutor @@ -21,6 +23,9 @@ from service.service.tools.EndpointIdFormatters import endpointids_to_raw from service.service.tools.ObjectKeys import get_connection_key from ._Task import _Task +if TYPE_CHECKING: + from service.service.service_handler_api._ServiceHandler import _ServiceHandler + KEY_TEMPLATE = 'connection({connection_id:s}):configure' class Task_ConnectionConfigure(_Task): @@ -44,12 +49,24 @@ class Task_ConnectionConfigure(_Task): service = self._task_executor.get_service(connection.service_id) service_handler_settings = {} - service_handler = self._task_executor.get_service_handler(connection, service, **service_handler_settings) + service_handlers : Dict[DeviceTypeEnum, Tuple['_ServiceHandler', Dict[str, Device]]] = \ + self._task_executor.get_service_handlers(connection, service, **service_handler_settings) - endpointids_to_set = endpointids_to_raw(connection.path_hops_endpoint_ids) connection_uuid = connection.connection_id.connection_uuid.uuid - results_setendpoint = service_handler.SetEndpoint(endpointids_to_set, connection_uuid=connection_uuid) - errors = check_errors_setendpoint(endpointids_to_set, results_setendpoint) + endpointids_to_set = endpointids_to_raw(connection.path_hops_endpoint_ids) + + errors = list() + for _, (service_handler, connection_devices) in service_handlers.items(): + _endpointids_to_set = [ + (device_uuid, endpoint_uuid, topology_uuid) + for device_uuid, endpoint_uuid, topology_uuid in endpointids_to_set + if device_uuid in connection_devices + ] + results_setendpoint = service_handler.SetEndpoint( + _endpointids_to_set, connection_uuid=connection_uuid + ) + errors.extend(check_errors_setendpoint(endpointids_to_set, results_setendpoint)) + if len(errors) > 0: MSG = 'SetEndpoint for Connection({:s}) from Service({:s})' str_connection = grpc_message_to_json_string(connection) diff --git a/src/service/service/task_scheduler/tasks/Task_ConnectionDeconfigure.py b/src/service/service/task_scheduler/tasks/Task_ConnectionDeconfigure.py index 7b6b7951befbd6abd4d052ce5eec39d3398aa6e7..4ce774d208d3ea71e55482ea0653521cb7f1083a 100644 --- a/src/service/service/task_scheduler/tasks/Task_ConnectionDeconfigure.py +++ b/src/service/service/task_scheduler/tasks/Task_ConnectionDeconfigure.py @@ -12,8 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. +from typing import TYPE_CHECKING, Dict, Tuple +from common.DeviceTypes import DeviceTypeEnum from common.method_wrappers.ServiceExceptions import OperationFailedException -from common.proto.context_pb2 import ConnectionId +from common.proto.context_pb2 import ConnectionId, Device from common.tools.grpc.Tools import grpc_message_to_json_string from service.service.service_handler_api.Tools import check_errors_deleteendpoint from service.service.task_scheduler.TaskExecutor import TaskExecutor @@ -21,6 +23,9 @@ from service.service.tools.EndpointIdFormatters import endpointids_to_raw from service.service.tools.ObjectKeys import get_connection_key from ._Task import _Task +if TYPE_CHECKING: + from service.service.service_handler_api._ServiceHandler import _ServiceHandler + KEY_TEMPLATE = 'connection({connection_id:s}):deconfigure' class Task_ConnectionDeconfigure(_Task): @@ -44,12 +49,24 @@ class Task_ConnectionDeconfigure(_Task): service = self._task_executor.get_service(connection.service_id) service_handler_settings = {} - service_handler = self._task_executor.get_service_handler(connection, service, **service_handler_settings) + service_handlers : Dict[DeviceTypeEnum, Tuple['_ServiceHandler', Dict[str, Device]]] = \ + self._task_executor.get_service_handlers(connection, service, **service_handler_settings) - endpointids_to_delete = endpointids_to_raw(connection.path_hops_endpoint_ids) connection_uuid = connection.connection_id.connection_uuid.uuid - results_deleteendpoint = service_handler.DeleteEndpoint(endpointids_to_delete, connection_uuid=connection_uuid) - errors = check_errors_deleteendpoint(endpointids_to_delete, results_deleteendpoint) + endpointids_to_delete = endpointids_to_raw(connection.path_hops_endpoint_ids) + + errors = list() + for _, (service_handler, connection_devices) in service_handlers.items(): + _endpointids_to_delete = [ + (device_uuid, endpoint_uuid, topology_uuid) + for device_uuid, endpoint_uuid, topology_uuid in endpointids_to_delete + if device_uuid in connection_devices + ] + results_deleteendpoint = service_handler.DeleteEndpoint( + _endpointids_to_delete, connection_uuid=connection_uuid + ) + errors.extend(check_errors_deleteendpoint(endpointids_to_delete, results_deleteendpoint)) + if len(errors) > 0: MSG = 'DeleteEndpoint for Connection({:s}) from Service({:s})' str_connection = grpc_message_to_json_string(connection) diff --git a/src/service/service/task_scheduler/tasks/Task_OpticalConnectionDeconfigure.py b/src/service/service/task_scheduler/tasks/Task_OpticalConnectionDeconfigure.py index 4e0d2185dcf82217e2567869154868a405ba1452..b1afdeef19d6526d6f52b05924b5b77a8049da8f 100644 --- a/src/service/service/task_scheduler/tasks/Task_OpticalConnectionDeconfigure.py +++ b/src/service/service/task_scheduler/tasks/Task_OpticalConnectionDeconfigure.py @@ -1,4 +1,4 @@ -# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) +# Copyright 2022-2024 ETSI OSG/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. @@ -24,10 +24,13 @@ from ._Task import _Task KEY_TEMPLATE = 'optical_connection({connection_id:s}):deconfigure' class Task_OpticalConnectionDeconfigure(_Task): - def __init__(self, task_executor : TaskExecutor, connection_id : ConnectionId,has_media_channel:bool) -> None: + def __init__( + self, task_executor : TaskExecutor, connection_id : ConnectionId, + has_media_channel : bool + ) -> None: super().__init__(task_executor) self._connection_id = connection_id - self._has_media_channel=has_media_channel + self._has_media_channel = has_media_channel @property def connection_id(self) -> ConnectionId: return self._connection_id @@ -43,14 +46,14 @@ class Task_OpticalConnectionDeconfigure(_Task): def execute(self) -> None: connection = self._task_executor.get_connection(self._connection_id) service = self._task_executor.get_service(connection.service_id) - errors=[] + errors = [] service_handler_settings = {} service_handler = self._task_executor.get_service_handler(connection, service, **service_handler_settings) endpointids_to_delete = endpointids_to_raw(connection.path_hops_endpoint_ids) connection_uuid = connection.connection_id.connection_uuid.uuid if self._has_media_channel: - is_media_channel= service_handler.check_media_channel(connection_uuid) + is_media_channel = service_handler.check_media_channel(connection_uuid) if is_media_channel: results_deleteendpoint = service_handler.DeleteEndpoint(endpointids_to_delete, connection_uuid=connection_uuid) errors = check_errors_deleteendpoint(endpointids_to_delete, results_deleteendpoint) @@ -61,8 +64,7 @@ class Task_OpticalConnectionDeconfigure(_Task): raise OperationFailedException(MSG.format(str_connection, str_service), extra_details=errors) if is_media_channel: self._task_executor.delete_connection(self._connection_id) - else : - + else: results_deleteendpoint = service_handler.DeleteEndpoint(endpointids_to_delete, connection_uuid=connection_uuid) errors = check_errors_deleteendpoint(endpointids_to_delete, results_deleteendpoint) if len(errors) > 0: @@ -70,4 +72,4 @@ class Task_OpticalConnectionDeconfigure(_Task): str_connection = grpc_message_to_json_string(connection) str_service = grpc_message_to_json_string(service) raise OperationFailedException(MSG.format(str_connection, str_service), extra_details=errors) - self._task_executor.delete_connection(self._connection_id) \ No newline at end of file + self._task_executor.delete_connection(self._connection_id) diff --git a/src/service/service/task_scheduler/tasks/Task_OpticalServiceConfigDelete.py b/src/service/service/task_scheduler/tasks/Task_OpticalServiceConfigDelete.py index 3b69f7333b63c63d487e03da22f56e376e6d6aa7..4a21d246e8dfcce4f828553df68169a2bbada160 100644 --- a/src/service/service/task_scheduler/tasks/Task_OpticalServiceConfigDelete.py +++ b/src/service/service/task_scheduler/tasks/Task_OpticalServiceConfigDelete.py @@ -1,4 +1,4 @@ -# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) +# Copyright 2022-2024 ETSI OSG/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. @@ -16,17 +16,16 @@ from common.proto.context_pb2 import ServiceId , ConnectionId from service.service.task_scheduler.TaskExecutor import TaskExecutor from service.service.tools.ObjectKeys import get_service_key from ._Task import _Task -import logging KEY_TEMPLATE = 'optical_service({service_id:s})_Config:delete' class Task_OpticalServiceConfigDelete(_Task): - def __init__(self, task_executor : TaskExecutor - ,connection_id:ConnectionId - , service_id : ServiceId - ) -> None: + def __init__( + self, task_executor : TaskExecutor, connection_id : ConnectionId, + service_id : ServiceId + ) -> None: super().__init__(task_executor) - self._connection_id=connection_id + self._connection_id = connection_id self._service_id = service_id @property @@ -41,7 +40,4 @@ class Task_OpticalServiceConfigDelete(_Task): def key(self) -> str: return self.build_key(self._service_id) def execute(self) -> None: - - - - self._task_executor.delete_setting(self._service_id,'/settings','value') + self._task_executor.delete_setting(self._service_id, '/settings', 'value') diff --git a/src/service/service/task_scheduler/tasks/Task_OpticalServiceDelete.py b/src/service/service/task_scheduler/tasks/Task_OpticalServiceDelete.py index b45830dc483520d833cae3f1e76d6c127a929036..536d954957ebf1f2d294b9bc435cae7ded7c7531 100644 --- a/src/service/service/task_scheduler/tasks/Task_OpticalServiceDelete.py +++ b/src/service/service/task_scheduler/tasks/Task_OpticalServiceDelete.py @@ -1,4 +1,4 @@ -# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) +# Copyright 2022-2024 ETSI OSG/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. @@ -20,11 +20,14 @@ from ._Task import _Task KEY_TEMPLATE = 'optical_service({service_id:s}):delete' class Task_OpticalServiceDelete(_Task): - def __init__(self, task_executor : TaskExecutor, service_id : ServiceId,has_media_channel:bool,has_optical_band:bool) -> None: + def __init__( + self, task_executor : TaskExecutor, service_id : ServiceId, + has_media_channel : bool, has_optical_band : bool + ) -> None: super().__init__(task_executor) self._service_id = service_id - self._has_media_channel=has_media_channel - self._has_optical_band=has_optical_band + self._has_media_channel = has_media_channel + self._has_optical_band = has_optical_band @property def service_id(self) -> ServiceId: return self._service_id @@ -39,4 +42,4 @@ class Task_OpticalServiceDelete(_Task): def execute(self) -> None: if not self._has_media_channel or not self._has_optical_band: - self._task_executor.delete_service(self._service_id) + self._task_executor.delete_service(self._service_id) diff --git a/src/service/service/task_scheduler/tasks/Task_ServiceDelete.py b/src/service/service/task_scheduler/tasks/Task_ServiceDelete.py index dc2ea15928df0081c0655b67fe93c939781c423b..20928f1771d26f810f59ef84a9d1e5471512542b 100644 --- a/src/service/service/task_scheduler/tasks/Task_ServiceDelete.py +++ b/src/service/service/task_scheduler/tasks/Task_ServiceDelete.py @@ -23,7 +23,6 @@ class Task_ServiceDelete(_Task): def __init__(self, task_executor : TaskExecutor, service_id : ServiceId) -> None: super().__init__(task_executor) self._service_id = service_id - @property def service_id(self) -> ServiceId: return self._service_id @@ -37,5 +36,4 @@ class Task_ServiceDelete(_Task): def key(self) -> str: return self.build_key(self._service_id) def execute(self) -> None: - self._task_executor.delete_service(self._service_id) diff --git a/src/service/service/tools/ObjectKeys.py b/src/service/service/tools/ObjectKeys.py index 3c611b7726d787bef64488d2be359a5340a9aacd..f67cb02e143b78127484d6644a7fdd8c9c71e29c 100644 --- a/src/service/service/tools/ObjectKeys.py +++ b/src/service/service/tools/ObjectKeys.py @@ -13,7 +13,6 @@ # limitations under the License. from common.proto.context_pb2 import ConnectionId, DeviceId, ServiceId -import logging from common.proto.qkd_app_pb2 import AppId def get_connection_key(connection_id : ConnectionId) -> str: @@ -23,11 +22,10 @@ def get_device_key(device_id : DeviceId) -> str: return device_id.device_uuid.uuid def get_service_key(service_id : ServiceId) -> str: - context_uuid = service_id.context_id.context_uuid.uuid service_uuid = service_id.service_uuid.uuid return '{:s}/{:s}'.format(context_uuid, service_uuid) -def get_app_key(app_id : AppId) -> str: +def get_qkd_app_key(app_id: AppId) -> str: return app_id.app_uuid.uuid diff --git a/src/service/service/tools/OpticalTools.py b/src/service/service/tools/OpticalTools.py index 52bda1d5ef4fb1a89dac91830ef876ed4059c8b3..f62c60ac9d256e277478f1703ed75e992961a4da 100644 --- a/src/service/service/tools/OpticalTools.py +++ b/src/service/service/tools/OpticalTools.py @@ -65,13 +65,6 @@ def get_optical_controller_base_url() -> str: log.debug('Optical Controller: base_url={:s}'.format(str(base_url))) return base_url -opticalcontrollers_url = find_environment_variables([ - VAR_NAME_OPTICAL_CTRL_HOST, - VAR_NAME_OPTICAL_CTRL_PORT, -]) -OPTICAL_IP = opticalcontrollers_url.get(VAR_NAME_OPTICAL_CTRL_HOST) -OPTICAL_PORT = opticalcontrollers_url.get(VAR_NAME_OPTICAL_CTRL_PORT) - def get_uuids_from_names(devices: List[Device], device_name: str, port_name: str): device_uuid = "" @@ -98,6 +91,7 @@ def get_names_from_uuids(devices: List[Device], device_uuid: str, port_uuid: str return device_name, port_name return "", "" + def get_device_name_from_uuid(devices: List[Device], device_uuid: str): device_name = "" @@ -107,18 +101,17 @@ def get_device_name_from_uuid(devices: List[Device], device_uuid: str): return device_name return "" -def refresh_opticalcontroller (topology_id:dict): - topo_id_str= topology_id["topology_uuid"]["uuid"] - cxt_id_str=topology_id["context_id"]["context_uuid"]["uuid"] +def refresh_opticalcontroller(topology_id : dict): + topo_id_str = topology_id["topology_uuid"]["uuid"] + cxt_id_str = topology_id["context_id"]["context_uuid"]["uuid"] headers = {"Content-Type": "application/json"} - urlx = f"http://{OPTICAL_IP}:{OPTICAL_PORT}/OpticalTFS/GetTopology/{cxt_id_str}/{topo_id_str}" - + base_url = get_optical_controller_base_url() + urlx = "{:s}/GetTopology/{:s}/{:s}".format(base_url, cxt_id_str, topo_id_str) res = requests.get(urlx, headers=headers) + if res is not None: + log.debug(f"DELETELIGHTPATH Response {res}") - if (res is not None ): - - logging.info(f"res from opticalcontroler {res.json()}") def add_lightpath(src, dst, bitrate, bidir, ob_band) -> str: if not TESTING: @@ -159,31 +152,29 @@ def get_optical_band(idx) -> str: return optical_band_uni_txt -def delete_lightpath( src, dst, bitrate, ob_id,delete_band,flow_id=None) -> str: +def delete_lightpath( src, dst, bitrate, ob_id, delete_band, flow_id=None) -> str: reply = "200" - delete_band=1 if delete_band else 0 + delete_band = 1 if delete_band else 0 + base_url = get_optical_controller_base_url() if not TESTING: - urlx=None if flow_id is not None: - urlx = "http://{}:{}/OpticalTFS/DelFlexLightpath/{}/{}/{}/{}/{}/{}".format(OPTICAL_IP, OPTICAL_PORT, src, dst, bitrate, ob_id,delete_band,flow_id) + urlx = "{:s}/DelFlexLightpath/{}/{}/{}/{}/{}".format(base_url, src, dst, bitrate, ob_id, flow_id) else : - urlx = "http://{}:{}/OpticalTFS/DelOpticalBand/{}/{}/{}/{}".format(OPTICAL_IP, OPTICAL_PORT, src, dst, ob_id,delete_band) - + urlx = "{:s}/DelOpticalBand/{}/{}/{}".format(base_url, src, dst, ob_id) headers = {"Content-Type": "application/json"} r = requests.delete(urlx, headers=headers) reply = r.text code = r.status_code - logging.info(f"delete_lightpath reply {reply}") - return (reply,code) + return (reply, code) -def DelFlexLightpath (flow_id,src,dst,bitrate,o_band_id): +def DelFlexLightpath (flow_id, src, dst, bitrate, o_band_id): reply = "200" + base_url = get_optical_controller_base_url() if not TESTING: - urlx = "http://{}:{}/OpticalTFS/DelFlexLightpath/{}/{}/{}/{}/{}".format(OPTICAL_IP, OPTICAL_PORT, flow_id, src, dst, bitrate,o_band_id) - + urlx = "{:s}/DelFlexLightpath/{}/{}/{}/{}/{}".format(base_url, flow_id, src, dst, bitrate, o_band_id) headers = {"Content-Type": "application/json"} r = requests.delete(urlx, headers=headers) - reply = r.text + reply = r.text return reply def get_lightpaths() -> str: @@ -195,20 +186,24 @@ def get_lightpaths() -> str: reply = r.text return reply - def adapt_reply(devices, service, reply_json, context_id, topology_id, optical_band_txt) -> PathCompReply: opt_reply = PathCompReply() - topo = TopologyId(context_id=ContextId(context_uuid=Uuid(uuid=context_id)),topology_uuid=Uuid(uuid=topology_id)) + topo = TopologyId( + context_id=ContextId(context_uuid=Uuid(uuid=context_id)), + topology_uuid=Uuid(uuid=topology_id) + ) #add optical band connection first rules_ob= [] ob_id = 0 connection_ob=None - log.info(f"BLACK {reply_json}\n {optical_band_txt}") + r = reply_json if "parent_opt_band" in r.keys(): ob_id = r["parent_opt_band"] if "bidir" in r.keys(): bidir_f = r["bidir"] + else: + bidir_f = False if optical_band_txt != "": ob_json = json.loads(optical_band_txt) ob = ob_json @@ -231,7 +226,15 @@ def adapt_reply(devices, service, reply_json, context_id, topology_id, optical_b #+1 is added to avoid overlap in the WSS of MGONs lf = int(int(freq)-int(bx/2))+1 uf = int(int(freq)+int(bx/2)) - val_ob = {"band_type": band_type, "low-freq": lf, "up-freq": uf, "frequency": freq, "band": bx, "ob_id": ob_id, "bidir": bidir_f} + val_ob = { + "band_type" : band_type, + "low-freq" : lf, + "up-freq" : uf, + "frequency" : freq, + "band" : bx, + "ob_id" : ob_id, + "bidir" : bidir_f + } rules_ob.append(ConfigRule_Custom(resource_key="/settings-ob_{}".format(uuuid_x), resource_value=json.dumps(val_ob))) bidir_ob = ob["bidir"] for devxb in ob["flows"].keys(): @@ -319,12 +322,13 @@ def adapt_reply(devices, service, reply_json, context_id, topology_id, optical_b end_point = EndPointId(topology_id=topo, device_id=DeviceId(device_uuid=Uuid(uuid=d)), endpoint_uuid=Uuid(uuid=p)) connection_f.path_hops_endpoint_ids.add().CopyFrom(end_point) else: - log.info("no map device port for device {} port {}".format(devx, out_end_point_b)) + log.info("no map device port for device {} port {}".format(devx, out_end_point_b)) + #check that list of endpoints is not empty if connection_ob is not None and len(connection_ob.path_hops_endpoint_ids) == 0: log.debug("deleting empty optical-band connection") opt_reply.connections.remove(connection_ob) - + #inizialize custom optical parameters band = r["band"] if "band" in r else None op_mode = r["op-mode"] if "op-mode" in r else None @@ -347,19 +351,18 @@ def adapt_reply(devices, service, reply_json, context_id, topology_id, optical_b service.service_config.config_rules.add().CopyFrom(rule) if len(rules_ob) > 0: - for rulex in rules_ob: - rule_ob = ConfigRule(action=ConfigActionEnum.CONFIGACTION_SET, custom=rulex) - service.service_config.config_rules.add().CopyFrom(rule_ob) - + for rulex in rules_ob: + rule_ob = ConfigRule(action=ConfigActionEnum.CONFIGACTION_SET, custom=rulex) + service.service_config.config_rules.add().CopyFrom(rule_ob) + opt_reply.services.add().CopyFrom(service) - - return opt_reply + return opt_reply -def add_service_to_reply(reply : PathCompReply, service : Service)-> Service: +def add_service_to_reply(reply : PathCompReply, service : Service) -> Service: service_x = reply.services.add() service_x.CopyFrom(service) return service_x - -def add_connection_to_reply(reply : PathCompReply)-> Connection: + +def add_connection_to_reply(reply : PathCompReply) -> Connection: conn = reply.connections.add() return conn diff --git a/src/service/service/tools/object_uuid.py b/src/service/service/tools/object_uuid.py index a5d905d109d3dfc0e48b82cf2b1f78def6e07570..cbcbc71b9b9d4edeb31858e3c22cd0af508210b9 100644 --- a/src/service/service/tools/object_uuid.py +++ b/src/service/service/tools/object_uuid.py @@ -1,10 +1,30 @@ +# Copyright 2022-2024 ETSI OSG/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. + from common.method_wrappers.ServiceExceptions import InvalidArgumentsException from typing import Optional, Union -from uuid import UUID, uuid4, uuid5 +from uuid import UUID, uuid5 from common.proto.context_pb2 import DeviceId - +# Generate a UUIDv5-like from the SHA-1 of "TFS" and no namespace to be used as the NAMESPACE for all +# the context UUIDs generated. For efficiency purposes, the UUID is hardcoded; however, it is produced +# using the following code: +# from hashlib import sha1 +# from uuid import UUID +# hash = sha1(bytes('TFS', 'utf-8')).digest() +# NAMESPACE_TFS = UUID(bytes=hash[:16], version=5) NAMESPACE_TFS = UUID('200e3a1f-2223-534f-a100-758e29c37f40') def get_uuid_from_string(str_uuid_or_name : Union[str, UUID], prefix_for_name : Optional[str] = None) -> str: @@ -22,13 +42,12 @@ def get_uuid_from_string(str_uuid_or_name : Union[str, UUID], prefix_for_name : str_uuid_or_name = '{:s}/{:s}'.format(prefix_for_name, str_uuid_or_name) return str(uuid5(NAMESPACE_TFS, str_uuid_or_name)) - -def opticalconfig_get_uuid ( device_id: DeviceId) -> str : +def opticalconfig_get_uuid(device_id: DeviceId) -> str: device_uuid = device_id.device_uuid.uuid - if (len(device_uuid)>0): + if len(device_uuid) > 0: return get_uuid_from_string(f"{device_uuid}_opticalconfig") raise InvalidArgumentsException([ ('DeviceId ', device_id), - ], extra_details=['device_id is required to produce a OpticalConfig UUID']) \ No newline at end of file + ], extra_details=['device_id is required to produce a OpticalConfig UUID']) diff --git a/src/service/tests/test_l3nm_gnmi_static_rule_gen/MockServiceHandler.py b/src/service/tests/test_l3nm_gnmi_static_rule_gen/MockServiceHandler.py new file mode 100644 index 0000000000000000000000000000000000000000..9b3f76566c9d8e5b2c8bdfb05f4b2448c29b7eae --- /dev/null +++ b/src/service/tests/test_l3nm_gnmi_static_rule_gen/MockServiceHandler.py @@ -0,0 +1,160 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import json, logging +from typing import Any, Dict, List, Optional, Tuple, Union +from common.proto.context_pb2 import ConfigRule, DeviceId, Service +from common.tools.object_factory.Device import json_device_id +from common.type_checkers.Checkers import chk_type +from service.service.service_handler_api._ServiceHandler import _ServiceHandler +from service.service.service_handler_api.SettingsHandler import SettingsHandler +from service.service.service_handler_api.Tools import get_device_endpoint_uuids, get_endpoint_matching +from .MockTaskExecutor import MockTaskExecutor +from service.service.service_handlers.l3nm_gnmi_openconfig.ConfigRuleComposer import ConfigRuleComposer +from service.service.service_handlers.l3nm_gnmi_openconfig.StaticRouteGenerator import StaticRouteGenerator + +LOGGER = logging.getLogger(__name__) + +class MockServiceHandler(_ServiceHandler): + def __init__( # pylint: disable=super-init-not-called + self, service : Service, task_executor : MockTaskExecutor, **settings + ) -> None: + self.__service = service + self.__task_executor = task_executor + self.__settings_handler = SettingsHandler(service.service_config, **settings) + self.__config_rule_composer = ConfigRuleComposer() + self.__static_route_generator = StaticRouteGenerator(self.__config_rule_composer) + self.__endpoint_map : Dict[Tuple[str, str], Tuple[str, str]] = dict() + + def _compose_config_rules(self, endpoints : List[Tuple[str, str, Optional[str]]]) -> None: + if len(endpoints) % 2 != 0: raise Exception('Number of endpoints should be even') + + service_settings = self.__settings_handler.get_service_settings() + self.__config_rule_composer.configure(self.__service, service_settings) + + for endpoint in endpoints: + device_uuid, endpoint_uuid = get_device_endpoint_uuids(endpoint) + + device_obj = self.__task_executor.get_device(DeviceId(**json_device_id(device_uuid))) + device_settings = self.__settings_handler.get_device_settings(device_obj) + _device = self.__config_rule_composer.get_device(device_obj.name) + _device.configure(device_obj, device_settings) + + endpoint_obj = get_endpoint_matching(device_obj, endpoint_uuid) + endpoint_settings = self.__settings_handler.get_endpoint_settings(device_obj, endpoint_obj) + _endpoint = _device.get_endpoint(endpoint_obj.name) + _endpoint.configure(endpoint_obj, endpoint_settings) + + self.__endpoint_map[(device_uuid, endpoint_uuid)] = (device_obj.name, endpoint_obj.name) + + self.__static_route_generator.compose(endpoints) + + def _do_configurations( + self, config_rules_per_device : Dict[str, List[Dict]], endpoints : List[Tuple[str, str, Optional[str]]], + delete : bool = False + ) -> List[Union[bool, Exception]]: + # Configuration is done atomically on each device, all OK / all KO per device + results_per_device = dict() + for device_name,json_config_rules in config_rules_per_device.items(): + try: + device_obj = self.__config_rule_composer.get_device(device_name).objekt + if len(json_config_rules) == 0: continue + del device_obj.device_config.config_rules[:] + for json_config_rule in json_config_rules: + device_obj.device_config.config_rules.append(ConfigRule(**json_config_rule)) + self.__task_executor.configure_device(device_obj) + results_per_device[device_name] = True + except Exception as e: # pylint: disable=broad-exception-caught + verb = 'deconfigure' if delete else 'configure' + MSG = 'Unable to {:s} Device({:s}) : ConfigRules({:s})' + LOGGER.exception(MSG.format(verb, str(device_name), str(json_config_rules))) + results_per_device[device_name] = e + + results = [] + for endpoint in endpoints: + device_uuid, endpoint_uuid = get_device_endpoint_uuids(endpoint) + device_name, _ = self.__endpoint_map[(device_uuid, endpoint_uuid)] + if device_name not in results_per_device: continue + results.append(results_per_device[device_name]) + return results + + def SetEndpoint( + self, endpoints : List[Tuple[str, str, Optional[str]]], connection_uuid : Optional[str] = None + ) -> List[Union[bool, Exception]]: + chk_type('endpoints', endpoints, list) + if len(endpoints) == 0: return [] + self._compose_config_rules(endpoints) + config_rules_per_device = self.__config_rule_composer.get_config_rules(delete=False) + LOGGER.debug('config_rules_per_device={:s}'.format(str(config_rules_per_device))) + results = self._do_configurations(config_rules_per_device, endpoints) + LOGGER.debug('results={:s}'.format(str(results))) + return results + + def DeleteEndpoint( + self, endpoints : List[Tuple[str, str, Optional[str]]], connection_uuid : Optional[str] = None + ) -> List[Union[bool, Exception]]: + chk_type('endpoints', endpoints, list) + if len(endpoints) == 0: return [] + self._compose_config_rules(endpoints) + config_rules_per_device = self.__config_rule_composer.get_config_rules(delete=True) + LOGGER.debug('config_rules_per_device={:s}'.format(str(config_rules_per_device))) + results = self._do_configurations(config_rules_per_device, endpoints, delete=True) + LOGGER.debug('results={:s}'.format(str(results))) + return results + + def SetConstraint(self, constraints : List[Tuple[str, Any]]) -> List[Union[bool, Exception]]: + chk_type('constraints', constraints, list) + if len(constraints) == 0: return [] + + msg = '[SetConstraint] Method not implemented. Constraints({:s}) are being ignored.' + LOGGER.warning(msg.format(str(constraints))) + return [True for _ in range(len(constraints))] + + def DeleteConstraint(self, constraints : List[Tuple[str, Any]]) -> List[Union[bool, Exception]]: + chk_type('constraints', constraints, list) + if len(constraints) == 0: return [] + + msg = '[DeleteConstraint] Method not implemented. Constraints({:s}) are being ignored.' + LOGGER.warning(msg.format(str(constraints))) + return [True for _ in range(len(constraints))] + + def SetConfig(self, resources : List[Tuple[str, Any]]) -> List[Union[bool, Exception]]: + chk_type('resources', resources, list) + if len(resources) == 0: return [] + + results = [] + for resource in resources: + try: + resource_value = json.loads(resource[1]) + self.__settings_handler.set(resource[0], resource_value) + results.append(True) + except Exception as e: # pylint: disable=broad-except + LOGGER.exception('Unable to SetConfig({:s})'.format(str(resource))) + results.append(e) + + return results + + def DeleteConfig(self, resources : List[Tuple[str, Any]]) -> List[Union[bool, Exception]]: + chk_type('resources', resources, list) + if len(resources) == 0: return [] + + results = [] + for resource in resources: + try: + self.__settings_handler.delete(resource[0]) + except Exception as e: # pylint: disable=broad-except + LOGGER.exception('Unable to DeleteConfig({:s})'.format(str(resource))) + results.append(e) + + return results diff --git a/src/service/tests/test_l3nm_gnmi_static_rule_gen/MockTaskExecutor.py b/src/service/tests/test_l3nm_gnmi_static_rule_gen/MockTaskExecutor.py new file mode 100644 index 0000000000000000000000000000000000000000..765b04477efdf06bfef934e96329887e898aa1b4 --- /dev/null +++ b/src/service/tests/test_l3nm_gnmi_static_rule_gen/MockTaskExecutor.py @@ -0,0 +1,57 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import logging +from enum import Enum +from typing import Dict, Optional, Union +from common.method_wrappers.ServiceExceptions import NotFoundException +from common.proto.context_pb2 import Connection, Device, DeviceId, Service +from service.service.tools.ObjectKeys import get_device_key + +LOGGER = logging.getLogger(__name__) + +CacheableObject = Union[Connection, Device, Service] + +class CacheableObjectType(Enum): + CONNECTION = 'connection' + DEVICE = 'device' + SERVICE = 'service' + +class MockTaskExecutor: + def __init__(self) -> None: + self._grpc_objects_cache : Dict[str, CacheableObject] = dict() + + # ----- Common methods --------------------------------------------------------------------------------------------- + + def _load_grpc_object(self, object_type : CacheableObjectType, object_key : str) -> Optional[CacheableObject]: + object_key = '{:s}:{:s}'.format(object_type.value, object_key) + return self._grpc_objects_cache.get(object_key) + + def _store_grpc_object(self, object_type : CacheableObjectType, object_key : str, grpc_object) -> None: + object_key = '{:s}:{:s}'.format(object_type.value, object_key) + self._grpc_objects_cache[object_key] = grpc_object + + def _delete_grpc_object(self, object_type : CacheableObjectType, object_key : str) -> None: + object_key = '{:s}:{:s}'.format(object_type.value, object_key) + self._grpc_objects_cache.pop(object_key, None) + + def get_device(self, device_id : DeviceId) -> Device: + device_key = get_device_key(device_id) + device = self._load_grpc_object(CacheableObjectType.DEVICE, device_key) + if device is None: raise NotFoundException('Device', device_key) + return device + + def configure_device(self, device : Device) -> None: + device_key = get_device_key(device.device_id) + self._store_grpc_object(CacheableObjectType.DEVICE, device_key, device) diff --git a/src/service/tests/test_l3nm_gnmi_static_rule_gen/__init__.py b/src/service/tests/test_l3nm_gnmi_static_rule_gen/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..3ee6f7071f145e06c3aeaefc09a43ccd88e619e3 --- /dev/null +++ b/src/service/tests/test_l3nm_gnmi_static_rule_gen/__init__.py @@ -0,0 +1,14 @@ +# Copyright 2022-2024 ETSI OSG/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. + diff --git a/src/service/tests/test_l3nm_gnmi_static_rule_gen/test_unitary.py b/src/service/tests/test_l3nm_gnmi_static_rule_gen/test_unitary.py new file mode 100644 index 0000000000000000000000000000000000000000..43709b036b8158ddfc59453aa798fa2d303906e0 --- /dev/null +++ b/src/service/tests/test_l3nm_gnmi_static_rule_gen/test_unitary.py @@ -0,0 +1,147 @@ +# Copyright 2022-2024 ETSI OSG/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. + +# Run with: +# $ PYTHONPATH=./src python -m service.tests.test_l3nm_gnmi_static_rule_gen.test_unitary + +import logging +from typing import List, Optional, Tuple +from common.DeviceTypes import DeviceTypeEnum +from common.proto.context_pb2 import Device, DeviceOperationalStatusEnum, Service +from common.tools.object_factory.ConfigRule import json_config_rule_set +from common.tools.object_factory.Device import json_device, json_device_id +from common.tools.object_factory.EndPoint import json_endpoint, json_endpoint_id +from common.tools.object_factory.Service import json_service_l3nm_planned +from .MockServiceHandler import MockServiceHandler +from .MockTaskExecutor import CacheableObjectType, MockTaskExecutor + +logging.basicConfig(level=logging.DEBUG) +LOGGER = logging.getLogger(__name__) + +SERVICE_DC1_DC2 = Service(**json_service_l3nm_planned( + 'svc-dc1-dc2-uuid', + endpoint_ids=[ + json_endpoint_id(json_device_id('DC1'), 'int'), + json_endpoint_id(json_device_id('DC2'), 'int'), + ], + config_rules=[ + json_config_rule_set('/device[DC1]/endpoint[eth0]/settings', { + 'ipv4_address': '192.168.10.10', 'ipv4_prefix_len': 24, 'sub_interface_index': 0 + }), + json_config_rule_set('/device[R1]/endpoint[1/2]/settings', { + 'ipv4_address': '10.0.1.1', 'ipv4_prefix_len': 24, 'sub_interface_index': 0 + }), + #json_config_rule_set('/device[R2]/endpoint[1/2]/settings', { + # 'ipv4_address': '10.0.2.1', 'ipv4_prefix_len': 24, 'sub_interface_index': 0 + #}), + json_config_rule_set('/device[DC2]/endpoint[eth0]/settings', { + 'ipv4_address': '192.168.20.10', 'ipv4_prefix_len': 24, 'sub_interface_index': 0 + }), + ] +)) + +SERVICE_DC1_DC3 = Service(**json_service_l3nm_planned( + 'svc-dc1-dc3-uuid', + endpoint_ids=[ + json_endpoint_id(json_device_id('DC1'), 'int'), + json_endpoint_id(json_device_id('DC3'), 'int'), + ], + config_rules=[ + json_config_rule_set('/device[DC1]/endpoint[eth0]/settings', { + 'ipv4_address': '192.168.10.10', 'ipv4_prefix_len': 24, 'sub_interface_index': 0 + }), + #json_config_rule_set('/device[R1]/endpoint[1/2]/settings', { + # 'ipv4_address': '10.0.1.1', 'ipv4_prefix_len': 24, 'sub_interface_index': 0 + #}), + json_config_rule_set('/device[R4]/endpoint[1/1]/settings', { + 'ipv4_address': '10.0.4.1', 'ipv4_prefix_len': 24, 'sub_interface_index': 0 + }), + json_config_rule_set('/device[DC3]/endpoint[eth0]/settings', { + 'ipv4_address': '192.168.30.10', 'ipv4_prefix_len': 24, 'sub_interface_index': 0 + }), + ] +)) + +CONNECTION_ENDPOINTS_DC1_DC2 : List[Tuple[str, str, Optional[str]]] = [ + ('DC1', 'int', None), ('DC1', 'eth0', None), + ('R1', '1/1', None), ('R1', '1/2', None), + ('R2', '1/1', None), ('R2', '1/2', None), + ('R3', '1/1', None), ('R3', '1/2', None), + ('DC2', 'eth0', None), ('DC2', 'int', None), +] + +CONNECTION_ENDPOINTS_DC1_DC3 : List[Tuple[str, str, Optional[str]]] = [ + ('DC1', 'int', None), ('DC1', 'eth0', None), + ('R1', '1/1', None), ('R1', '1/2', None), + ('R2', '1/1', None), ('R2', '1/3', None), + ('R4', '1/1', None), ('R4', '1/2', None), + ('DC3', 'eth0', None), ('DC3', 'int', None), +] + +def test_l3nm_gnmi_static_rule_gen() -> None: + dev_op_st_enabled = DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_ENABLED + + mock_task_executor = MockTaskExecutor() + mock_task_executor._store_grpc_object(CacheableObjectType.DEVICE, 'DC1', Device(**json_device( + 'uuid-DC1', DeviceTypeEnum.EMULATED_DATACENTER.value, dev_op_st_enabled, name='DC1', endpoints=[ + json_endpoint(json_device_id('uuid-DC1'), 'uuid-int', 'packet', name='int' ), + json_endpoint(json_device_id('uuid-DC1'), 'uuid-eth0', 'packet', name='eth0'), + ] + ))) + mock_task_executor._store_grpc_object(CacheableObjectType.DEVICE, 'DC2', Device(**json_device( + 'uuid-DC2', DeviceTypeEnum.EMULATED_DATACENTER.value, dev_op_st_enabled, name='DC2', endpoints=[ + json_endpoint(json_device_id('uuid-DC2'), 'uuid-int', 'packet', name='int' ), + json_endpoint(json_device_id('uuid-DC2'), 'uuid-eth0', 'packet', name='eth0'), + ] + ))) + mock_task_executor._store_grpc_object(CacheableObjectType.DEVICE, 'DC3', Device(**json_device( + 'uuid-DC3', DeviceTypeEnum.EMULATED_DATACENTER.value, dev_op_st_enabled, name='DC3', endpoints=[ + json_endpoint(json_device_id('uuid-DC3'), 'uuid-int', 'packet', name='int' ), + json_endpoint(json_device_id('uuid-DC3'), 'uuid-eth0', 'packet', name='eth0'), + ] + ))) + mock_task_executor._store_grpc_object(CacheableObjectType.DEVICE, 'R1', Device(**json_device( + 'uuid-R1', DeviceTypeEnum.EMULATED_PACKET_ROUTER.value, dev_op_st_enabled, name='R1', endpoints=[ + json_endpoint(json_device_id('uuid-R1'), 'uuid-1/1', 'packet', name='1/1'), + json_endpoint(json_device_id('uuid-R1'), 'uuid-1/2', 'packet', name='1/2'), + ] + ))) + mock_task_executor._store_grpc_object(CacheableObjectType.DEVICE, 'R2', Device(**json_device( + 'uuid-R2', DeviceTypeEnum.EMULATED_PACKET_ROUTER.value, dev_op_st_enabled, name='R2', endpoints=[ + json_endpoint(json_device_id('uuid-R2'), 'uuid-1/1', 'packet', name='1/1'), + json_endpoint(json_device_id('uuid-R2'), 'uuid-1/2', 'packet', name='1/2'), + json_endpoint(json_device_id('uuid-R2'), 'uuid-1/3', 'packet', name='1/3'), + ] + ))) + mock_task_executor._store_grpc_object(CacheableObjectType.DEVICE, 'R3', Device(**json_device( + 'uuid-R3', DeviceTypeEnum.EMULATED_PACKET_ROUTER.value, dev_op_st_enabled, name='R3', endpoints=[ + json_endpoint(json_device_id('uuid-R3'), 'uuid-1/1', 'packet', name='1/1'), + json_endpoint(json_device_id('uuid-R3'), 'uuid-1/2', 'packet', name='1/2'), + ] + ))) + mock_task_executor._store_grpc_object(CacheableObjectType.DEVICE, 'R4', Device(**json_device( + 'uuid-R4', DeviceTypeEnum.EMULATED_PACKET_ROUTER.value, dev_op_st_enabled, name='R4', endpoints=[ + json_endpoint(json_device_id('uuid-R4'), 'uuid-1/1', 'packet', name='1/1'), + json_endpoint(json_device_id('uuid-R4'), 'uuid-1/2', 'packet', name='1/2'), + ] + ))) + + mock_service_handler = MockServiceHandler(SERVICE_DC1_DC2, mock_task_executor) + mock_service_handler.SetEndpoint(CONNECTION_ENDPOINTS_DC1_DC2) + + mock_service_handler = MockServiceHandler(SERVICE_DC1_DC3, mock_task_executor) + mock_service_handler.SetEndpoint(CONNECTION_ENDPOINTS_DC1_DC3) + +if __name__ == '__main__': + test_l3nm_gnmi_static_rule_gen() diff --git a/src/telemetry/.gitlab-ci.yml b/src/telemetry/.gitlab-ci.yml index 110a6490d20558c6589550be45b6432e500ba9d6..358a93af8d309c3ea8e80c9b905792763ad51de8 100644 --- a/src/telemetry/.gitlab-ci.yml +++ b/src/telemetry/.gitlab-ci.yml @@ -69,9 +69,11 @@ unit_test telemetry-backend: - docker pull "bitnami/kafka:latest" - > docker run --name zookeeper -d --network=teraflowbridge -p 2181:2181 + --env ALLOW_ANONYMOUS_LOGIN=yes bitnami/zookeeper:latest - sleep 10 # Wait for Zookeeper to start - - docker run --name kafka -d --network=teraflowbridge -p 9092:9092 + - > + docker run --name kafka -d --network=teraflowbridge -p 9092:9092 --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env ALLOW_PLAINTEXT_LISTENER=yes bitnami/kafka:latest @@ -93,12 +95,12 @@ unit_test telemetry-backend: - docker exec -i ${IMAGE_NAME}-backend bash -c "coverage report --include='${IMAGE_NAME}/*' --show-missing" coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/' after_script: + - docker rm -f ${IMAGE_NAME}-backend + - docker rm -f kafka + - docker rm -f zookeeper - docker network rm teraflowbridge - docker volume prune --force - docker image prune --force - - docker rm -f ${IMAGE_NAME}-backend - - docker rm -f zookeeper - - docker rm -f kafka rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)' - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"' @@ -150,19 +152,20 @@ unit_test telemetry-frontend: - CRDB_ADDRESS=$(docker inspect crdb --format "{{.NetworkSettings.Networks.teraflowbridge.IPAddress}}") - echo $CRDB_ADDRESS - > - docker run --name zookeeper -d --network=teraflowbridge -p 2181:2181 \ - -e ALLOW_ANONYMOUS_LOGIN=yes \ + docker run --name zookeeper -d --network=teraflowbridge -p 2181:2181 + --env ALLOW_ANONYMOUS_LOGIN=yes bitnami/zookeeper:latest - sleep 10 # Wait for Zookeeper to start - - docker run --name kafka -d --network=teraflowbridge -p 9092:9092 + - > + docker run --name kafka -d --network=teraflowbridge -p 9092:9092 --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env ALLOW_PLAINTEXT_LISTENER=yes bitnami/kafka:latest - sleep 20 # Wait for Kafka to start - KAFKA_IP=$(docker inspect kafka --format "{{.NetworkSettings.Networks.teraflowbridge.IPAddress}}") - echo $KAFKA_IP - # - docker logs zookeeper - # - docker logs kafka + - docker logs zookeeper + - docker logs kafka - > docker run --name $IMAGE_NAME-frontend -d -p 30050:30050 --env "CRDB_URI=cockroachdb://tfs:tfs123@${CRDB_ADDRESS}:26257/tfs_test?sslmode=require" @@ -179,13 +182,13 @@ unit_test telemetry-frontend: - docker exec -i ${IMAGE_NAME}-frontend bash -c "coverage report --include='${IMAGE_NAME}/*' --show-missing" coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/' after_script: - - docker volume rm -f crdb - - docker network rm teraflowbridge - - docker volume prune --force - - docker image prune --force - docker rm -f ${IMAGE_NAME}-frontend - docker rm -f zookeeper - docker rm -f kafka + - docker volume rm -f crdb + - docker volume prune --force + - docker image prune --force + - docker network rm teraflowbridge rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)' - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"' @@ -200,4 +203,4 @@ unit_test telemetry-frontend: artifacts: when: always reports: - junit: src/$IMAGE_NAME/frontend/tests/${IMAGE_NAME}-frontend_report.xml \ No newline at end of file + junit: src/$IMAGE_NAME/frontend/tests/${IMAGE_NAME}-frontend_report.xml diff --git a/src/telemetry/backend/service/TelemetryBackendService.py b/src/telemetry/backend/service/TelemetryBackendService.py index 6ab841238f446a2895cd163fab4b7eb05eaa3176..81ef24481cffc70c6b33bbfbf19d57b062729891 100755 --- a/src/telemetry/backend/service/TelemetryBackendService.py +++ b/src/telemetry/backend/service/TelemetryBackendService.py @@ -17,7 +17,8 @@ import time import random import logging import threading -from typing import Any, Dict +from typing import Any, Dict +from datetime import datetime, timezone # from common.proto.context_pb2 import Empty from confluent_kafka import Producer as KafkaProducer from confluent_kafka import Consumer as KafkaConsumer @@ -53,6 +54,8 @@ class TelemetryBackendService(GenericGrpcService): """ listener for requests on Kafka topic. """ + LOGGER.info('Telemetry backend request listener is running ...') + # print ('Telemetry backend request listener is running ...') consumer = self.kafka_consumer consumer.subscribe([KafkaTopic.REQUEST.value]) while True: @@ -63,29 +66,33 @@ class TelemetryBackendService(GenericGrpcService): if receive_msg.error().code() == KafkaError._PARTITION_EOF: continue else: - print("Consumer error: {}".format(receive_msg.error())) + # print("Consumer error: {}".format(receive_msg.error())) break - - collector = json.loads(receive_msg.value().decode('utf-8')) - collector_id = receive_msg.key().decode('utf-8') - LOGGER.debug('Recevied Collector: {:} - {:}'.format(collector_id, collector)) - print('Recevied Collector: {:} - {:}'.format(collector_id, collector)) - - if collector['duration'] == -1 and collector['interval'] == -1: - self.TerminateCollectorBackend(collector_id) - else: - self.RunInitiateCollectorBackend(collector_id, collector) + try: + collector = json.loads(receive_msg.value().decode('utf-8')) + collector_id = receive_msg.key().decode('utf-8') + LOGGER.debug('Recevied Collector: {:} - {:}'.format(collector_id, collector)) + # print('Recevied Collector: {:} - {:}'.format(collector_id, collector)) + + if collector['duration'] == -1 and collector['interval'] == -1: + self.TerminateCollectorBackend(collector_id) + else: + self.RunInitiateCollectorBackend(collector_id, collector) + except Exception as e: + LOGGER.warning("Unable to consumer message from topic: {:}. ERROR: {:}".format(KafkaTopic.REQUEST.value, e)) + # print ("Unable to consumer message from topic: {:}. ERROR: {:}".format(KafkaTopic.REQUEST.value, e)) def TerminateCollectorBackend(self, collector_id): if collector_id in self.running_threads: thread, stop_event = self.running_threads[collector_id] stop_event.set() thread.join() - print ("Terminating backend (by StopCollector): Collector Id: ", collector_id) + # print ("Terminating backend (by StopCollector): Collector Id: ", collector_id) del self.running_threads[collector_id] - self.GenerateCollectorResponse(collector_id, "-1", -1) # Termination confirmation to frontend. + self.GenerateCollectorTerminationSignal(collector_id, "-1", -1) # Termination confirmation to frontend. else: - print ('Backend collector {:} not found'.format(collector_id)) + # print ('Backend collector {:} not found'.format(collector_id)) + LOGGER.warning('Backend collector {:} not found'.format(collector_id)) def RunInitiateCollectorBackend(self, collector_id: str, collector: str): stop_event = threading.Event() @@ -98,23 +105,40 @@ class TelemetryBackendService(GenericGrpcService): """ Method receives collector request and initiates collecter backend. """ - print("Initiating backend for collector: ", collector_id) + # print("Initiating backend for collector: ", collector_id) + LOGGER.info("Initiating backend for collector: {:s}".format(str(collector_id))) start_time = time.time() while not stop_event.is_set(): - if time.time() - start_time >= collector['duration']: # condition to terminate backend + if int(collector['duration']) != -1 and time.time() - start_time >= collector['duration']: # condition to terminate backend print("Execuation duration completed: Terminating backend: Collector Id: ", collector_id, " - ", time.time() - start_time) - self.GenerateCollectorResponse(collector_id, "-1", -1) # Termination confirmation to frontend. + self.GenerateCollectorTerminationSignal(collector_id, "-1", -1) # Termination confirmation to frontend. break self.ExtractKpiValue(collector_id, collector['kpi_id']) time.sleep(collector['interval']) + def GenerateCollectorTerminationSignal(self, collector_id: str, kpi_id: str, measured_kpi_value: Any): + """ + Method to write kpi Termination signat on RESPONSE Kafka topic + """ + producer = self.kafka_producer + kpi_value : Dict = { + "kpi_id" : kpi_id, + "kpi_value" : measured_kpi_value, + } + producer.produce( + KafkaTopic.RESPONSE.value, # TODO: to the topic ... + key = collector_id, + value = json.dumps(kpi_value), + callback = self.delivery_callback + ) + producer.flush() + def ExtractKpiValue(self, collector_id: str, kpi_id: str): """ Method to extract kpi value. """ measured_kpi_value = random.randint(1,100) # TODO: To be extracted from a device - print ("Measured Kpi value: {:}".format(measured_kpi_value)) - # measured_kpi_value = self.fetch_node_exporter_metrics() # exporter extracted metric value against default KPI + # print ("Measured Kpi value: {:}".format(measured_kpi_value)) self.GenerateCollectorResponse(collector_id, kpi_id , measured_kpi_value) def GenerateCollectorResponse(self, collector_id: str, kpi_id: str, measured_kpi_value: Any): @@ -123,117 +147,27 @@ class TelemetryBackendService(GenericGrpcService): """ producer = self.kafka_producer kpi_value : Dict = { + "time_stamp": datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ"), "kpi_id" : kpi_id, "kpi_value" : measured_kpi_value } producer.produce( - KafkaTopic.RESPONSE.value, + KafkaTopic.VALUE.value, # TODO: to the topic ... key = collector_id, value = json.dumps(kpi_value), callback = self.delivery_callback ) producer.flush() - def GenerateRawMetric(self, metrics: Any): - """ - Method writes raw metrics on VALUE Kafka topic - """ - producer = self.kafka_producer - some_metric : Dict = { - "some_id" : metrics - } - producer.produce( - KafkaTopic.VALUE.value, - key = 'raw', - value = json.dumps(some_metric), - callback = self.delivery_callback - ) - producer.flush() - def delivery_callback(self, err, msg): """ Callback function to handle message delivery status. Args: err (KafkaError): Kafka error object. msg (Message): Kafka message object. """ - if err: print(f'Message delivery failed: {err}') - # else: print(f'Message delivered to topic {msg.topic()}') - -# # ----------- BELOW: Actual Implementation of Kafka Producer with Node Exporter ----------- -# @staticmethod -# def fetch_single_node_exporter_metric(): -# """ -# Method to fetch metrics from Node Exporter. -# Returns: -# str: Metrics fetched from Node Exporter. -# """ -# KPI = "node_network_receive_packets_total" -# try: -# response = requests.get(EXPORTER_ENDPOINT) # type: ignore -# LOGGER.info("Request status {:}".format(response)) -# if response.status_code == 200: -# # print(f"Metrics fetched sucessfully...") -# metrics = response.text -# # Check if the desired metric is available in the response -# if KPI in metrics: -# KPI_VALUE = TelemetryBackendService.extract_metric_value(metrics, KPI) -# # Extract the metric value -# if KPI_VALUE is not None: -# LOGGER.info("Extracted value of {:} is {:}".format(KPI, KPI_VALUE)) -# print(f"Extracted value of {KPI} is: {KPI_VALUE}") -# return KPI_VALUE -# else: -# LOGGER.info("Failed to fetch metrics. Status code: {:}".format(response.status_code)) -# # print(f"Failed to fetch metrics. Status code: {response.status_code}") -# return None -# except Exception as e: -# LOGGER.info("Failed to fetch metrics. Status code: {:}".format(e)) -# # print(f"Failed to fetch metrics: {str(e)}") -# return None - -# @staticmethod -# def extract_metric_value(metrics, metric_name): -# """ -# Method to extract the value of a metric from the metrics string. -# Args: -# metrics (str): Metrics string fetched from Exporter. -# metric_name (str): Name of the metric to extract. -# Returns: -# float: Value of the extracted metric, or None if not found. -# """ -# try: -# # Find the metric line containing the desired metric name -# metric_line = next(line for line in metrics.split('\n') if line.startswith(metric_name)) -# # Split the line to extract the metric value -# metric_value = float(metric_line.split()[1]) -# return metric_value -# except StopIteration: -# print(f"Metric '{metric_name}' not found in the metrics.") -# return None - -# @staticmethod -# def stream_node_export_metrics_to_raw_topic(): -# try: -# while True: -# response = requests.get(EXPORTER_ENDPOINT) -# # print("Response Status {:} ".format(response)) -# # LOGGER.info("Response Status {:} ".format(response)) -# try: -# if response.status_code == 200: -# producerObj = KafkaProducer(PRODUCER_CONFIG) -# producerObj.produce(KAFKA_TOPICS['raw'], key="raw", value= str(response.text), callback=TelemetryBackendService.delivery_callback) -# producerObj.flush() -# LOGGER.info("Produce to topic") -# else: -# LOGGER.info("Didn't received expected response. Status code: {:}".format(response.status_code)) -# print(f"Didn't received expected response. Status code: {response.status_code}") -# return None -# time.sleep(15) -# except Exception as e: -# LOGGER.info("Failed to process response. Status code: {:}".format(e)) -# return None -# except Exception as e: -# LOGGER.info("Failed to fetch metrics. Status code: {:}".format(e)) -# print(f"Failed to fetch metrics: {str(e)}") -# return None -# # ----------- ABOVE: Actual Implementation of Kafka Producer with Node Exporter ----------- \ No newline at end of file + if err: + LOGGER.error('Message delivery failed: {:}'.format(err)) + # print(f'Message delivery failed: {err}') + #else: + # LOGGER.debug('Message delivered to topic {:}'.format(msg.topic())) + # # print(f'Message delivered to topic {msg.topic()}') diff --git a/src/telemetry/backend/tests/messagesBackend.py b/src/telemetry/backend/tests/messages.py similarity index 100% rename from src/telemetry/backend/tests/messagesBackend.py rename to src/telemetry/backend/tests/messages.py diff --git a/src/telemetry/backend/tests/test_TelemetryBackend.py b/src/telemetry/backend/tests/test_backend.py similarity index 81% rename from src/telemetry/backend/tests/test_TelemetryBackend.py rename to src/telemetry/backend/tests/test_backend.py index a2bbee540c3ce348ef52eceb0e776f48a68d94b1..8bbde9769ae1dfb16a33ef528f74031d2ba94c01 100644 --- a/src/telemetry/backend/tests/test_TelemetryBackend.py +++ b/src/telemetry/backend/tests/test_backend.py @@ -13,6 +13,7 @@ # limitations under the License. import logging +import threading from common.tools.kafka.Variables import KafkaTopic from telemetry.backend.service.TelemetryBackendService import TelemetryBackendService @@ -30,9 +31,7 @@ def test_validate_kafka_topics(): response = KafkaTopic.create_all_topics() assert isinstance(response, bool) -def test_RunRequestListener(): - LOGGER.info('test_RunRequestListener') - TelemetryBackendServiceObj = TelemetryBackendService() - response = TelemetryBackendServiceObj.RunRequestListener() - LOGGER.debug(str(response)) - assert isinstance(response, bool) +# def test_RunRequestListener(): +# LOGGER.info('test_RunRequestListener') +# TelemetryBackendServiceObj = TelemetryBackendService() +# threading.Thread(target=TelemetryBackendServiceObj.RequestListener).start() \ No newline at end of file diff --git a/src/telemetry/database/TelemetryEngine.py b/src/telemetry/database/TelemetryEngine.py deleted file mode 100644 index 7c8620faf25e695e7f971bce78be9ad208a7701b..0000000000000000000000000000000000000000 --- a/src/telemetry/database/TelemetryEngine.py +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright 2022-2024 ETSI OSG/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. - -import logging, sqlalchemy -from common.Settings import get_setting - -LOGGER = logging.getLogger(__name__) -CRDB_URI_TEMPLATE = 'cockroachdb://{:s}:{:s}@cockroachdb-public.{:s}.svc.cluster.local:{:s}/{:s}?sslmode={:s}' - -class TelemetryEngine: - @staticmethod - def get_engine() -> sqlalchemy.engine.Engine: - crdb_uri = get_setting('CRDB_URI', default=None) - if crdb_uri is None: - CRDB_NAMESPACE = get_setting('CRDB_NAMESPACE') - CRDB_SQL_PORT = get_setting('CRDB_SQL_PORT') - CRDB_DATABASE = "tfs-telemetry" # TODO: define variable get_setting('CRDB_DATABASE_KPI_MGMT') - CRDB_USERNAME = get_setting('CRDB_USERNAME') - CRDB_PASSWORD = get_setting('CRDB_PASSWORD') - CRDB_SSLMODE = get_setting('CRDB_SSLMODE') - crdb_uri = CRDB_URI_TEMPLATE.format( - CRDB_USERNAME, CRDB_PASSWORD, CRDB_NAMESPACE, CRDB_SQL_PORT, CRDB_DATABASE, CRDB_SSLMODE) - try: - engine = sqlalchemy.create_engine(crdb_uri, echo=False) - LOGGER.info(' TelemetryDB initalized with DB URL: {:}'.format(crdb_uri)) - except: # pylint: disable=bare-except # pragma: no cover - LOGGER.exception('Failed to connect to database: {:s}'.format(str(crdb_uri))) - return None # type: ignore - return engine diff --git a/src/telemetry/database/Telemetry_DB.py b/src/telemetry/database/Telemetry_DB.py index 32acfd73a410a7bfddd6b487d0b1962afadb3842..110c7e80a4c36eed15417bfa05c4057ccb7fe292 100644 --- a/src/telemetry/database/Telemetry_DB.py +++ b/src/telemetry/database/Telemetry_DB.py @@ -13,125 +13,32 @@ # limitations under the License. import logging -import sqlalchemy_utils -from sqlalchemy import inspect -from sqlalchemy.orm import sessionmaker -from telemetry.database.TelemetryModel import Collector as CollectorModel -from telemetry.database.TelemetryEngine import TelemetryEngine -from common.method_wrappers.ServiceExceptions import ( - OperationFailedException, AlreadyExistsException ) +from common.method_wrappers.Decorator import MetricsPool +from common.tools.database.GenericDatabase import Database +from common.method_wrappers.ServiceExceptions import OperationFailedException -LOGGER = logging.getLogger(__name__) -DB_NAME = "tfs_telemetry" +LOGGER = logging.getLogger(__name__) +METRICS_POOL = MetricsPool('TelemteryFrontend', 'Database') -class TelemetryDB: - def __init__(self): - self.db_engine = TelemetryEngine.get_engine() - if self.db_engine is None: - LOGGER.error('Unable to get SQLAlchemy DB Engine...') - return False - self.db_name = DB_NAME - self.Session = sessionmaker(bind=self.db_engine) - - def create_database(self): - if not sqlalchemy_utils.database_exists(self.db_engine.url): - LOGGER.debug("Database created. {:}".format(self.db_engine.url)) - sqlalchemy_utils.create_database(self.db_engine.url) - - def drop_database(self) -> None: - if sqlalchemy_utils.database_exists(self.db_engine.url): - sqlalchemy_utils.drop_database(self.db_engine.url) - - def create_tables(self): - try: - CollectorModel.metadata.create_all(self.db_engine) # type: ignore - LOGGER.debug("Tables created in the database: {:}".format(self.db_name)) - except Exception as e: - LOGGER.debug("Tables cannot be created in the database. {:s}".format(str(e))) - raise OperationFailedException ("Tables can't be created", extra_details=["unable to create table {:}".format(e)]) - - def verify_tables(self): - try: - inspect_object = inspect(self.db_engine) - if(inspect_object.has_table('collector', None)): - LOGGER.info("Table exists in DB: {:}".format(self.db_name)) - except Exception as e: - LOGGER.info("Unable to fetch Table names. {:s}".format(str(e))) - -# ----------------- CURD METHODs --------------------- - - def add_row_to_db(self, row): - session = self.Session() - try: - session.add(row) - session.commit() - LOGGER.debug(f"Row inserted into {row.__class__.__name__} table.") - return True - except Exception as e: - session.rollback() - if "psycopg2.errors.UniqueViolation" in str(e): - LOGGER.error(f"Unique key voilation: {row.__class__.__name__} table. {str(e)}") - raise AlreadyExistsException(row.__class__.__name__, row, - extra_details=["Unique key voilation: {:}".format(e)] ) - else: - LOGGER.error(f"Failed to insert new row into {row.__class__.__name__} table. {str(e)}") - raise OperationFailedException ("Deletion by column id", extra_details=["unable to delete row {:}".format(e)]) - finally: - session.close() - - def search_db_row_by_id(self, model, col_name, id_to_search): - session = self.Session() - try: - entity = session.query(model).filter_by(**{col_name: id_to_search}).first() - if entity: - # LOGGER.debug(f"{model.__name__} ID found: {str(entity)}") - return entity - else: - LOGGER.debug(f"{model.__name__} ID not found, No matching row: {str(id_to_search)}") - print("{:} ID not found, No matching row: {:}".format(model.__name__, id_to_search)) - return None - except Exception as e: - session.rollback() - LOGGER.debug(f"Failed to retrieve {model.__name__} ID. {str(e)}") - raise OperationFailedException ("search by column id", extra_details=["unable to search row {:}".format(e)]) - finally: - session.close() - - def delete_db_row_by_id(self, model, col_name, id_to_search): - session = self.Session() - try: - record = session.query(model).filter_by(**{col_name: id_to_search}).first() - if record: - session.delete(record) - session.commit() - LOGGER.debug("Deleted %s with %s: %s", model.__name__, col_name, id_to_search) - else: - LOGGER.debug("%s with %s %s not found", model.__name__, col_name, id_to_search) - return None - except Exception as e: - session.rollback() - LOGGER.error("Error deleting %s with %s %s: %s", model.__name__, col_name, id_to_search, e) - raise OperationFailedException ("Deletion by column id", extra_details=["unable to delete row {:}".format(e)]) - finally: - session.close() +class TelemetryDB(Database): + def __init__(self, model) -> None: + LOGGER.info('Init KpiManagerService') + super().__init__(model) def select_with_filter(self, model, filter_object): + """ + Generic method to create filters dynamically based on filter_object attributes. + params: model: SQLAlchemy model class to query. + filter_object: Object that contains filtering criteria as attributes. + return: SQLAlchemy session, query and Model + """ session = self.Session() try: - query = session.query(CollectorModel) - # Apply filters based on the filter_object + query = session.query(model) if filter_object.kpi_id: - query = query.filter(CollectorModel.kpi_id.in_([k.kpi_id.uuid for k in filter_object.kpi_id])) - result = query.all() - # query should be added to return all rows - if result: - LOGGER.debug(f"Fetched filtered rows from {model.__name__} table with filters: {filter_object}") # - Results: {result} - else: - LOGGER.warning(f"No matching row found in {model.__name__} table with filters: {filter_object}") - return result + query = query.filter(model.kpi_id.in_([k.kpi_id.uuid for k in filter_object.kpi_id])) except Exception as e: - LOGGER.error(f"Error fetching filtered rows from {model.__name__} table with filters {filter_object} ::: {e}") - raise OperationFailedException ("Select by filter", extra_details=["unable to apply the filter {:}".format(e)]) - finally: - session.close() - + LOGGER.error(f"Error creating filter of {model.__name__} table. ERROR: {e}") + raise OperationFailedException ("CreateKpiDescriptorFilter", extra_details=["unable to create the filter {:}".format(e)]) + + return super().select_with_filter(query, session, model) diff --git a/src/telemetry/frontend/client/TelemetryFrontendClient.py b/src/telemetry/frontend/client/TelemetryFrontendClient.py index cd36ecd45933ad10758e408cf03c1bf834d27ba6..afcf241530a41f1f4ab1729379a4e5196c25d04f 100644 --- a/src/telemetry/frontend/client/TelemetryFrontendClient.py +++ b/src/telemetry/frontend/client/TelemetryFrontendClient.py @@ -29,8 +29,8 @@ RETRY_DECORATOR = retry(max_retries=MAX_RETRIES, delay_function=DELAY_FUNCTION, class TelemetryFrontendClient: def __init__(self, host=None, port=None): - if not host: host = get_service_host(ServiceNameEnum.TELEMETRYFRONTEND) - if not port: port = get_service_port_grpc(ServiceNameEnum.TELEMETRYFRONTEND) + if not host: host = get_service_host(ServiceNameEnum.TELEMETRY) + if not port: port = get_service_port_grpc(ServiceNameEnum.TELEMETRY) self.endpoint = '{:s}:{:s}'.format(str(host), str(port)) LOGGER.debug('Creating channel to {:s}...'.format(str(self.endpoint))) self.channel = None diff --git a/src/telemetry/frontend/service/TelemetryFrontendService.py b/src/telemetry/frontend/service/TelemetryFrontendService.py index abd361aa0082e2de1d1f5fa7e81a336f3091af9a..49def20a1ce3cee1062d1e582fd8ec28308652b7 100644 --- a/src/telemetry/frontend/service/TelemetryFrontendService.py +++ b/src/telemetry/frontend/service/TelemetryFrontendService.py @@ -21,7 +21,7 @@ from telemetry.frontend.service.TelemetryFrontendServiceServicerImpl import Tele class TelemetryFrontendService(GenericGrpcService): def __init__(self, cls_name: str = __name__) -> None: - port = get_service_port_grpc(ServiceNameEnum.TELEMETRYFRONTEND) + port = get_service_port_grpc(ServiceNameEnum.TELEMETRY) super().__init__(port, cls_name=cls_name) self.telemetry_frontend_servicer = TelemetryFrontendServiceServicerImpl() diff --git a/src/telemetry/frontend/service/TelemetryFrontendServiceServicerImpl.py b/src/telemetry/frontend/service/TelemetryFrontendServiceServicerImpl.py index b73d9fa952ee42aeb7adb8f3c0b2e4a3ba7f3e09..5c569e2ddd1d75dd89f88fe9ae08517330470254 100644 --- a/src/telemetry/frontend/service/TelemetryFrontendServiceServicerImpl.py +++ b/src/telemetry/frontend/service/TelemetryFrontendServiceServicerImpl.py @@ -40,7 +40,7 @@ ACTIVE_COLLECTORS = [] # keep and can be populated from DB class TelemetryFrontendServiceServicerImpl(TelemetryFrontendServiceServicer): def __init__(self): LOGGER.info('Init TelemetryFrontendService') - self.tele_db_obj = TelemetryDB() + self.tele_db_obj = TelemetryDB(CollectorModel) self.kafka_producer = KafkaProducer({'bootstrap.servers' : KafkaConfig.get_kafka_address()}) self.kafka_consumer = KafkaConsumer({'bootstrap.servers' : KafkaConfig.get_kafka_address(), 'group.id' : 'frontend', @@ -153,7 +153,7 @@ class TelemetryFrontendServiceServicerImpl(TelemetryFrontendServiceServicer): """ if err: LOGGER.debug('Message delivery failed: {:}'.format(err)) - print('Message delivery failed: {:}'.format(err)) + # print('Message delivery failed: {:}'.format(err)) # else: # LOGGER.debug('Message delivered to topic {:}'.format(msg.topic())) # print('Message delivered to topic {:}'.format(msg.topic())) @@ -161,9 +161,8 @@ class TelemetryFrontendServiceServicerImpl(TelemetryFrontendServiceServicer): # ---------- Independent Method --------------- # Listener method is independent of any method (same lifetime as service) # continously listens for responses - def RunResponseListener(self): + def install_servicers(self): threading.Thread(target=self.ResponseListener).start() - return True def ResponseListener(self): """ @@ -178,7 +177,8 @@ class TelemetryFrontendServiceServicerImpl(TelemetryFrontendServiceServicer): if receive_msg.error().code() == KafkaError._PARTITION_EOF: continue else: - print("Consumer error: {}".format(receive_msg.error())) + # print("Consumer error: {:}".format(receive_msg.error())) + LOGGER.error("Consumer error: {:}".format(receive_msg.error())) break try: collector_id = receive_msg.key().decode('utf-8') @@ -186,13 +186,17 @@ class TelemetryFrontendServiceServicerImpl(TelemetryFrontendServiceServicer): kpi_value = json.loads(receive_msg.value().decode('utf-8')) self.process_response(collector_id, kpi_value['kpi_id'], kpi_value['kpi_value']) else: - print(f"collector id does not match.\nRespone ID: '{collector_id}' --- Active IDs: '{ACTIVE_COLLECTORS}' ") + # print(f"collector id does not match.\nRespone ID: '{collector_id}' --- Active IDs: '{ACTIVE_COLLECTORS}' ") + LOGGER.info("collector id does not match.\nRespone ID: {:} --- Active IDs: {:}".format(collector_id, ACTIVE_COLLECTORS)) except Exception as e: - print(f"Error extarcting msg key or value: {str(e)}") + # print(f"Error extarcting msg key or value: {str(e)}") + LOGGER.info("Error extarcting msg key or value: {:}".format(e)) continue def process_response(self, collector_id: str, kpi_id: str, kpi_value: Any): if kpi_id == "-1" and kpi_value == -1: - print ("Backend termination confirmation for collector id: ", collector_id) + # print ("Backend termination confirmation for collector id: ", collector_id) + LOGGER.info("Backend termination confirmation for collector id: ", collector_id) else: - print ("KPI Value: Collector Id:", collector_id, ", Kpi Id:", kpi_id, ", Value:", kpi_value) + LOGGER.info("Backend termination confirmation for collector id: ", collector_id) + # print ("KPI Value: Collector Id:", collector_id, ", Kpi Id:", kpi_id, ", Value:", kpi_value) diff --git a/src/telemetry/frontend/service/__main__.py b/src/telemetry/frontend/service/__main__.py index 2a6c5dbcf2da6b6a074c2b8ee23791bc4896442f..6697ff5f10e58b494736738e631a29a20691732d 100644 --- a/src/telemetry/frontend/service/__main__.py +++ b/src/telemetry/frontend/service/__main__.py @@ -16,6 +16,8 @@ import logging, signal, sys, threading from prometheus_client import start_http_server from common.Settings import get_log_level, get_metrics_port from .TelemetryFrontendService import TelemetryFrontendService +from telemetry.database.TelemetryModel import Collector as Model +from common.tools.database.GenericDatabase import Database terminate = threading.Event() LOGGER = None @@ -36,6 +38,11 @@ def main(): LOGGER.info('Starting...') + # To create DB + kpiDBobj = Database(Model) + kpiDBobj.create_database() + kpiDBobj.create_tables() + # Start metrics server metrics_port = get_metrics_port() start_http_server(metrics_port) diff --git a/src/telemetry/frontend/tests/Messages.py b/src/telemetry/frontend/tests/Messages.py index a0e93e8a121b9efaac83f7169419911c8ee6e3ea..e6d8ef439f4ad4764c5a6f8b5f36ec68cbb10867 100644 --- a/src/telemetry/frontend/tests/Messages.py +++ b/src/telemetry/frontend/tests/Messages.py @@ -22,15 +22,18 @@ from common.proto.kpi_manager_pb2 import KpiId def create_collector_id(): _collector_id = telemetry_frontend_pb2.CollectorId() # _collector_id.collector_id.uuid = str(uuid.uuid4()) - _collector_id.collector_id.uuid = "5d45f53f-d567-429f-9427-9196ac72ff0c" + _collector_id.collector_id.uuid = "efef4d95-1cf1-43c4-9742-95c283dddddd" return _collector_id def create_collector_request(): _create_collector_request = telemetry_frontend_pb2.Collector() - _create_collector_request.collector_id.collector_id.uuid = str(uuid.uuid4()) - _create_collector_request.kpi_id.kpi_id.uuid = str(uuid.uuid4()) - _create_collector_request.duration_s = float(random.randint(8, 16)) - _create_collector_request.interval_s = float(random.randint(2, 4)) + # _create_collector_request.collector_id.collector_id.uuid = str(uuid.uuid4()) + _create_collector_request.collector_id.collector_id.uuid = "efef4d95-1cf1-43c4-9742-95c283dddddd" + # _create_collector_request.kpi_id.kpi_id.uuid = str(uuid.uuid4()) + _create_collector_request.kpi_id.kpi_id.uuid = "6e22f180-ba28-4641-b190-2287bf448888" + # _create_collector_request.duration_s = float(random.randint(8, 16)) + _create_collector_request.duration_s = -1 + _create_collector_request.interval_s = float(random.randint(3, 5)) return _create_collector_request def create_collector_filter(): diff --git a/src/telemetry/frontend/tests/test_frontend.py b/src/telemetry/frontend/tests/test_frontend.py index 9c3f9d3a8f545792eb2bb3a371c6c20664d24f69..988d76af0380302cd6351d46eccf6159bf1dc5ab 100644 --- a/src/telemetry/frontend/tests/test_frontend.py +++ b/src/telemetry/frontend/tests/test_frontend.py @@ -36,9 +36,9 @@ from telemetry.frontend.service.TelemetryFrontendServiceServicerImpl import Tele LOCAL_HOST = '127.0.0.1' -TELEMETRY_FRONTEND_PORT = str(get_service_port_grpc(ServiceNameEnum.TELEMETRYFRONTEND)) -os.environ[get_env_var_name(ServiceNameEnum.TELEMETRYFRONTEND, ENVVAR_SUFIX_SERVICE_HOST )] = str(LOCAL_HOST) -os.environ[get_env_var_name(ServiceNameEnum.TELEMETRYFRONTEND, ENVVAR_SUFIX_SERVICE_PORT_GRPC)] = str(TELEMETRY_FRONTEND_PORT) +TELEMETRY_FRONTEND_PORT = str(get_service_port_grpc(ServiceNameEnum.TELEMETRY)) +os.environ[get_env_var_name(ServiceNameEnum.TELEMETRY, ENVVAR_SUFIX_SERVICE_HOST )] = str(LOCAL_HOST) +os.environ[get_env_var_name(ServiceNameEnum.TELEMETRY, ENVVAR_SUFIX_SERVICE_PORT_GRPC)] = str(TELEMETRY_FRONTEND_PORT) LOGGER = logging.getLogger(__name__) @@ -105,47 +105,10 @@ def test_SelectCollectors(telemetryFrontend_client): LOGGER.debug(str(response)) assert isinstance(response, CollectorList) -# ----- Non-gRPC method tests ----- -def test_RunResponseListener(): - LOGGER.info(' >>> test_RunResponseListener START: <<< ') - TelemetryFrontendServiceObj = TelemetryFrontendServiceServicerImpl() - response = TelemetryFrontendServiceObj.RunResponseListener() # becasue Method "run_kafka_listener" is not define in frontend.proto - LOGGER.debug(str(response)) - assert isinstance(response, bool) - -# ------- previous test ---------------- - -# def test_verify_db_and_table(): -# LOGGER.info(' >>> test_verify_database_and_tables START: <<< ') -# _engine = TelemetryEngine.get_engine() -# managementDB.create_database(_engine) -# managementDB.create_tables(_engine) - -# def test_StartCollector(telemetryFrontend_client): -# LOGGER.info(' >>> test_StartCollector START: <<< ') -# response = telemetryFrontend_client.StartCollector(create_collector_request()) -# LOGGER.debug(str(response)) -# assert isinstance(response, CollectorId) - -# def test_run_kafka_listener(): -# LOGGER.info(' >>> test_run_kafka_listener START: <<< ') -# name_mapping = NameMapping() -# TelemetryFrontendServiceObj = TelemetryFrontendServiceServicerImpl(name_mapping) -# response = TelemetryFrontendServiceObj.run_kafka_listener() # Method "run_kafka_listener" is not define in frontend.proto +# # ----- Non-gRPC method tests ----- +# def test_RunResponseListener(): +# LOGGER.info(' >>> test_RunResponseListener START: <<< ') +# TelemetryFrontendServiceObj = TelemetryFrontendServiceServicerImpl() +# response = TelemetryFrontendServiceObj.RunResponseListener() # becasue Method "run_kafka_listener" is not define in frontend.proto # LOGGER.debug(str(response)) # assert isinstance(response, bool) - -# def test_StopCollector(telemetryFrontend_client): -# LOGGER.info(' >>> test_StopCollector START: <<< ') -# _collector_id = telemetryFrontend_client.StartCollector(create_collector_request()) -# time.sleep(3) # wait for small amount before call the stopCollecter() -# response = telemetryFrontend_client.StopCollector(_collector_id) -# LOGGER.debug(str(response)) -# assert isinstance(response, Empty) - -# def test_select_collectors(telemetryFrontend_client): -# LOGGER.info(' >>> test_select_collector requesting <<< ') -# response = telemetryFrontend_client.SelectCollectors(create_collector_filter()) -# LOGGER.info('Received Rows after applying Filter: {:} '.format(response)) -# LOGGER.debug(str(response)) -# assert isinstance(response, CollectorList) \ No newline at end of file diff --git a/src/telemetry/requirements.in b/src/telemetry/requirements.in index a0e78d2bfb7270b9664ad5ba810e2f213d887bf7..503468a662599f0225b293d0ef4c4e4313fa3e0f 100644 --- a/src/telemetry/requirements.in +++ b/src/telemetry/requirements.in @@ -12,13 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -anytree==2.8.0 APScheduler==3.10.1 -influx-line-protocol==0.1.4 psycopg2-binary==2.9.3 python-dateutil==2.8.2 python-json-logger==2.0.2 pytz==2024.1 -questdb==1.0.1 requests==2.27.1 -xmltodict==0.12.0 \ No newline at end of file diff --git a/src/telemetry/tests/test_telemetryDB.py b/src/telemetry/tests/test_telemetryDB.py index c4976f8c2144fcdcad43a3e25d43091010de0d18..bbc02a2a22fbbae3a1064fc5f9606ec8b29ff0f9 100644 --- a/src/telemetry/tests/test_telemetryDB.py +++ b/src/telemetry/tests/test_telemetryDB.py @@ -15,14 +15,15 @@ import logging from telemetry.database.Telemetry_DB import TelemetryDB +from telemetry.database.TelemetryModel import Collector as CollectorModel LOGGER = logging.getLogger(__name__) def test_verify_databases_and_tables(): LOGGER.info('>>> test_verify_databases_and_tables : START <<< ') - TelemetryDBobj = TelemetryDB() - TelemetryDBobj.drop_database() - TelemetryDBobj.verify_tables() + TelemetryDBobj = TelemetryDB(CollectorModel) + # TelemetryDBobj.drop_database() + # TelemetryDBobj.verify_tables() TelemetryDBobj.create_database() TelemetryDBobj.create_tables() - TelemetryDBobj.verify_tables() \ No newline at end of file + TelemetryDBobj.verify_tables() diff --git a/src/tests/.gitlab-ci.yml b/src/tests/.gitlab-ci.yml index c64db5d8fef7661e37f271429cd4c1c5ff328b7a..b7da988bf33175e149906243f28b0df0d78d9d8b 100644 --- a/src/tests/.gitlab-ci.yml +++ b/src/tests/.gitlab-ci.yml @@ -20,3 +20,5 @@ include: #- local: '/src/tests/nfvsdn22/.gitlab-ci.yml' #- local: '/src/tests/ofc23/.gitlab-ci.yml' - local: '/src/tests/ofc24/.gitlab-ci.yml' + - local: '/src/tests/eucnc24/.gitlab-ci.yml' + #- local: '/src/tests/ecoc24/.gitlab-ci.yml' diff --git a/src/tests/ecoc24/__init__.py b/src/tests/ecoc24/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..3ee6f7071f145e06c3aeaefc09a43ccd88e619e3 --- /dev/null +++ b/src/tests/ecoc24/__init__.py @@ -0,0 +1,14 @@ +# Copyright 2022-2024 ETSI OSG/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. + diff --git a/src/tests/ecoc24/deploy_e2e.sh b/src/tests/ecoc24/deploy_e2e.sh new file mode 100755 index 0000000000000000000000000000000000000000..23ff8b7f037b8f2497e6ef851c3aa9f301772e1a --- /dev/null +++ b/src/tests/ecoc24/deploy_e2e.sh @@ -0,0 +1,33 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + + +# Delete old namespaces +kubectl delete namespace tfs-e2e + +# Delete secondary ingress controllers +kubectl delete -f src/tests/ecoc24/nginx-ingress-controller-e2e.yaml + +# Create secondary ingress controllers +kubectl apply -f src/tests/ecoc24/nginx-ingress-controller-e2e.yaml + +# Deploy TFS for E2E +source src/tests/ecoc24/deploy_specs_e2e.sh +./deploy/all.sh + +#Configure Subscription WS +./src/tests/ecoc24/deploy/subscription_ws_e2e.sh + +mv tfs_runtime_env_vars.sh tfs_runtime_env_vars_e2e.sh diff --git a/src/tests/ecoc24/deploy_ip.sh b/src/tests/ecoc24/deploy_ip.sh new file mode 100755 index 0000000000000000000000000000000000000000..a6c5e82557d02c89f67bbbf0ee0a6f88650ba9d1 --- /dev/null +++ b/src/tests/ecoc24/deploy_ip.sh @@ -0,0 +1,33 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + + +# Delete old namespaces +kubectl delete namespace tfs-ip + +# Delete secondary ingress controllers +kubectl delete -f src/tests/ecoc24/nginx-ingress-controller-ip.yaml + +# Create secondary ingress controllers +kubectl apply -f src/tests/ecoc24/nginx-ingress-controller-ip.yaml + +# Deploy TFS for IP +source src/tests/ecoc24/deploy_specs_ip.sh +./deploy/all.sh + +#Configure Subscription WS +./src/tests/ecoc24/subscription_ws_ip.sh + +mv tfs_runtime_env_vars.sh tfs_runtime_env_vars_ip.sh diff --git a/src/qkd_app/service/rest_server/RestServer.py b/src/tests/ecoc24/deploy_opt.sh old mode 100644 new mode 100755 similarity index 56% rename from src/qkd_app/service/rest_server/RestServer.py rename to src/tests/ecoc24/deploy_opt.sh index e21531c5bcf0e1cf15a8f08952d6325a8349f398..3a9523768ec21c2e177a3567a51cdc94f4db992b --- a/src/qkd_app/service/rest_server/RestServer.py +++ b/src/tests/ecoc24/deploy_opt.sh @@ -1,3 +1,4 @@ +#!/bin/bash # Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -12,12 +13,17 @@ # See the License for the specific language governing permissions and # limitations under the License. -from common.Constants import ServiceNameEnum -from common.Settings import get_service_baseurl_http, get_service_port_http -from common.tools.service.GenericRestServer import GenericRestServer -class RestServer(GenericRestServer): - def __init__(self, cls_name: str = __name__) -> None: - bind_port = get_service_port_http(ServiceNameEnum.QKD_APP) - base_url = get_service_baseurl_http(ServiceNameEnum.QKD_APP) - super().__init__(bind_port, base_url, cls_name=cls_name) +# Delete old namespaces +kubectl delete namespace tfs-opt + +# Delete secondary ingress controllers +kubectl delete -f src/tests/ecoc24/nginx-ingress-controller-opt.yaml + +# Create secondary ingress controllers +kubectl apply -f src/tests/ecoc24/nginx-ingress-controller-opt.yaml + +# Deploy TFS for OPT +source src/tests/ecoc24/deploy_specs_opt.sh +./deploy/all.sh +mv tfs_runtime_env_vars.sh tfs_runtime_env_vars_opt.sh diff --git a/src/tests/ecoc24/deploy_specs_e2e.sh b/src/tests/ecoc24/deploy_specs_e2e.sh new file mode 100755 index 0000000000000000000000000000000000000000..e1e358cfcebe6d079f175e10a67bd097bf46dd7e --- /dev/null +++ b/src/tests/ecoc24/deploy_specs_e2e.sh @@ -0,0 +1,216 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + + +# ----- TeraFlowSDN ------------------------------------------------------------ + +# Set the URL of the internal MicroK8s Docker registry where the images will be uploaded to. +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 service slice nbi webui" + +# 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 automation" + +# Uncomment to activate QoS Profiles +#export TFS_COMPONENTS="${TFS_COMPONENTS} qos_profile" + +# 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" + +# Uncomment to activate VNT Manager +# export TFS_COMPONENTS="${TFS_COMPONENTS} vnt_manager" + +# Uncomment to activate DLT and Interdomain +#export TFS_COMPONENTS="${TFS_COMPONENTS} interdomain dlt" +#if [[ "$TFS_COMPONENTS" == *"dlt"* ]]; then +# export KEY_DIRECTORY_PATH="src/dlt/gateway/keys/priv_sk" +# export CERT_DIRECTORY_PATH="src/dlt/gateway/keys/cert.pem" +# export TLS_CERT_PATH="src/dlt/gateway/keys/ca.crt" +#fi + +# Uncomment to activate QKD App +# To manage QKD Apps, "service" requires "qkd_app" to be deployed +# before "service", thus we "hack" the TFS_COMPONENTS environment variable prepending the +# "qkd_app" 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} qkd_app service ${AFTER}" +#fi + +# Uncomment to activate Load Generator +#export TFS_COMPONENTS="${TFS_COMPONENTS} load_generator" + + +# Set the tag you want to use for your images. +export TFS_IMAGE_TAG="dev" + +# Set the name of the Kubernetes namespace to deploy TFS to. +export TFS_K8S_NAMESPACE="tfs-e2e" + +# Set additional manifest files to be applied after the deployment +export TFS_EXTRA_MANIFESTS="src/tests/ecoc24/tfs-ingress-e2e.yaml" + +# Uncomment to monitor performance of components +#export TFS_EXTRA_MANIFESTS="${TFS_EXTRA_MANIFESTS} manifests/servicemonitors.yaml" + +# Uncomment when deploying Optical CyberSecurity +#export TFS_EXTRA_MANIFESTS="${TFS_EXTRA_MANIFESTS} manifests/cachingservice.yaml" + +# Set the new Grafana admin password +export TFS_GRAFANA_PASSWORD="admin123+" + +# Disable skip-build flag to rebuild the Docker images. +export TFS_SKIP_BUILD="" + + +# ----- CockroachDB ------------------------------------------------------------ + +# Set the namespace where CockroackDB will be deployed. +export CRDB_NAMESPACE="crdb" + +# Set the external port CockroackDB Postgre SQL interface will be exposed to. +export CRDB_EXT_PORT_SQL="26257" + +# Set the external port CockroackDB HTTP Mgmt GUI interface will be exposed to. +export CRDB_EXT_PORT_HTTP="8081" + +# Set the database username to be used by Context. +export CRDB_USERNAME="tfs" + +# Set the database user's password to be used by Context. +export CRDB_PASSWORD="tfs123" + +# Set the database name to be used by Context. +export CRDB_DATABASE="tfs_e2e" + +# Set CockroachDB installation mode to 'single'. This option is convenient for development and testing. +# See ./deploy/all.sh or ./deploy/crdb.sh for additional details +export CRDB_DEPLOY_MODE="single" + +# Disable flag for dropping database, if it exists. +export CRDB_DROP_DATABASE_IF_EXISTS="YES" + +# Disable flag for re-deploying CockroachDB from scratch. +export CRDB_REDEPLOY="" + + +# ----- NATS ------------------------------------------------------------------- + +# Set the namespace where NATS will be deployed. +export NATS_NAMESPACE="nats-e2e" + +# Set the external port NATS Client interface will be exposed to. +export NATS_EXT_PORT_CLIENT="4223" + +# Set the external port NATS HTTP Mgmt GUI interface will be exposed to. +export NATS_EXT_PORT_HTTP="8223" + +# Set NATS installation mode to 'single'. This option is convenient for development and testing. +# See ./deploy/all.sh or ./deploy/nats.sh for additional details +export NATS_DEPLOY_MODE="single" + +# Disable flag for re-deploying NATS from scratch. +export NATS_REDEPLOY="" + + +# ----- QuestDB ---------------------------------------------------------------- + +# Set the namespace where QuestDB will be deployed. +export QDB_NAMESPACE="qdb-e2e" + +# Set the external port QuestDB Postgre SQL interface will be exposed to. +export QDB_EXT_PORT_SQL="8813" + +# Set the external port QuestDB Influx Line Protocol interface will be exposed to. +export QDB_EXT_PORT_ILP="9011" + +# Set the external port QuestDB HTTP Mgmt GUI interface will be exposed to. +export QDB_EXT_PORT_HTTP="9001" + +# Set the database username to be used for QuestDB. +export QDB_USERNAME="admin" + +# Set the database user's password to be used for QuestDB. +export QDB_PASSWORD="quest" + +# Set the table name to be used by Monitoring for KPIs. +export QDB_TABLE_MONITORING_KPIS="tfs_monitoring_kpis" + +# Set the table name to be used by Slice for plotting groups. +export QDB_TABLE_SLICE_GROUPS="tfs_slice_groups" + +# Disable flag for dropping tables if they exist. +export QDB_DROP_TABLES_IF_EXIST="YES" + +# Disable flag for re-deploying QuestDB from scratch. +export QDB_REDEPLOY="" + + +# ----- K8s Observability ------------------------------------------------------ + +# Set the external port Prometheus Mgmt HTTP GUI interface will be exposed to. +export PROM_EXT_PORT_HTTP="9090" + +# Set the external port Grafana HTTP Dashboards will be exposed to. +export GRAF_EXT_PORT_HTTP="3000" + + +# ----- Apache Kafka ----------------------------------------------------------- + +# Set the namespace where Apache Kafka will be deployed. +export KFK_NAMESPACE="kafka" + +# Set the port Apache Kafka server will be exposed to. +export KFK_SERVER_PORT="9092" + +# Set the flag to YES for redeploying of Apache Kafka +export KFK_REDEPLOY="" diff --git a/src/tests/ecoc24/deploy_specs_ip.sh b/src/tests/ecoc24/deploy_specs_ip.sh new file mode 100755 index 0000000000000000000000000000000000000000..7542a0fb54bacf0273a5b38ca23ca67fae352c0c --- /dev/null +++ b/src/tests/ecoc24/deploy_specs_ip.sh @@ -0,0 +1,216 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + + +# ----- TeraFlowSDN ------------------------------------------------------------ + +# Set the URL of the internal MicroK8s Docker registry where the images will be uploaded to. +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 service slice nbi webui" + +# 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 automation" + +# Uncomment to activate QoS Profiles +#export TFS_COMPONENTS="${TFS_COMPONENTS} qos_profile" + +# 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" + +# Uncomment to activate VNT Manager +export TFS_COMPONENTS="${TFS_COMPONENTS} vnt_manager" + +# Uncomment to activate DLT and Interdomain +#export TFS_COMPONENTS="${TFS_COMPONENTS} interdomain dlt" +#if [[ "$TFS_COMPONENTS" == *"dlt"* ]]; then +# export KEY_DIRECTORY_PATH="src/dlt/gateway/keys/priv_sk" +# export CERT_DIRECTORY_PATH="src/dlt/gateway/keys/cert.pem" +# export TLS_CERT_PATH="src/dlt/gateway/keys/ca.crt" +#fi + +# Uncomment to activate QKD App +# To manage QKD Apps, "service" requires "qkd_app" to be deployed +# before "service", thus we "hack" the TFS_COMPONENTS environment variable prepending the +# "qkd_app" 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} qkd_app service ${AFTER}" +#fi + +# Uncomment to activate Load Generator +#export TFS_COMPONENTS="${TFS_COMPONENTS} load_generator" + + +# Set the tag you want to use for your images. +export TFS_IMAGE_TAG="dev" + +# Set the name of the Kubernetes namespace to deploy TFS to. +export TFS_K8S_NAMESPACE="tfs-ip" + +# Set additional manifest files to be applied after the deployment +export TFS_EXTRA_MANIFESTS="src/tests/ecoc24/tfs-ingress-ip.yaml" + +# Uncomment to monitor performance of components +#export TFS_EXTRA_MANIFESTS="${TFS_EXTRA_MANIFESTS} manifests/servicemonitors.yaml" + +# Uncomment when deploying Optical CyberSecurity +#export TFS_EXTRA_MANIFESTS="${TFS_EXTRA_MANIFESTS} manifests/cachingservice.yaml" + +# Set the new Grafana admin password +export TFS_GRAFANA_PASSWORD="admin123+" + +# Disable skip-build flag to rebuild the Docker images. +export TFS_SKIP_BUILD="" + + +# ----- CockroachDB ------------------------------------------------------------ + +# Set the namespace where CockroackDB will be deployed. +export CRDB_NAMESPACE="crdb" + +# Set the external port CockroackDB Postgre SQL interface will be exposed to. +export CRDB_EXT_PORT_SQL="26257" + +# Set the external port CockroackDB HTTP Mgmt GUI interface will be exposed to. +export CRDB_EXT_PORT_HTTP="8081" + +# Set the database username to be used by Context. +export CRDB_USERNAME="tfs" + +# Set the database user's password to be used by Context. +export CRDB_PASSWORD="tfs123" + +# Set the database name to be used by Context. +export CRDB_DATABASE="tfs_ip" + +# Set CockroachDB installation mode to 'single'. This option is convenient for development and testing. +# See ./deploy/all.sh or ./deploy/crdb.sh for additional details +export CRDB_DEPLOY_MODE="single" + +# Disable flag for dropping database, if it exists. +export CRDB_DROP_DATABASE_IF_EXISTS="YES" + +# Disable flag for re-deploying CockroachDB from scratch. +export CRDB_REDEPLOY="" + + +# ----- NATS ------------------------------------------------------------------- + +# Set the namespace where NATS will be deployed. +export NATS_NAMESPACE="nats-ip" + +# Set the external port NATS Client interface will be exposed to. +export NATS_EXT_PORT_CLIENT="4224" + +# Set the external port NATS HTTP Mgmt GUI interface will be exposed to. +export NATS_EXT_PORT_HTTP="8224" + +# Set NATS installation mode to 'single'. This option is convenient for development and testing. +# See ./deploy/all.sh or ./deploy/nats.sh for additional details +export NATS_DEPLOY_MODE="single" + +# Disable flag for re-deploying NATS from scratch. +export NATS_REDEPLOY="" + + +# ----- QuestDB ---------------------------------------------------------------- + +# Set the namespace where QuestDB will be deployed. +export QDB_NAMESPACE="qdb-ip" + +# Set the external port QuestDB Postgre SQL interface will be exposed to. +export QDB_EXT_PORT_SQL="8814" + +# Set the external port QuestDB Influx Line Protocol interface will be exposed to. +export QDB_EXT_PORT_ILP="9012" + +# Set the external port QuestDB HTTP Mgmt GUI interface will be exposed to. +export QDB_EXT_PORT_HTTP="9002" + +# Set the database username to be used for QuestDB. +export QDB_USERNAME="admin" + +# Set the database user's password to be used for QuestDB. +export QDB_PASSWORD="quest" + +# Set the table name to be used by Monitoring for KPIs. +export QDB_TABLE_MONITORING_KPIS="tfs_monitoring_kpis" + +# Set the table name to be used by Slice for plotting groups. +export QDB_TABLE_SLICE_GROUPS="tfs_slice_groups" + +# Disable flag for dropping tables if they exist. +export QDB_DROP_TABLES_IF_EXIST="YES" + +# Disable flag for re-deploying QuestDB from scratch. +export QDB_REDEPLOY="" + + +# ----- K8s Observability ------------------------------------------------------ + +# Set the external port Prometheus Mgmt HTTP GUI interface will be exposed to. +export PROM_EXT_PORT_HTTP="9090" + +# Set the external port Grafana HTTP Dashboards will be exposed to. +export GRAF_EXT_PORT_HTTP="3000" + + +# ----- Apache Kafka ----------------------------------------------------------- + +# Set the namespace where Apache Kafka will be deployed. +export KFK_NAMESPACE="kafka" + +# Set the port Apache Kafka server will be exposed to. +export KFK_SERVER_PORT="9092" + +# Set the flag to YES for redeploying of Apache Kafka +export KFK_REDEPLOY="" diff --git a/src/tests/ecoc24/deploy_specs_opt.sh b/src/tests/ecoc24/deploy_specs_opt.sh new file mode 100755 index 0000000000000000000000000000000000000000..5d258e60fdb632c692bd1a0ba6ab911e98ae7dc4 --- /dev/null +++ b/src/tests/ecoc24/deploy_specs_opt.sh @@ -0,0 +1,216 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + + +# ----- TeraFlowSDN ------------------------------------------------------------ + +# Set the URL of the internal MicroK8s Docker registry where the images will be uploaded to. +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 service slice nbi webui" + +# 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 automation" + +# Uncomment to activate QoS Profiles +#export TFS_COMPONENTS="${TFS_COMPONENTS} qos_profile" + +# 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" + +# Uncomment to activate VNT Manager +# export TFS_COMPONENTS="${TFS_COMPONENTS} vnt_manager" + +# Uncomment to activate DLT and Interdomain +#export TFS_COMPONENTS="${TFS_COMPONENTS} interdomain dlt" +#if [[ "$TFS_COMPONENTS" == *"dlt"* ]]; then +# export KEY_DIRECTORY_PATH="src/dlt/gateway/keys/priv_sk" +# export CERT_DIRECTORY_PATH="src/dlt/gateway/keys/cert.pem" +# export TLS_CERT_PATH="src/dlt/gateway/keys/ca.crt" +#fi + +# Uncomment to activate QKD App +# To manage QKD Apps, "service" requires "qkd_app" to be deployed +# before "service", thus we "hack" the TFS_COMPONENTS environment variable prepending the +# "qkd_app" 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} qkd_app service ${AFTER}" +#fi + +# Uncomment to activate Load Generator +#export TFS_COMPONENTS="${TFS_COMPONENTS} load_generator" + + +# Set the tag you want to use for your images. +export TFS_IMAGE_TAG="dev" + +# Set the name of the Kubernetes namespace to deploy TFS to. +export TFS_K8S_NAMESPACE="tfs-opt" + +# Set additional manifest files to be applied after the deployment +export TFS_EXTRA_MANIFESTS="src/tests/ecoc24/tfs-ingress-opt.yaml" + +# Uncomment to monitor performance of components +#export TFS_EXTRA_MANIFESTS="${TFS_EXTRA_MANIFESTS} manifests/servicemonitors.yaml" + +# Uncomment when deploying Optical CyberSecurity +#export TFS_EXTRA_MANIFESTS="${TFS_EXTRA_MANIFESTS} manifests/cachingservice.yaml" + +# Set the new Grafana admin password +export TFS_GRAFANA_PASSWORD="admin123+" + +# Disable skip-build flag to rebuild the Docker images. +export TFS_SKIP_BUILD="" + + +# ----- CockroachDB ------------------------------------------------------------ + +# Set the namespace where CockroackDB will be deployed. +export CRDB_NAMESPACE="crdb" + +# Set the external port CockroackDB Postgre SQL interface will be exposed to. +export CRDB_EXT_PORT_SQL="26257" + +# Set the external port CockroackDB HTTP Mgmt GUI interface will be exposed to. +export CRDB_EXT_PORT_HTTP="8081" + +# Set the database username to be used by Context. +export CRDB_USERNAME="tfs" + +# Set the database user's password to be used by Context. +export CRDB_PASSWORD="tfs123" + +# Set the database name to be used by Context. +export CRDB_DATABASE="tfs_ip" + +# Set CockroachDB installation mode to 'single'. This option is convenient for development and testing. +# See ./deploy/all.sh or ./deploy/crdb.sh for additional details +export CRDB_DEPLOY_MODE="single" + +# Disable flag for dropping database, if it exists. +export CRDB_DROP_DATABASE_IF_EXISTS="YES" + +# Disable flag for re-deploying CockroachDB from scratch. +export CRDB_REDEPLOY="" + + +# ----- NATS ------------------------------------------------------------------- + +# Set the namespace where NATS will be deployed. +export NATS_NAMESPACE="nats-opt" + +# Set the external port NATS Client interface will be exposed to. +export NATS_EXT_PORT_CLIENT="4224" + +# Set the external port NATS HTTP Mgmt GUI interface will be exposed to. +export NATS_EXT_PORT_HTTP="8224" + +# Set NATS installation mode to 'single'. This option is convenient for development and testing. +# See ./deploy/all.sh or ./deploy/nats.sh for additional details +export NATS_DEPLOY_MODE="single" + +# Disable flag for re-deploying NATS from scratch. +export NATS_REDEPLOY="" + + +# ----- QuestDB ---------------------------------------------------------------- + +# Set the namespace where QuestDB will be deployed. +export QDB_NAMESPACE="qdb-opt" + +# Set the external port QuestDB Postgre SQL interface will be exposed to. +export QDB_EXT_PORT_SQL="8814" + +# Set the external port QuestDB Influx Line Protocol interface will be exposed to. +export QDB_EXT_PORT_ILP="9012" + +# Set the external port QuestDB HTTP Mgmt GUI interface will be exposed to. +export QDB_EXT_PORT_HTTP="9002" + +# Set the database username to be used for QuestDB. +export QDB_USERNAME="admin" + +# Set the database user's password to be used for QuestDB. +export QDB_PASSWORD="quest" + +# Set the table name to be used by Monitoring for KPIs. +export QDB_TABLE_MONITORING_KPIS="tfs_monitoring_kpis" + +# Set the table name to be used by Slice for plotting groups. +export QDB_TABLE_SLICE_GROUPS="tfs_slice_groups" + +# Disable flag for dropping tables if they exist. +export QDB_DROP_TABLES_IF_EXIST="YES" + +# Disable flag for re-deploying QuestDB from scratch. +export QDB_REDEPLOY="" + + +# ----- K8s Observability ------------------------------------------------------ + +# Set the external port Prometheus Mgmt HTTP GUI interface will be exposed to. +export PROM_EXT_PORT_HTTP="9090" + +# Set the external port Grafana HTTP Dashboards will be exposed to. +export GRAF_EXT_PORT_HTTP="3000" + + +# ----- Apache Kafka ----------------------------------------------------------- + +# Set the namespace where Apache Kafka will be deployed. +export KFK_NAMESPACE="kafka" + +# Set the port Apache Kafka server will be exposed to. +export KFK_SERVER_PORT="9092" + +# Set the flag to YES for redeploying of Apache Kafka +export KFK_REDEPLOY="" diff --git a/src/tests/ecoc24/descriptors/emulated/dc-2-dc-service.json b/src/tests/ecoc24/descriptors/emulated/dc-2-dc-service.json new file mode 100644 index 0000000000000000000000000000000000000000..44c80ad46f727cbe9af7fd78f73184e756d32a92 --- /dev/null +++ b/src/tests/ecoc24/descriptors/emulated/dc-2-dc-service.json @@ -0,0 +1,48 @@ +{ + "services": [ + { + "service_id": { + "context_id": { + "context_uuid": { + "uuid": "admin" + } + }, + "service_uuid": { + "uuid": "dc-2-dc-svc" + } + }, + "service_type": 2, + "service_status": {"service_status": 1}, + "service_endpoint_ids": [ + {"device_id":{"device_uuid":{"uuid":"DC1"}},"endpoint_uuid":{"uuid":"int"}}, + {"device_id":{"device_uuid":{"uuid":"DC2"}},"endpoint_uuid":{"uuid":"int"}} + ], + "service_constraints": [ + {"sla_capacity": {"capacity_gbps": 10.0}}, + {"sla_latency": {"e2e_latency_ms": 15.2}} + ], + "service_config": {"config_rules": [ + {"action": 1, "custom": {"resource_key": "/settings", "resource_value": { + "address_families": ["IPV4"], "bgp_as": 65000, "bgp_route_target": "65000:123", + "mtu": 1512, "vlan_id": 300 + }}}, + {"action": 1, "custom": {"resource_key": "/device[PE1]/endpoint[1/1]/settings", "resource_value": { + "route_distinguisher": "65000:123", "router_id": "10.0.0.1", + "address_ip": "3.3.1.1", "address_prefix": 24, "sub_interface_index": 1, "vlan_id": 300 + }}}, + {"action": 1, "custom": {"resource_key": "/device[PE2]/endpoint[1/1]/settings", "resource_value": { + "route_distinguisher": "65000:123", "router_id": "10.0.0.2", + "address_ip": "3.3.2.1", "address_prefix": 24, "sub_interface_index": 1, "vlan_id": 300 + }}}, + {"action": 1, "custom": {"resource_key": "/device[PE3]/endpoint[1/1]/settings", "resource_value": { + "route_distinguisher": "65000:123", "router_id": "10.0.0.3", + "address_ip": "3.3.3.1", "address_prefix": 24, "sub_interface_index": 1, "vlan_id": 300 + }}}, + {"action": 1, "custom": {"resource_key": "/device[PE4]/endpoint[1/1]/settings", "resource_value": { + "route_distinguisher": "65000:123", "router_id": "10.0.0.4", + "address_ip": "3.3.4.1", "address_prefix": 24, "sub_interface_index": 1, "vlan_id": 300 + }}} + ]} + } + ] +} diff --git a/src/tests/ecoc24/descriptors/emulated/descriptor_ip.json b/src/tests/ecoc24/descriptors/emulated/descriptor_ip.json new file mode 100644 index 0000000000000000000000000000000000000000..516a8bdebba9b8a7dcdc0a245d52dd17b65cce07 --- /dev/null +++ b/src/tests/ecoc24/descriptors/emulated/descriptor_ip.json @@ -0,0 +1,34 @@ +{ + "contexts": [ + {"context_id": {"context_uuid": {"uuid": "admin"}}} + ], + "topologies": [ + {"topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}} + ], + "devices": [ + { + "device_id": {"device_uuid": {"uuid": "IP1"}}, "device_type": "emu-packet-router", "device_drivers": [0], + "device_endpoints": [], "device_operational_status": 0, "device_config": {"config_rules": [ + {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, + {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, + {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ + {"sample_types": [], "type": "copper/internal", "uuid": "CTP1"}, + {"sample_types": [], "type": "copper/internal", "uuid": "CTP2"}, + {"sample_types": [], "type": "copper/internal", "uuid": "CTP3"} + ]}}} + ]} + }, + { + "device_id": {"device_uuid": {"uuid": "IP2"}}, "device_type": "emu-packet-router", "device_drivers": [0], + "device_endpoints": [], "device_operational_status": 0, "device_config": {"config_rules": [ + {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, + {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, + {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ + {"sample_types": [], "type": "copper/internal", "uuid": "CTP1"}, + {"sample_types": [], "type": "copper/internal", "uuid": "CTP2"}, + {"sample_types": [], "type": "copper/internal", "uuid": "CTP3"} + ]}}} + ]} + } + ] +} diff --git a/src/tests/ecoc24/descriptors/emulated/link_mapping.json b/src/tests/ecoc24/descriptors/emulated/link_mapping.json new file mode 100644 index 0000000000000000000000000000000000000000..9ac5a25994c867bb5387e00363e7b3e0908e030d --- /dev/null +++ b/src/tests/ecoc24/descriptors/emulated/link_mapping.json @@ -0,0 +1,34 @@ +{ + "contexts": [ + {"context_id": {"context_uuid": {"uuid": "admin"}}} + ], + "topologies": [ + {"topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}} + ], + "links": [ + {"link_id": {"link_uuid": {"uuid": "IP1_CTP1-MGON1_OTP1"}}, "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "IP1"}}, "endpoint_uuid": {"uuid": "CTP1"}}, + {"device_id": {"device_uuid": {"uuid": "MG-ON1"}}, "endpoint_uuid": {"uuid": "OTP1"}} + ]}, + {"link_id": {"link_uuid": {"uuid": "IP1_CTP2-MGON1_OTP2"}}, "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "IP1"}}, "endpoint_uuid": {"uuid": "CTP2"}}, + {"device_id": {"device_uuid": {"uuid": "MG-ON1"}}, "endpoint_uuid": {"uuid": "OTP2"}} + ]}, + {"link_id": {"link_uuid": {"uuid": "IP1CTP3-MGON1_OTP3"}}, "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "IP1"}}, "endpoint_uuid": {"uuid": "CTP3"}}, + {"device_id": {"device_uuid": {"uuid": "MG-ON1"}}, "endpoint_uuid": {"uuid": "OTP3"}} + ]}, + {"link_id": {"link_uuid": {"uuid": "IP2_CTP1-MGON3_OTP1"}}, "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "IP2"}}, "endpoint_uuid": {"uuid": "CTP1"}}, + {"device_id": {"device_uuid": {"uuid": "MG-ON3"}}, "endpoint_uuid": {"uuid": "OTP1"}} + ]}, + {"link_id": {"link_uuid": {"uuid": "IP2_CTP2-MGON3_OTP2"}}, "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "IP2"}}, "endpoint_uuid": {"uuid": "CTP2"}}, + {"device_id": {"device_uuid": {"uuid": "MG-ON3"}}, "endpoint_uuid": {"uuid": "OTP2"}} + ]}, + {"link_id": {"link_uuid": {"uuid": "IP2_CTP3-MGON3_OTP3"}}, "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "IP2"}}, "endpoint_uuid": {"uuid": "CTP3"}}, + {"device_id": {"device_uuid": {"uuid": "MG-ON3"}}, "endpoint_uuid": {"uuid": "OTP3"}} + ]} + ] +} diff --git a/src/tests/ecoc24/dump_logs.sh b/src/tests/ecoc24/dump_logs.sh new file mode 100755 index 0000000000000000000000000000000000000000..bb9a35d126a94812d4157d2ba5b4725acbde4caf --- /dev/null +++ b/src/tests/ecoc24/dump_logs.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + + +rm -rf tmp/exec + +echo "Collecting logs for E2E..." +mkdir -p tmp/exec/e2e +kubectl --namespace tfs-e2e logs deployments/contextservice server > tmp/exec/e2e/context.log +kubectl --namespace tfs-e2e logs deployments/deviceservice server > tmp/exec/e2e/device.log +kubectl --namespace tfs-e2e logs deployments/serviceservice server > tmp/exec/e2e/service.log +kubectl --namespace tfs-e2e logs deployments/pathcompservice frontend > tmp/exec/e2e/pathcomp-frontend.log +kubectl --namespace tfs-e2e logs deployments/pathcompservice backend > tmp/exec/e2e/pathcomp-backend.log +kubectl --namespace tfs-e2e logs deployments/sliceservice server > tmp/exec/e2e/slice.log +printf "\n" + +echo "Collecting logs for IP..." +mkdir -p tmp/exec/ip +kubectl --namespace tfs-ip logs deployments/contextservice server > tmp/exec/ip/context.log +kubectl --namespace tfs-ip logs deployments/deviceservice server > tmp/exec/ip/device.log +kubectl --namespace tfs-ip logs deployments/serviceservice server > tmp/exec/ip/service.log +kubectl --namespace tfs-ip logs deployments/pathcompservice frontend > tmp/exec/ip/pathcomp-frontend.log +kubectl --namespace tfs-ip logs deployments/pathcompservice backend > tmp/exec/ip/pathcomp-backend.log +kubectl --namespace tfs-ip logs deployments/sliceservice server > tmp/exec/ip/slice.log +printf "\n" + +echo "Done!" diff --git a/src/tests/ecoc24/nginx-ingress-controller-e2e.yaml b/src/tests/ecoc24/nginx-ingress-controller-e2e.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b5f2447aab2ad557e1dc56cdb86a61962494f67d --- /dev/null +++ b/src/tests/ecoc24/nginx-ingress-controller-e2e.yaml @@ -0,0 +1,138 @@ +# Copyright 2022-2024 ETSI OSG/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. + +apiVersion: v1 +kind: ConfigMap +metadata: + name: nginx-load-balancer-microk8s-conf-e2e + namespace: ingress +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: nginx-ingress-udp-microk8s-conf-e2e + namespace: ingress +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: nginx-ingress-tcp-microk8s-conf-e2e + namespace: ingress +--- +apiVersion: networking.k8s.io/v1 +kind: IngressClass +metadata: + name: tfs-ingress-class-e2e + annotations: + ingressclass.kubernetes.io/is-default-class: "false" +spec: + controller: tfs.etsi.org/controller-class-e2e +--- +apiVersion: apps/v1 +kind: DaemonSet +metadata: + name: nginx-ingress-microk8s-controller-e2e + namespace: ingress + labels: + microk8s-application: nginx-ingress-microk8s-e2e +spec: + selector: + matchLabels: + name: nginx-ingress-microk8s-e2e + updateStrategy: + rollingUpdate: + maxSurge: 0 + maxUnavailable: 1 + type: RollingUpdate + template: + metadata: + labels: + name: nginx-ingress-microk8s-e2e + spec: + terminationGracePeriodSeconds: 60 + restartPolicy: Always + serviceAccountName: nginx-ingress-microk8s-serviceaccount + containers: + - image: k8s.gcr.io/ingress-nginx/controller:v1.2.0 + imagePullPolicy: IfNotPresent + name: nginx-ingress-microk8s + livenessProbe: + httpGet: + path: /healthz + port: 10254 + scheme: HTTP + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + failureThreshold: 3 + timeoutSeconds: 5 + readinessProbe: + httpGet: + path: /healthz + port: 10254 + scheme: HTTP + periodSeconds: 10 + successThreshold: 1 + failureThreshold: 3 + timeoutSeconds: 5 + lifecycle: + preStop: + exec: + command: + - /wait-shutdown + securityContext: + capabilities: + add: + - NET_BIND_SERVICE + drop: + - ALL + runAsUser: 101 # www-data + env: + - name: POD_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.name + - name: POD_NAMESPACE + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.namespace + ports: + - name: http + containerPort: 80 + hostPort: 8001 + protocol: TCP + - name: https + containerPort: 443 + hostPort: 4431 + protocol: TCP + - name: health + containerPort: 10254 + hostPort: 12541 + protocol: TCP + - name: ws + containerPort: 8761 + hostPort: 8761 + protocol: TCP + args: + - /nginx-ingress-controller + - --configmap=$(POD_NAMESPACE)/nginx-load-balancer-microk8s-conf-e2e + - --tcp-services-configmap=$(POD_NAMESPACE)/nginx-ingress-tcp-microk8s-conf-e2e + - --udp-services-configmap=$(POD_NAMESPACE)/nginx-ingress-udp-microk8s-conf-e2e + - --election-id=ingress-controller-leader-e2e + - --controller-class=tfs.etsi.org/controller-class-e2e + - --ingress-class=tfs-ingress-class-e2e + - ' ' + - --publish-status-address=127.0.0.1 diff --git a/src/tests/ecoc24/nginx-ingress-controller-ip.yaml b/src/tests/ecoc24/nginx-ingress-controller-ip.yaml new file mode 100644 index 0000000000000000000000000000000000000000..4735ae264a27e6f691d2900701afdd2b0ef2e3d4 --- /dev/null +++ b/src/tests/ecoc24/nginx-ingress-controller-ip.yaml @@ -0,0 +1,138 @@ +# Copyright 2022-2024 ETSI OSG/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. + +apiVersion: v1 +kind: ConfigMap +metadata: + name: nginx-load-balancer-microk8s-conf-ip + namespace: ingress +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: nginx-ingress-udp-microk8s-conf-ip + namespace: ingress +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: nginx-ingress-tcp-microk8s-conf-ip + namespace: ingress +--- +apiVersion: networking.k8s.io/v1 +kind: IngressClass +metadata: + name: tfs-ingress-class-ip + annotations: + ingressclass.kubernetes.io/is-default-class: "false" +spec: + controller: tfs.etsi.org/controller-class-ip +--- +apiVersion: apps/v1 +kind: DaemonSet +metadata: + name: nginx-ingress-microk8s-controller-ip + namespace: ingress + labels: + microk8s-application: nginx-ingress-microk8s-ip +spec: + selector: + matchLabels: + name: nginx-ingress-microk8s-ip + updateStrategy: + rollingUpdate: + maxSurge: 0 + maxUnavailable: 1 + type: RollingUpdate + template: + metadata: + labels: + name: nginx-ingress-microk8s-ip + spec: + terminationGracePeriodSeconds: 60 + restartPolicy: Always + serviceAccountName: nginx-ingress-microk8s-serviceaccount + containers: + - image: k8s.gcr.io/ingress-nginx/controller:v1.2.0 + imagePullPolicy: IfNotPresent + name: nginx-ingress-microk8s + livenessProbe: + httpGet: + path: /healthz + port: 10254 + scheme: HTTP + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + failureThreshold: 3 + timeoutSeconds: 5 + readinessProbe: + httpGet: + path: /healthz + port: 10254 + scheme: HTTP + periodSeconds: 10 + successThreshold: 1 + failureThreshold: 3 + timeoutSeconds: 5 + lifecycle: + preStop: + exec: + command: + - /wait-shutdown + securityContext: + capabilities: + add: + - NET_BIND_SERVICE + drop: + - ALL + runAsUser: 101 # www-data + env: + - name: POD_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.name + - name: POD_NAMESPACE + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.namespace + ports: + - name: http + containerPort: 80 + hostPort: 8002 + protocol: TCP + - name: https + containerPort: 443 + hostPort: 4432 + protocol: TCP + - name: health + containerPort: 10254 + hostPort: 12542 + protocol: TCP + - name: ws + containerPort: 8762 + hostPort: 8762 + protocol: TCP + args: + - /nginx-ingress-controller + - --configmap=$(POD_NAMESPACE)/nginx-load-balancer-microk8s-conf-ip + - --tcp-services-configmap=$(POD_NAMESPACE)/nginx-ingress-tcp-microk8s-conf-ip + - --udp-services-configmap=$(POD_NAMESPACE)/nginx-ingress-udp-microk8s-conf-ip + - --election-id=ingress-controller-leader-ip + - --controller-class=tfs.etsi.org/controller-class-ip + - --ingress-class=tfs-ingress-class-ip + - ' ' + - --publish-status-address=127.0.0.1 diff --git a/src/tests/ecoc24/nginx-ingress-controller-opt.yaml b/src/tests/ecoc24/nginx-ingress-controller-opt.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d62898b60bed4f16999ff71f3c6173fd5d334e12 --- /dev/null +++ b/src/tests/ecoc24/nginx-ingress-controller-opt.yaml @@ -0,0 +1,138 @@ +# Copyright 2022-2024 ETSI OSG/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. + +apiVersion: v1 +kind: ConfigMap +metadata: + name: nginx-load-balancer-microk8s-conf-opt + namespace: ingress +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: nginx-ingress-udp-microk8s-conf-opt + namespace: ingress +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: nginx-ingress-tcp-microk8s-conf-opt + namespace: ingress +--- +apiVersion: networking.k8s.io/v1 +kind: IngressClass +metadata: + name: tfs-ingress-class-opt + annotations: + ingressclass.kubernetes.io/is-default-class: "false" +spec: + controller: tfs.etsi.org/controller-class-opt +--- +apiVersion: apps/v1 +kind: DaemonSet +metadata: + name: nginx-ingress-microk8s-controller-opt + namespace: ingress + labels: + microk8s-application: nginx-ingress-microk8s-opt +spec: + selector: + matchLabels: + name: nginx-ingress-microk8s-opt + updateStrategy: + rollingUpdate: + maxSurge: 0 + maxUnavailable: 1 + type: RollingUpdate + template: + metadata: + labels: + name: nginx-ingress-microk8s-opt + spec: + terminationGracePeriodSeconds: 60 + restartPolicy: Always + serviceAccountName: nginx-ingress-microk8s-serviceaccount + containers: + - image: k8s.gcr.io/ingress-nginx/controller:v1.2.0 + imagePullPolicy: IfNotPresent + name: nginx-ingress-microk8s + livenessProbe: + httpGet: + path: /healthz + port: 10254 + scheme: HTTP + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + failureThreshold: 3 + timeoutSeconds: 5 + readinessProbe: + httpGet: + path: /healthz + port: 10254 + scheme: HTTP + periodSeconds: 10 + successThreshold: 1 + failureThreshold: 3 + timeoutSeconds: 5 + lifecycle: + preStop: + exec: + command: + - /wait-shutdown + securityContext: + capabilities: + add: + - NET_BIND_SERVICE + drop: + - ALL + runAsUser: 101 # www-data + env: + - name: POD_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.name + - name: POD_NAMESPACE + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.namespace + ports: + - name: http + containerPort: 80 + hostPort: 8003 + protocol: TCP + - name: https + containerPort: 443 + hostPort: 4433 + protocol: TCP + - name: health + containerPort: 10254 + hostPort: 12543 + protocol: TCP + - name: ws + containerPort: 8763 + hostPort: 8763 + protocol: TCP + args: + - /nginx-ingress-controller + - --configmap=$(POD_NAMESPACE)/nginx-load-balancer-microk8s-conf-opt + - --tcp-services-configmap=$(POD_NAMESPACE)/nginx-ingress-tcp-microk8s-conf-opt + - --udp-services-configmap=$(POD_NAMESPACE)/nginx-ingress-udp-microk8s-conf-opt + - --election-id=ingress-controller-leader-opt + - --controller-class=tfs.etsi.org/controller-class-opt + - --ingress-class=tfs-ingress-class-opt + - ' ' + - --publish-status-address=127.0.0.1 diff --git a/src/tests/ecoc24/show_deploy.sh b/src/tests/ecoc24/show_deploy.sh new file mode 100755 index 0000000000000000000000000000000000000000..295dd29b4d132c6f809a01e5dc2cb17a956531a2 --- /dev/null +++ b/src/tests/ecoc24/show_deploy.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + +######################################################################################################################## +# Automated steps start here +######################################################################################################################## + +echo "E2E Deployment Resources:" +kubectl --namespace tfs-e2e get all +printf "\n" + +echo "E2E Deployment Ingress:" +kubectl --namespace tfs-e2e get ingress +printf "\n" + +echo "IP Deployment Resources:" +kubectl --namespace tfs-ip get all +printf "\n" + +echo "IP Deployment Ingress:" +kubectl --namespace tfs-ip get ingress +printf "\n" + +echo "Optical Deployment Resources:" +kubectl --namespace tfs-opt get all +printf "\n" + +echo "Optical Deployment Ingress:" +kubectl --namespace tfs-opt get ingress +printf "\n" diff --git a/src/tests/ecoc24/subscription_ws_e2e.sh b/src/tests/ecoc24/subscription_ws_e2e.sh new file mode 100755 index 0000000000000000000000000000000000000000..33f5a5109044b1aa7384da41965d1b84a29cb945 --- /dev/null +++ b/src/tests/ecoc24/subscription_ws_e2e.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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 +######################################################################################################################## + +# If not already set, set the namespace where CockroackDB will be deployed. +export SUBSCRIPTION_WS_NAMESPACE=${SUBSCRIPTION_WS_NAMESPACE:-"tfs-e2e"} + +# If not already set, set the external port interface will be exposed to. +export SUBSCRIPTION_WS_EXT_PORT=${SUBSCRIPTION_WS_EXT_PORT:-"8761"} + + +######################################################################################################################## +# Automated steps start here +######################################################################################################################## + + +echo "Subscription WebSocket Port Mapping" +echo ">>> ExposeSubscription WebSocket port (${SUBSCRIPTION_WS_EXT_PORT}->${SUBSCRIPTION_WS_EXT_PORT})" +PATCH='{"data": {"'${SUBSCRIPTION_WS_EXT_PORT}'": "'${SUBSCRIPTION_WS_NAMESPACE}'/nbiservice:'${SUBSCRIPTION_WS_EXT_PORT}'"}}' +kubectl patch configmap nginx-ingress-tcp-microk8s-conf-e2e --namespace ingress --patch "${PATCH}" + +PORT_MAP='{"containerPort": '${SUBSCRIPTION_WS_EXT_PORT}', "hostPort": '${SUBSCRIPTION_WS_EXT_PORT}'}' +CONTAINER='{"name": "nginx-ingress-microk8s", "ports": ['${PORT_MAP}']}' +PATCH='{"spec": {"template": {"spec": {"containers": ['${CONTAINER}']}}}}' +kubectl patch daemonset nginx-ingress-microk8s-controller-e2e --namespace ingress --patch "${PATCH}" +echo diff --git a/src/tests/ecoc24/subscription_ws_ip.sh b/src/tests/ecoc24/subscription_ws_ip.sh new file mode 100755 index 0000000000000000000000000000000000000000..795469e8fcb026cd1734a6330fc7b8c4a1e97aac --- /dev/null +++ b/src/tests/ecoc24/subscription_ws_ip.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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 +######################################################################################################################## + +# If not already set, set the namespace where CockroackDB will be deployed. +export SUBSCRIPTION_WS_NAMESPACE=${SUBSCRIPTION_WS_NAMESPACE:-"tfs-ip"} + +# If not already set, set the external port interface will be exposed to. +export SUBSCRIPTION_WS_INT_PORT=${SUBSCRIPTION_WS_INT_PORT:-"8762"} +######################################################################################################################## +# Automated steps start here +######################################################################################################################## + + + + +echo "Subscription WebSocket Port Mapping" +echo ">>> ExposeSubscription WebSocket port (${SUBSCRIPTION_WS_INT_PORT}->${SUBSCRIPTION_WS_INT_PORT})" +PATCH='{"data": {"'${SUBSCRIPTION_WS_INT_PORT}'": "'${SUBSCRIPTION_WS_NAMESPACE}'/nbiservice:'${SUBSCRIPTION_WS_INT_PORT}'"}}' +kubectl patch configmap nginx-ingress-tcp-microk8s-conf-ip --namespace ingress --patch "${PATCH}" + +PORT_MAP='{"containerPort": '${SUBSCRIPTION_WS_INT_PORT}', "hostPort": '${SUBSCRIPTION_WS_INT_PORT}'}' +CONTAINER='{"name": "nginx-ingress-microk8s", "ports": ['${PORT_MAP}']}' +PATCH='{"spec": {"template": {"spec": {"containers": ['${CONTAINER}']}}}}' +kubectl patch daemonset nginx-ingress-microk8s-controller-ip --namespace ingress --patch "${PATCH}" +echo diff --git a/src/tests/ecoc24/tfs-ingress-e2e.yaml b/src/tests/ecoc24/tfs-ingress-e2e.yaml new file mode 100644 index 0000000000000000000000000000000000000000..1b82ae44ca0945163701bc18a250a1742e921519 --- /dev/null +++ b/src/tests/ecoc24/tfs-ingress-e2e.yaml @@ -0,0 +1,67 @@ +# Copyright 2022-2024 ETSI OSG/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. + +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: tfs-ingress-e2e + annotations: + nginx.ingress.kubernetes.io/rewrite-target: /$2 +spec: + ingressClassName: tfs-ingress-class-e2e + rules: + - http: + paths: + - path: /webui(/|$)(.*) + pathType: Prefix + backend: + service: + name: webuiservice + port: + number: 8004 + - path: /grafana(/|$)(.*) + pathType: Prefix + backend: + service: + name: webuiservice + port: + number: 3000 + - path: /()(restconf/.*) + pathType: Prefix + backend: + service: + name: nbiservice + port: + number: 8080 + - path: /()(tfs-api/.*) + pathType: Prefix + backend: + service: + name: nbiservice + port: + number: 8080 + - path: /()(bmw/.*) + pathType: Prefix + backend: + service: + name: nbiservice + port: + number: 8080 + - path: /()(qkd_app/.*) + pathType: Prefix + backend: + service: + name: nbiservice + port: + number: 8080 diff --git a/src/tests/ecoc24/tfs-ingress-ip.yaml b/src/tests/ecoc24/tfs-ingress-ip.yaml new file mode 100644 index 0000000000000000000000000000000000000000..6ee6ada32f3f278c5f36dfbb08d936a432bfef23 --- /dev/null +++ b/src/tests/ecoc24/tfs-ingress-ip.yaml @@ -0,0 +1,67 @@ +# Copyright 2022-2024 ETSI OSG/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. + +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: tfs-ingress-ip + annotations: + nginx.ingress.kubernetes.io/rewrite-target: /$2 +spec: + ingressClassName: tfs-ingress-class-ip + rules: + - http: + paths: + - path: /webui(/|$)(.*) + pathType: Prefix + backend: + service: + name: webuiservice + port: + number: 8004 + - path: /grafana(/|$)(.*) + pathType: Prefix + backend: + service: + name: webuiservice + port: + number: 3000 + - path: /()(restconf/.*) + pathType: Prefix + backend: + service: + name: nbiservice + port: + number: 8080 + - path: /()(tfs-api/.*) + pathType: Prefix + backend: + service: + name: nbiservice + port: + number: 8080 + - path: /()(bmw/.*) + pathType: Prefix + backend: + service: + name: nbiservice + port: + number: 8080 + - path: /()(qkd_app/.*) + pathType: Prefix + backend: + service: + name: nbiservice + port: + number: 8080 diff --git a/src/tests/ecoc24/tfs-ingress-opt.yaml b/src/tests/ecoc24/tfs-ingress-opt.yaml new file mode 100644 index 0000000000000000000000000000000000000000..50ddd4f046acf74cfe57e73f55e29e1b77fd32af --- /dev/null +++ b/src/tests/ecoc24/tfs-ingress-opt.yaml @@ -0,0 +1,67 @@ +# Copyright 2022-2024 ETSI OSG/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. + +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: tfs-ingress-opt + annotations: + nginx.ingress.kubernetes.io/rewrite-target: /$2 +spec: + ingressClassName: tfs-ingress-class-opt + rules: + - http: + paths: + - path: /webui(/|$)(.*) + pathType: Prefix + backend: + service: + name: webuiservice + port: + number: 8004 + - path: /grafana(/|$)(.*) + pathType: Prefix + backend: + service: + name: webuiservice + port: + number: 3000 + - path: /()(restconf/.*) + pathType: Prefix + backend: + service: + name: nbiservice + port: + number: 8080 + - path: /()(tfs-api/.*) + pathType: Prefix + backend: + service: + name: nbiservice + port: + number: 8080 + - path: /()(bmw/.*) + pathType: Prefix + backend: + service: + name: nbiservice + port: + number: 8080 + - path: /()(qkd_app/.*) + pathType: Prefix + backend: + service: + name: nbiservice + port: + number: 8080 diff --git a/src/tests/eucnc24/.gitignore b/src/tests/eucnc24/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..24a4b233365e23a9462f4b64e8b60fef6a62bee4 --- /dev/null +++ b/src/tests/eucnc24/.gitignore @@ -0,0 +1,5 @@ +clab-*/ +images/ +*.clab.yml.bak +*.tar +*.tar.gz diff --git a/src/tests/eucnc24/.gitlab-ci.yml b/src/tests/eucnc24/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..5dec5e36cf2a2984fcbb073190fb386e16a4e8c3 --- /dev/null +++ b/src/tests/eucnc24/.gitlab-ci.yml @@ -0,0 +1,201 @@ +# Copyright 2022-2024 ETSI OSG/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. + +# Build, tag, and push the Docker image to the GitLab Docker registry +build eucnc24: + variables: + TEST_NAME: 'eucnc24' + stage: build + before_script: + - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY + script: + - docker buildx build -t "${TEST_NAME}:latest" -f ./src/tests/${TEST_NAME}/Dockerfile . + - docker tag "${TEST_NAME}:latest" "$CI_REGISTRY_IMAGE/${TEST_NAME}:latest" + - docker push "$CI_REGISTRY_IMAGE/${TEST_NAME}:latest" + after_script: + - docker images --filter="dangling=true" --quiet | xargs -r docker rmi + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)' + - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"' + - changes: + - src/common/**/*.py + - proto/*.proto + - src/tests/${TEST_NAME}/**/*.{py,in,sh,yml} + - src/tests/${TEST_NAME}/Dockerfile + - .gitlab-ci.yml + +# Deploy TeraFlowSDN and Execute end-2-end test +end2end_test eucnc24: + variables: + TEST_NAME: 'eucnc24' + stage: end2end_test + # Disable to force running it after all other tasks + #needs: + # - build eucnc24 + before_script: + - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY + - docker rm -f ${TEST_NAME} || true + - sudo containerlab destroy --all --cleanup || true + + script: + # Download Docker image to run the test + - docker pull "${CI_REGISTRY_IMAGE}/${TEST_NAME}:latest" + + # Check MicroK8s is ready + - microk8s status --wait-ready + - kubectl get pods --all-namespaces + + # Deploy ContainerLab Scenario + - RUNNER_PATH=`pwd` + #- cd $PWD/src/tests/${TEST_NAME} + - mkdir -p /tmp/clab/${TEST_NAME} + - cp -R src/tests/${TEST_NAME}/clab/* /tmp/clab/${TEST_NAME} + - tree -la /tmp/clab/${TEST_NAME} + - cd /tmp/clab/${TEST_NAME} + - sudo containerlab deploy --reconfigure --topo eucnc24.clab.yml + - cd $RUNNER_PATH + + # Wait for initialization of Device NOSes + - sleep 3 + - docker ps -a + + # Configure TeraFlowSDN deployment + # Uncomment if DEBUG log level is needed for the components + #- yq -i '((select(.kind=="Deployment").spec.template.spec.containers.[] | select(.name=="server").env.[]) | select(.name=="LOG_LEVEL").value) |= "DEBUG"' manifests/contextservice.yaml + #- yq -i '((select(.kind=="Deployment").spec.template.spec.containers.[] | select(.name=="server").env.[]) | select(.name=="LOG_LEVEL").value) |= "DEBUG"' manifests/deviceservice.yaml + #- yq -i '((select(.kind=="Deployment").spec.template.spec.containers.[] | select(.name=="frontend").env.[]) | select(.name=="LOG_LEVEL").value) |= "DEBUG"' manifests/pathcompservice.yaml + #- yq -i '((select(.kind=="Deployment").spec.template.spec.containers.[] | select(.name=="server").env.[]) | select(.name=="LOG_LEVEL").value) |= "DEBUG"' manifests/serviceservice.yaml + #- yq -i '((select(.kind=="Deployment").spec.template.spec.containers.[] | select(.name=="server").env.[]) | select(.name=="LOG_LEVEL").value) |= "DEBUG"' manifests/nbiservice.yaml + #- yq -i '((select(.kind=="Deployment").spec.template.spec.containers.[] | select(.name=="server").env.[]) | select(.name=="LOG_LEVEL").value) |= "DEBUG"' manifests/monitoringservice.yaml + + - source src/tests/${TEST_NAME}/deploy_specs.sh + #- export TFS_REGISTRY_IMAGES="${CI_REGISTRY_IMAGE}" + #- export TFS_SKIP_BUILD="YES" + #- export TFS_IMAGE_TAG="latest" + #- echo "TFS_REGISTRY_IMAGES=${CI_REGISTRY_IMAGE}" + + # Deploy TeraFlowSDN + - ./deploy/crdb.sh + - ./deploy/nats.sh + - ./deploy/qdb.sh + - ./deploy/kafka.sh + - ./deploy/tfs.sh + - ./deploy/show.sh + + ## Wait for Context to be subscribed to NATS + ## WARNING: this loop is infinite if there is no subscriber (such as monitoring). + ## Investigate if we can use a counter to limit the number of iterations. + ## For now, keep it commented out. + #- LOOP_MAX_ATTEMPTS=180 + #- LOOP_COUNTER=0 + #- > + # while ! kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/contextservice -c server 2>&1 | grep -q 'Subscriber is Ready? True'; do + # echo "Attempt: $LOOP_COUNTER" + # kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/contextservice -c server 2>&1; + # sleep 1; + # LOOP_COUNTER=$((LOOP_COUNTER + 1)) + # if [ "$LOOP_COUNTER" -ge "$LOOP_MAX_ATTEMPTS" ]; then + # echo "Max attempts reached, exiting the loop." + # break + # fi + # done + - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/contextservice -c server + + # Run end-to-end test: onboard scenario + - > + docker run -t --rm --name ${TEST_NAME} --network=host + --volume "$PWD/tfs_runtime_env_vars.sh:/var/teraflow/tfs_runtime_env_vars.sh" + --volume "$PWD/src/tests/${TEST_NAME}:/opt/results" + $CI_REGISTRY_IMAGE/${TEST_NAME}:latest /var/teraflow/run-onboarding.sh + + # Run end-to-end test: configure service TFS + - > + docker run -t --rm --name ${TEST_NAME} --network=host + --volume "$PWD/tfs_runtime_env_vars.sh:/var/teraflow/tfs_runtime_env_vars.sh" + --volume "$PWD/src/tests/${TEST_NAME}:/opt/results" + $CI_REGISTRY_IMAGE/${TEST_NAME}:latest /var/teraflow/run-service-tfs-create.sh + + # Run end-to-end test: test connectivity with ping + - sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 192.168.1.10' + - sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 192.168.1.1' + - sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 192.168.2.1' + - sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 192.168.2.10' + - sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 192.168.3.10' + + # Run end-to-end test: deconfigure service TFS + - > + docker run -t --rm --name ${TEST_NAME} --network=host + --volume "$PWD/tfs_runtime_env_vars.sh:/var/teraflow/tfs_runtime_env_vars.sh" + --volume "$PWD/src/tests/${TEST_NAME}:/opt/results" + $CI_REGISTRY_IMAGE/${TEST_NAME}:latest /var/teraflow/run-service-tfs-remove.sh + + # Run end-to-end test: configure service IETF + - > + docker run -t --rm --name ${TEST_NAME} --network=host + --volume "$PWD/tfs_runtime_env_vars.sh:/var/teraflow/tfs_runtime_env_vars.sh" + --volume "$PWD/src/tests/${TEST_NAME}:/opt/results" + $CI_REGISTRY_IMAGE/${TEST_NAME}:latest /var/teraflow/run-service-ietf-create.sh + + # Run end-to-end test: test connectivity with ping + - sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 192.168.1.10' + - sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 192.168.1.1' + - sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 192.168.2.1' + - sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 192.168.2.10' + - sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 192.168.3.10' + + # Run end-to-end test: deconfigure service IETF + - > + docker run -t --rm --name ${TEST_NAME} --network=host + --volume "$PWD/tfs_runtime_env_vars.sh:/var/teraflow/tfs_runtime_env_vars.sh" + --volume "$PWD/src/tests/${TEST_NAME}:/opt/results" + $CI_REGISTRY_IMAGE/${TEST_NAME}:latest /var/teraflow/run-service-ietf-remove.sh + + # Run end-to-end test: cleanup scenario + - > + docker run -t --rm --name ${TEST_NAME} --network=host + --volume "$PWD/tfs_runtime_env_vars.sh:/var/teraflow/tfs_runtime_env_vars.sh" + --volume "$PWD/src/tests/${TEST_NAME}:/opt/results" + $CI_REGISTRY_IMAGE/${TEST_NAME}:latest /var/teraflow/run-cleanup.sh + + after_script: + # Dump TeraFlowSDN component logs + - source src/tests/${TEST_NAME}/deploy_specs.sh + - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/contextservice -c server + - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/deviceservice -c server + - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/pathcompservice -c frontend + - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/serviceservice -c server + - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/nbiservice -c server + #- kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/monitoringservice -c server + + # Destroy Scenario + - docker rm -f ${TEST_NAME} || true + - RUNNER_PATH=`pwd` + #- cd $PWD/src/tests/${TEST_NAME} + - cd /tmp/clab/${TEST_NAME} + - sudo containerlab destroy --topo eucnc24.clab.yml --cleanup || true + - sudo rm -rf clab-eucnc24/ .eucnc24.clab.yml.bak || true + - cd $RUNNER_PATH + - kubectl delete namespaces tfs || true + + # Clean old docker images + - docker images --filter="dangling=true" --quiet | xargs -r docker rmi + + #coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/' + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)' + - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"' + artifacts: + when: always + reports: + junit: ./src/tests/${TEST_NAME}/report_*.xml diff --git a/src/tests/eucnc24/Dockerfile b/src/tests/eucnc24/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..23a38bace79880f37fe7957566f7d84030fa7fd8 --- /dev/null +++ b/src/tests/eucnc24/Dockerfile @@ -0,0 +1,84 @@ +# Copyright 2022-2024 ETSI OSG/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. + +FROM python:3.9-slim + +# Install dependencies +RUN apt-get --yes --quiet --quiet update && \ + apt-get --yes --quiet --quiet install wget g++ git && \ + rm -rf /var/lib/apt/lists/* + +# Set Python to show logs as they occur +ENV PYTHONUNBUFFERED=0 + +# Get generic Python packages +RUN python3 -m pip install --upgrade pip +RUN python3 -m pip install --upgrade setuptools wheel +RUN python3 -m pip install --upgrade pip-tools + +# Get common Python packages +# Note: this step enables sharing the previous Docker build steps among all the Python components +WORKDIR /var/teraflow +COPY common_requirements.in common_requirements.in +RUN pip-compile --quiet --output-file=common_requirements.txt common_requirements.in +RUN python3 -m pip install -r common_requirements.txt + +# Add common files into working directory +WORKDIR /var/teraflow/common +COPY src/common/. ./ +RUN rm -rf proto + +# Create proto sub-folder, copy .proto files, and generate Python code +RUN mkdir -p /var/teraflow/common/proto +WORKDIR /var/teraflow/common/proto +RUN touch __init__.py +COPY proto/*.proto ./ +RUN python3 -m grpc_tools.protoc -I=. --python_out=. --grpc_python_out=. *.proto +RUN rm *.proto +RUN find . -type f -exec sed -i -E 's/(import\ .*)_pb2/from . \1_pb2/g' {} \; + +# Create component sub-folders, get specific Python packages +RUN mkdir -p /var/teraflow/tests/eucnc24 +WORKDIR /var/teraflow/tests/eucnc24 +COPY src/tests/eucnc24/requirements.in requirements.in +RUN pip-compile --quiet --output-file=requirements.txt requirements.in +RUN python3 -m pip install -r requirements.txt + +# Add component files into working directory +WORKDIR /var/teraflow +COPY src/__init__.py ./__init__.py +COPY src/common/*.py ./common/ +COPY src/common/tests/. ./common/tests/ +COPY src/common/tools/. ./common/tools/ +COPY src/context/__init__.py context/__init__.py +COPY src/context/client/. context/client/ +COPY src/device/__init__.py device/__init__.py +COPY src/device/client/. device/client/ +COPY src/monitoring/__init__.py monitoring/__init__.py +COPY src/monitoring/client/. monitoring/client/ +COPY src/service/__init__.py service/__init__.py +COPY src/service/client/. service/client/ +COPY src/slice/__init__.py slice/__init__.py +COPY src/slice/client/. slice/client/ +COPY src/tests/*.py ./tests/ +COPY src/tests/eucnc24/__init__.py ./tests/eucnc24/__init__.py +COPY src/tests/eucnc24/data/. ./tests/eucnc24/data/ +COPY src/tests/eucnc24/tests/. ./tests/eucnc24/tests/ +COPY src/tests/eucnc24/scripts/. ./ + +RUN apt-get --yes --quiet --quiet update && \ + apt-get --yes --quiet --quiet install tree && \ + rm -rf /var/lib/apt/lists/* + +RUN tree -la /var/teraflow diff --git a/src/tests/eucnc24/README.md b/src/tests/eucnc24/README.md new file mode 100644 index 0000000000000000000000000000000000000000..f8c2f9d49793b8e0751ea4ea09bf893e7ceae0b6 --- /dev/null +++ b/src/tests/eucnc24/README.md @@ -0,0 +1,123 @@ +# DataPlane-in-a-Box - Control an Emulated DataPlane through TeraFlowSDN + +## Emulated DataPlane Deployment +- ContainerLab +- Scenario +- Descriptor + +## TeraFlowSDN Deployment +```bash +cd ~/tfs-ctrl +source dataplane-in-a-box/deploy_specs.sh +./deploy/all.sh +``` + +# ContainerLab - Arista cEOS - Commands + +## Download and install ContainerLab +```bash +sudo bash -c "$(curl -sL https://get.containerlab.dev)" -- -v 0.48.6 +``` + +## Download Arista cEOS image and create Docker image +```bash +cd ~/tfs-ctrl/dataplane-in-a-box +docker import arista/cEOS64-lab-4.31.2F.tar ceos:4.31.2F +``` + +## Deploy scenario +```bash +cd ~/tfs-ctrl/dataplane-in-a-box +sudo containerlab deploy --topo arista.clab.yml +``` + +## Inspect scenario +```bash +cd ~/tfs-ctrl/dataplane-in-a-box +sudo containerlab inspect --topo arista.clab.yml +``` + +## Destroy scenario +```bash +cd ~/tfs-ctrl/dataplane-in-a-box +sudo containerlab destroy --topo arista.clab.yml +sudo rm -rf clab-arista/ .arista.clab.yml.bak +``` + +## Access cEOS Bash +```bash +docker exec -it clab-arista-r1 bash +``` + +## Access cEOS CLI +```bash +docker exec -it clab-arista-r1 Cli +docker exec -it clab-arista-r2 Cli +``` + +## Configure ContainerLab clients +```bash +docker exec -it clab-arista-client1 bash + ip address add 192.168.1.10/24 dev eth1 + ip route add 192.168.2.0/24 via 192.168.1.1 + ip route add 192.168.3.0/24 via 192.168.1.1 + ping 192.168.2.10 + ping 192.168.3.10 + +docker exec -it clab-arista-client2 bash + ip address add 192.168.2.10/24 dev eth1 + ip route add 192.168.1.0/24 via 192.168.2.1 + ip route add 192.168.3.0/24 via 192.168.2.1 + ping 192.168.1.10 + ping 192.168.3.10 + +docker exec -it clab-arista-client3 bash + ip address add 192.168.3.10/24 dev eth1 + ip route add 192.168.2.0/24 via 192.168.3.1 + ip route add 192.168.3.0/24 via 192.168.3.1 + ping 192.168.2.10 + ping 192.168.3.10 +``` + +## Install gNMIc +```bash +sudo bash -c "$(curl -sL https://get-gnmic.kmrd.dev)" +``` + +## gNMI Capabilities request +```bash +gnmic --address clab-arista-wan1 --port 6030 --username admin --password admin --insecure capabilities +``` + +## gNMI Get request +```bash +gnmic --address clab-arista-wan1 --port 6030 --username admin --password admin --insecure --encoding json_ietf get --path / > wan1.json +gnmic --address clab-arista-wan1 --port 6030 --username admin --password admin --insecure --encoding json_ietf get --path /interfaces/interface > wan1-ifaces.json +``` + +## gNMI Set request +```bash +#gnmic --address clab-arista-wan1 --port 6030 --username admin --password admin --insecure --encoding json_ietf set --update-path /system/config/hostname --update-value srl11 +#gnmic --address clab-arista-wan1 --port 6030 --username admin --password admin --insecure --encoding json_ietf get --path /system/config/hostname +``` + +## Subscribe request +```bash +gnmic --address clab-arista-wan1 --port 6030 --username admin --password admin --insecure --encoding json_ietf subscribe --path /interfaces/interface[name=Management0]/state/ + +# In another terminal, you can generate traffic opening SSH connection +ssh admin@clab-arista-wan1 +``` + +# Check configurations done: +```bash +gnmic --address clab-arista-wan1 --port 6030 --username admin --password admin --insecure --encoding json_ietf get --path '/network-instances' > wan1-nis.json +gnmic --address clab-arista-wan1 --port 6030 --username admin --password admin --insecure --encoding json_ietf get --path '/interfaces' > wan1-ifs.json +``` + +# Delete elements: +```bash +--address clab-arista-wan1 --port 6030 --username admin --password admin --insecure --encoding json_ietf set --delete '/network-instances/network-instance[name=b19229e8]' +--address clab-arista-wan1 --port 6030 --username admin --password admin --insecure --encoding json_ietf set --delete '/interfaces/interface[name=ethernet-1/1]/subinterfaces/subinterface[index=0]' +--address clab-arista-wan1 --port 6030 --username admin --password admin --insecure --encoding json_ietf set --delete '/interfaces/interface[name=ethernet-1/2]/subinterfaces/subinterface[index=0]' +``` diff --git a/src/tests/eucnc24/__init__.py b/src/tests/eucnc24/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..3ee6f7071f145e06c3aeaefc09a43ccd88e619e3 --- /dev/null +++ b/src/tests/eucnc24/__init__.py @@ -0,0 +1,14 @@ +# Copyright 2022-2024 ETSI OSG/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. + diff --git a/src/tests/eucnc24/clab/eucnc24.clab.yml b/src/tests/eucnc24/clab/eucnc24.clab.yml new file mode 100644 index 0000000000000000000000000000000000000000..c9182ba1d405cce514d54494da37d27586fd83ac --- /dev/null +++ b/src/tests/eucnc24/clab/eucnc24.clab.yml @@ -0,0 +1,70 @@ +# Copyright 2022-2024 ETSI OSG/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. + +# TFS - Arista devices + Linux clients + +name: eucnc24 + +mgmt: + network: mgmt-net + ipv4-subnet: 172.20.20.0/24 + +topology: + kinds: + arista_ceos: + kind: arista_ceos + #image: ceos:4.30.4M + #image: ceos:4.31.2F + #image: ceos:4.31.5M + #image: ceos:4.32.0F + image: ceos:4.32.2F + #image: ceos:4.32.2.1F + linux: + kind: linux + image: ghcr.io/hellt/network-multitool:latest + + nodes: + r1: + kind: arista_ceos + mgmt-ipv4: 172.20.20.101 + + r2: + kind: arista_ceos + mgmt-ipv4: 172.20.20.102 + + r3: + kind: arista_ceos + mgmt-ipv4: 172.20.20.103 + + dc1: + kind: linux + mgmt-ipv4: 172.20.20.211 + exec: + - ip link set address 00:c1:ab:00:01:01 dev eth1 + - ip address add 192.168.1.10/24 dev eth1 + - ip route add 192.168.2.0/24 via 192.168.1.1 + + dc2: + kind: linux + mgmt-ipv4: 172.20.20.221 + exec: + - ip link set address 00:c1:ab:00:02:01 dev eth1 + - ip address add 192.168.2.10/24 dev eth1 + - ip route add 192.168.1.0/24 via 192.168.2.1 + + links: + - endpoints: ["r1:eth2", "r2:eth1"] + - endpoints: ["r2:eth3", "r3:eth2"] + - endpoints: ["r1:eth10", "dc1:eth1"] + - endpoints: ["r3:eth10", "dc2:eth1"] diff --git a/src/tests/eucnc24/data/ietf-l3vpn-service.json b/src/tests/eucnc24/data/ietf-l3vpn-service.json new file mode 100644 index 0000000000000000000000000000000000000000..a6297b28f0fea94dcc8a457ad2b45d38e77aa4ea --- /dev/null +++ b/src/tests/eucnc24/data/ietf-l3vpn-service.json @@ -0,0 +1,83 @@ +{ + "ietf-l3vpn-svc:l3vpn-svc": { + "vpn-services": {"vpn-service": [{"vpn-id": "ietf-l3vpn-svc"}]}, + "sites": { + "site": [ + { + "site-id": "site_DC1", + "management": {"type": "ietf-l3vpn-svc:provider-managed"}, + "locations": {"location": [{"location-id": "DC1"}]}, + "devices": {"device": [{"device-id": "dc1", "location": "DC1"}]}, + "site-network-accesses": { + "site-network-access": [ + { + "site-network-access-id": "int", + "site-network-access-type": "ietf-l3vpn-svc:multipoint", + "device-reference": "dc1", + "vpn-attachment": {"vpn-id": "ietf-l3vpn-svc", "site-role": "ietf-l3vpn-svc:spoke-role"}, + "ip-connection": { + "ipv4": { + "address-allocation-type": "ietf-l3vpn-svc:static-address", + "addresses": { + "provider-address": "192.168.1.1", + "customer-address": "192.168.1.10", + "prefix-length": 24 + } + } + }, + "service": { + "svc-mtu": 1500, + "svc-input-bandwidth": 1000000000, + "svc-output-bandwidth": 1000000000, + "qos": {"qos-profile": {"classes": {"class": [{ + "class-id": "qos-realtime", + "direction": "ietf-l3vpn-svc:both", + "latency": {"latency-boundary": 10}, + "bandwidth": {"guaranteed-bw-percent": 100} + }]}}} + } + } + ] + } + }, + { + "site-id": "site_DC2", + "management": {"type": "ietf-l3vpn-svc:provider-managed"}, + "locations": {"location": [{"location-id": "DC2"}]}, + "devices": {"device": [{"device-id": "dc2", "location": "DC2"}]}, + "site-network-accesses": { + "site-network-access": [ + { + "site-network-access-id": "int", + "site-network-access-type": "ietf-l3vpn-svc:multipoint", + "device-reference": "dc2", + "vpn-attachment": {"vpn-id": "ietf-l3vpn-svc", "site-role": "ietf-l3vpn-svc:hub-role"}, + "ip-connection": { + "ipv4": { + "address-allocation-type": "ietf-l3vpn-svc:static-address", + "addresses": { + "provider-address": "192.168.2.1", + "customer-address": "192.168.2.10", + "prefix-length": 24 + } + } + }, + "service": { + "svc-mtu": 1500, + "svc-input-bandwidth": 1000000000, + "svc-output-bandwidth": 1000000000, + "qos": {"qos-profile": {"classes": {"class": [{ + "class-id": "qos-realtime", + "direction": "ietf-l3vpn-svc:both", + "latency": {"latency-boundary": 10}, + "bandwidth": {"guaranteed-bw-percent": 100} + }]}}} + } + } + ] + } + } + ] + } + } +} diff --git a/src/tests/eucnc24/data/tfs-service.json b/src/tests/eucnc24/data/tfs-service.json new file mode 100644 index 0000000000000000000000000000000000000000..397fc84789111932da047acd22c7bc787888657f --- /dev/null +++ b/src/tests/eucnc24/data/tfs-service.json @@ -0,0 +1,26 @@ +{ + "services": [ + { + "service_id": { + "context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "tfs-l3vpn-svc"} + }, + "service_type": "SERVICETYPE_L3NM", + "service_status": {"service_status": "SERVICESTATUS_PLANNED"}, + "service_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "dc1"}}, "endpoint_uuid": {"uuid": "int"}}, + {"device_id": {"device_uuid": {"uuid": "dc2"}}, "endpoint_uuid": {"uuid": "int"}} + ], + "service_constraints": [], + "service_config": {"config_rules": [ + {"action": "CONFIGACTION_SET", "custom": { + "resource_key": "/device[dc1]/endpoint[eth1]/settings", + "resource_value": {"address_ip": "192.168.1.10", "address_prefix": 24, "index": 0} + }}, + {"action": "CONFIGACTION_SET", "custom": { + "resource_key": "/device[dc2]/endpoint[eth1]/settings", + "resource_value": {"address_ip": "192.168.2.10", "address_prefix": 24, "index": 0} + }} + ]} + } + ] +} diff --git a/src/tests/eucnc24/data/tfs-topology.json b/src/tests/eucnc24/data/tfs-topology.json new file mode 100644 index 0000000000000000000000000000000000000000..ac87af62d31e4728c12687c525233d8e840d7441 --- /dev/null +++ b/src/tests/eucnc24/data/tfs-topology.json @@ -0,0 +1,126 @@ +{ + "contexts": [ + {"context_id": {"context_uuid": {"uuid": "admin"}}} + ], + "topologies": [ + {"topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}} + ], + "devices": [ + { + "device_id": {"device_uuid": {"uuid": "dc1"}}, "device_type": "emu-datacenter", + "device_drivers": ["DEVICEDRIVER_UNDEFINED"], + "device_config": {"config_rules": [ + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ + {"uuid": "eth1", "type": "copper"}, {"uuid": "int", "type": "copper"} + ]}}} + ]} + }, + { + "device_id": {"device_uuid": {"uuid": "dc2"}}, "device_type": "emu-datacenter", + "device_drivers": ["DEVICEDRIVER_UNDEFINED"], + "device_config": {"config_rules": [ + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ + {"uuid": "eth1", "type": "copper"}, {"uuid": "int", "type": "copper"} + ]}}} + ]} + }, + { + "device_id": {"device_uuid": {"uuid": "r1"}}, "device_type": "packet-router", + "device_drivers": ["DEVICEDRIVER_GNMI_OPENCONFIG"], + "device_config": {"config_rules": [ + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.20.20.101"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "6030"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": { + "username": "admin", "password": "admin", "use_tls": false + }}} + ]} + }, + { + "device_id": {"device_uuid": {"uuid": "r2"}}, "device_type": "packet-router", + "device_drivers": ["DEVICEDRIVER_GNMI_OPENCONFIG"], + "device_config": {"config_rules": [ + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.20.20.102"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "6030"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": { + "username": "admin", "password": "admin", "use_tls": false + }}} + ]} + }, + { + "device_id": {"device_uuid": {"uuid": "r3"}}, "device_type": "packet-router", + "device_drivers": ["DEVICEDRIVER_GNMI_OPENCONFIG"], + "device_config": {"config_rules": [ + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "172.20.20.103"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "6030"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": { + "username": "admin", "password": "admin", "use_tls": false + }}} + ]} + } + ], + "links": [ + { + "link_id": {"link_uuid": {"uuid": "r1/Ethernet2==r2/Ethernet1"}}, + "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "r1"}}, "endpoint_uuid": {"uuid": "Ethernet2"}}, + {"device_id": {"device_uuid": {"uuid": "r2"}}, "endpoint_uuid": {"uuid": "Ethernet1"}} + ] + }, + { + "link_id": {"link_uuid": {"uuid": "r2/Ethernet1==r1/Ethernet2"}}, + "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "r2"}}, "endpoint_uuid": {"uuid": "Ethernet1"}}, + {"device_id": {"device_uuid": {"uuid": "r1"}}, "endpoint_uuid": {"uuid": "Ethernet2"}} + ] + }, + + { + "link_id": {"link_uuid": {"uuid": "r2/Ethernet3==r3/Ethernet2"}}, + "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "r2"}}, "endpoint_uuid": {"uuid": "Ethernet3"}}, + {"device_id": {"device_uuid": {"uuid": "r3"}}, "endpoint_uuid": {"uuid": "Ethernet2"}} + ] + }, + { + "link_id": {"link_uuid": {"uuid": "r3/Ethernet2==r2/Ethernet3"}}, + "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "r3"}}, "endpoint_uuid": {"uuid": "Ethernet2"}}, + {"device_id": {"device_uuid": {"uuid": "r2"}}, "endpoint_uuid": {"uuid": "Ethernet3"}} + ] + }, + + { + "link_id": {"link_uuid": {"uuid": "r1/Ethernet10==dc1/eth1"}}, + "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "r1"}}, "endpoint_uuid": {"uuid": "Ethernet10"}}, + {"device_id": {"device_uuid": {"uuid": "dc1"}}, "endpoint_uuid": {"uuid": "eth1"}} + ] + }, + { + "link_id": {"link_uuid": {"uuid": "dc1/eth1==r1/Ethernet10"}}, + "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "dc1"}}, "endpoint_uuid": {"uuid": "eth1"}}, + {"device_id": {"device_uuid": {"uuid": "r1"}}, "endpoint_uuid": {"uuid": "Ethernet10"}} + ] + }, + + { + "link_id": {"link_uuid": {"uuid": "r3/Ethernet10==dc2/eth1"}}, + "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "r3"}}, "endpoint_uuid": {"uuid": "Ethernet10"}}, + {"device_id": {"device_uuid": {"uuid": "dc2"}}, "endpoint_uuid": {"uuid": "eth1"}} + ] + }, + { + "link_id": {"link_uuid": {"uuid": "dc2/eth1==r3/Ethernet10"}}, + "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "dc2"}}, "endpoint_uuid": {"uuid": "eth1"}}, + {"device_id": {"device_uuid": {"uuid": "r3"}}, "endpoint_uuid": {"uuid": "Ethernet10"}} + ] + } + ] +} diff --git a/src/tests/eucnc24/deploy-scripts/clab-cli-dc1.sh b/src/tests/eucnc24/deploy-scripts/clab-cli-dc1.sh new file mode 100755 index 0000000000000000000000000000000000000000..d0ee18dcfd7eac03b108e163200d14b532d8db8f --- /dev/null +++ b/src/tests/eucnc24/deploy-scripts/clab-cli-dc1.sh @@ -0,0 +1,16 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + +docker exec -it clab-eucnc24-dc1 bash diff --git a/src/tests/eucnc24/deploy-scripts/clab-cli-dc2.sh b/src/tests/eucnc24/deploy-scripts/clab-cli-dc2.sh new file mode 100755 index 0000000000000000000000000000000000000000..2867fedcb9051f6d73b78d571b33ed7ae25efd80 --- /dev/null +++ b/src/tests/eucnc24/deploy-scripts/clab-cli-dc2.sh @@ -0,0 +1,16 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + +docker exec -it clab-eucnc24-dc2 bash diff --git a/src/tests/eucnc24/deploy-scripts/clab-cli-r1.sh b/src/tests/eucnc24/deploy-scripts/clab-cli-r1.sh new file mode 100755 index 0000000000000000000000000000000000000000..69141a0ae73ee23274b823242b0f864e1527d505 --- /dev/null +++ b/src/tests/eucnc24/deploy-scripts/clab-cli-r1.sh @@ -0,0 +1,16 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + +docker exec -it clab-eucnc24-r1 Cli diff --git a/src/tests/eucnc24/deploy-scripts/clab-cli-r2.sh b/src/tests/eucnc24/deploy-scripts/clab-cli-r2.sh new file mode 100755 index 0000000000000000000000000000000000000000..7860d1d21f07a293f3bcbc65575625568a49a41c --- /dev/null +++ b/src/tests/eucnc24/deploy-scripts/clab-cli-r2.sh @@ -0,0 +1,16 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + +docker exec -it clab-eucnc24-r2 Cli diff --git a/src/tests/eucnc24/deploy-scripts/clab-cli-r3.sh b/src/tests/eucnc24/deploy-scripts/clab-cli-r3.sh new file mode 100755 index 0000000000000000000000000000000000000000..801c3223d7c59e767bcc64b0cc331553a34bb4b4 --- /dev/null +++ b/src/tests/eucnc24/deploy-scripts/clab-cli-r3.sh @@ -0,0 +1,16 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + +docker exec -it clab-eucnc24-r3 Cli diff --git a/src/tests/eucnc24/deploy-scripts/clab-deploy.sh b/src/tests/eucnc24/deploy-scripts/clab-deploy.sh new file mode 100755 index 0000000000000000000000000000000000000000..ae1676ada75ab6a5ce671fae187c0a94ffc62331 --- /dev/null +++ b/src/tests/eucnc24/deploy-scripts/clab-deploy.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + +cd ~/tfs-ctrl/src/tests/eucnc24 +sudo containerlab deploy --topo eucnc24.clab.yml diff --git a/src/tests/eucnc24/deploy-scripts/clab-destroy.sh b/src/tests/eucnc24/deploy-scripts/clab-destroy.sh new file mode 100755 index 0000000000000000000000000000000000000000..6e58a3c490c196073f4cb259e11d45dd4ff2a1f8 --- /dev/null +++ b/src/tests/eucnc24/deploy-scripts/clab-destroy.sh @@ -0,0 +1,18 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + +cd ~/tfs-ctrl/src/tests/eucnc24 +sudo containerlab destroy --topo eucnc24.clab.yml +sudo rm -rf clab-eucnc24/ .eucnc24.clab.yml.bak diff --git a/src/tests/eucnc24/deploy-scripts/clab-inspect.sh b/src/tests/eucnc24/deploy-scripts/clab-inspect.sh new file mode 100755 index 0000000000000000000000000000000000000000..0dd6dce12dc60e775edc6ab449d1d448f37bd686 --- /dev/null +++ b/src/tests/eucnc24/deploy-scripts/clab-inspect.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + +cd ~/tfs-ctrl/src/tests/eucnc24 +sudo containerlab inspect --topo eucnc24.clab.yml diff --git a/src/tests/eucnc24/deploy_specs.sh b/src/tests/eucnc24/deploy_specs.sh new file mode 100755 index 0000000000000000000000000000000000000000..aa72575a97f7b73ce916448307c3e1773fac57c4 --- /dev/null +++ b/src/tests/eucnc24/deploy_specs.sh @@ -0,0 +1,211 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + + +# ----- TeraFlowSDN ------------------------------------------------------------ + +# Set the URL of the internal MicroK8s Docker registry where the images will be uploaded to. +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 service slice nbi webui load_generator" +export TFS_COMPONENTS="context device pathcomp service nbi" + +# 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 automation" + +# Uncomment to activate QoS Profiles +#export TFS_COMPONENTS="${TFS_COMPONENTS} qos_profile" + +# 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" + +# Uncomment to activate DLT and Interdomain +#export TFS_COMPONENTS="${TFS_COMPONENTS} interdomain dlt" +#if [[ "$TFS_COMPONENTS" == *"dlt"* ]]; then +# export KEY_DIRECTORY_PATH="src/dlt/gateway/keys/priv_sk" +# export CERT_DIRECTORY_PATH="src/dlt/gateway/keys/cert.pem" +# export TLS_CERT_PATH="src/dlt/gateway/keys/ca.crt" +#fi + +# Uncomment to activate QKD App +# To manage QKD Apps, "service" requires "qkd_app" to be deployed +# before "service", thus we "hack" the TFS_COMPONENTS environment variable prepending the +# "qkd_app" 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} qkd_app service ${AFTER}" +#fi + + +# Set the tag you want to use for your images. +export TFS_IMAGE_TAG="dev" + +# Set the name of the Kubernetes namespace to deploy TFS to. +export TFS_K8S_NAMESPACE="tfs" + +# Set additional manifest files to be applied after the deployment +export TFS_EXTRA_MANIFESTS="manifests/nginx_ingress_http.yaml" + +# Uncomment to monitor performance of components +#export TFS_EXTRA_MANIFESTS="${TFS_EXTRA_MANIFESTS} manifests/servicemonitors.yaml" + +# Uncomment when deploying Optical CyberSecurity +#export TFS_EXTRA_MANIFESTS="${TFS_EXTRA_MANIFESTS} manifests/cachingservice.yaml" + +# Set the new Grafana admin password +export TFS_GRAFANA_PASSWORD="admin123+" + +# Disable skip-build flag to rebuild the Docker images. +export TFS_SKIP_BUILD="" + + +# ----- CockroachDB ------------------------------------------------------------ + +# Set the namespace where CockroackDB will be deployed. +export CRDB_NAMESPACE="crdb" + +# Set the external port CockroackDB Postgre SQL interface will be exposed to. +export CRDB_EXT_PORT_SQL="26257" + +# Set the external port CockroackDB HTTP Mgmt GUI interface will be exposed to. +export CRDB_EXT_PORT_HTTP="8081" + +# Set the database username to be used by Context. +export CRDB_USERNAME="tfs" + +# Set the database user's password to be used by Context. +export CRDB_PASSWORD="tfs123" + +# Set the database name to be used by Context. +export CRDB_DATABASE="tfs" + +# Set CockroachDB installation mode to 'single'. This option is convenient for development and testing. +# See ./deploy/all.sh or ./deploy/crdb.sh for additional details +export CRDB_DEPLOY_MODE="single" + +# Disable flag for dropping database, if it exists. +export CRDB_DROP_DATABASE_IF_EXISTS="YES" + +# Disable flag for re-deploying CockroachDB from scratch. +export CRDB_REDEPLOY="" + + +# ----- NATS ------------------------------------------------------------------- + +# Set the namespace where NATS will be deployed. +export NATS_NAMESPACE="nats" + +# Set the external port NATS Client interface will be exposed to. +export NATS_EXT_PORT_CLIENT="4222" + +# Set the external port NATS HTTP Mgmt GUI interface will be exposed to. +export NATS_EXT_PORT_HTTP="8222" + +# Set NATS installation mode to 'single'. This option is convenient for development and testing. +# See ./deploy/all.sh or ./deploy/nats.sh for additional details +export NATS_DEPLOY_MODE="single" + +# Disable flag for re-deploying NATS from scratch. +export NATS_REDEPLOY="" + + +# ----- QuestDB ---------------------------------------------------------------- + +# Set the namespace where QuestDB will be deployed. +export QDB_NAMESPACE="qdb" + +# Set the external port QuestDB Postgre SQL interface will be exposed to. +export QDB_EXT_PORT_SQL="8812" + +# Set the external port QuestDB Influx Line Protocol interface will be exposed to. +export QDB_EXT_PORT_ILP="9009" + +# Set the external port QuestDB HTTP Mgmt GUI interface will be exposed to. +export QDB_EXT_PORT_HTTP="9000" + +# Set the database username to be used for QuestDB. +export QDB_USERNAME="admin" + +# Set the database user's password to be used for QuestDB. +export QDB_PASSWORD="quest" + +# Set the table name to be used by Monitoring for KPIs. +export QDB_TABLE_MONITORING_KPIS="tfs_monitoring_kpis" + +# Set the table name to be used by Slice for plotting groups. +export QDB_TABLE_SLICE_GROUPS="tfs_slice_groups" + +# Disable flag for dropping tables if they exist. +export QDB_DROP_TABLES_IF_EXIST="YES" + +# Disable flag for re-deploying QuestDB from scratch. +export QDB_REDEPLOY="" + + +# ----- K8s Observability ------------------------------------------------------ + +# Set the external port Prometheus Mgmt HTTP GUI interface will be exposed to. +export PROM_EXT_PORT_HTTP="9090" + +# Set the external port Grafana HTTP Dashboards will be exposed to. +export GRAF_EXT_PORT_HTTP="3000" + + +# ----- Apache Kafka ----------------------------------------------------------- + +# Set the namespace where Apache Kafka will be deployed. +export KFK_NAMESPACE="kafka" + +# Set the port Apache Kafka server will be exposed to. +export KFK_SERVER_PORT="9092" + +# Set the flag to YES for redeploying of Apache Kafka +export KFK_REDEPLOY="" diff --git a/src/tests/eucnc24/redeploy-tfs.sh b/src/tests/eucnc24/redeploy-tfs.sh new file mode 100755 index 0000000000000000000000000000000000000000..b5ced0d12e026be4b9cb7eefcf343445b776f042 --- /dev/null +++ b/src/tests/eucnc24/redeploy-tfs.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + +source ~/tfs-ctrl/src/tests/eucnc24/deploy_specs.sh +./deploy/all.sh diff --git a/src/tests/eucnc24/requirements.in b/src/tests/eucnc24/requirements.in new file mode 100644 index 0000000000000000000000000000000000000000..468af1a17931d6e545647e3e7a057433d74826b3 --- /dev/null +++ b/src/tests/eucnc24/requirements.in @@ -0,0 +1,15 @@ +# Copyright 2022-2024 ETSI OSG/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. + +requests==2.27.* diff --git a/src/tests/eucnc24/scripts/run-cleanup.sh b/src/tests/eucnc24/scripts/run-cleanup.sh new file mode 100755 index 0000000000000000000000000000000000000000..3f697711a48f8d7fdf9fbd84d8100013ca349272 --- /dev/null +++ b/src/tests/eucnc24/scripts/run-cleanup.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + +source /var/teraflow/tfs_runtime_env_vars.sh +export PYTHONPATH=/var/teraflow +pytest --verbose --log-level=INFO \ + --junitxml=/opt/results/report_cleanup.xml \ + /var/teraflow/tests/eucnc24/tests/test_cleanup.py diff --git a/src/tests/eucnc24/scripts/run-onboarding.sh b/src/tests/eucnc24/scripts/run-onboarding.sh new file mode 100755 index 0000000000000000000000000000000000000000..57fc435e417e02edca08ff92d5db03bf9332c0e0 --- /dev/null +++ b/src/tests/eucnc24/scripts/run-onboarding.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + +source /var/teraflow/tfs_runtime_env_vars.sh +export PYTHONPATH=/var/teraflow +pytest --verbose --log-level=INFO \ + --junitxml=/opt/results/report_onboarding.xml \ + /var/teraflow/tests/eucnc24/tests/test_onboarding.py diff --git a/src/tests/eucnc24/scripts/run-service-ietf-create.sh b/src/tests/eucnc24/scripts/run-service-ietf-create.sh new file mode 100755 index 0000000000000000000000000000000000000000..d2ec9eef51a1dbe311ddbc052d305ef0d8c92085 --- /dev/null +++ b/src/tests/eucnc24/scripts/run-service-ietf-create.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + +source /var/teraflow/tfs_runtime_env_vars.sh +export PYTHONPATH=/var/teraflow +pytest --verbose --log-level=INFO \ + --junitxml=/opt/results/report_service_ietf_create.xml \ + /var/teraflow/tests/eucnc24/tests/test_service_ietf_create.py diff --git a/src/tests/eucnc24/scripts/run-service-ietf-remove.sh b/src/tests/eucnc24/scripts/run-service-ietf-remove.sh new file mode 100755 index 0000000000000000000000000000000000000000..8c52636001fb8163b3a94fa0b229c7ab1264ab13 --- /dev/null +++ b/src/tests/eucnc24/scripts/run-service-ietf-remove.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + +source /var/teraflow/tfs_runtime_env_vars.sh +export PYTHONPATH=/var/teraflow +pytest --verbose --log-level=INFO \ + --junitxml=/opt/results/report_service_ietf_remove.xml \ + /var/teraflow/tests/eucnc24/tests/test_service_ietf_remove.py diff --git a/src/tests/eucnc24/scripts/run-service-tfs-create.sh b/src/tests/eucnc24/scripts/run-service-tfs-create.sh new file mode 100755 index 0000000000000000000000000000000000000000..5395f38b3ab82a11361a066f2d80b750e636b010 --- /dev/null +++ b/src/tests/eucnc24/scripts/run-service-tfs-create.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + +source /var/teraflow/tfs_runtime_env_vars.sh +export PYTHONPATH=/var/teraflow +pytest --verbose --log-level=INFO \ + --junitxml=/opt/results/report_service_tfs_create.xml \ + /var/teraflow/tests/eucnc24/tests/test_service_tfs_create.py diff --git a/src/tests/eucnc24/scripts/run-service-tfs-remove.sh b/src/tests/eucnc24/scripts/run-service-tfs-remove.sh new file mode 100755 index 0000000000000000000000000000000000000000..d82d6d7738c24039fc4b8e878f48bb3c0c90f3fe --- /dev/null +++ b/src/tests/eucnc24/scripts/run-service-tfs-remove.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI OSG/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. + +source /var/teraflow/tfs_runtime_env_vars.sh +export PYTHONPATH=/var/teraflow +pytest --verbose --log-level=INFO \ + --junitxml=/opt/results/report_service_tfs_remove.xml \ + /var/teraflow/tests/eucnc24/tests/test_service_tfs_remove.py diff --git a/src/tests/eucnc24/tests/Fixtures.py b/src/tests/eucnc24/tests/Fixtures.py new file mode 100644 index 0000000000000000000000000000000000000000..a9d2ceb24488dbd5b3775c958358df419dec4172 --- /dev/null +++ b/src/tests/eucnc24/tests/Fixtures.py @@ -0,0 +1,43 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import pytest +from context.client.ContextClient import ContextClient +from device.client.DeviceClient import DeviceClient +from monitoring.client.MonitoringClient import MonitoringClient +from service.client.ServiceClient import ServiceClient + +@pytest.fixture(scope='session') +def context_client(): + _client = ContextClient() + yield _client + _client.close() + +@pytest.fixture(scope='session') +def device_client(): + _client = DeviceClient() + yield _client + _client.close() + +@pytest.fixture(scope='session') +def monitoring_client(): + _client = MonitoringClient() + yield _client + _client.close() + +@pytest.fixture(scope='session') +def service_client(): + _client = ServiceClient() + yield _client + _client.close() diff --git a/src/tests/eucnc24/tests/Tools.py b/src/tests/eucnc24/tests/Tools.py new file mode 100644 index 0000000000000000000000000000000000000000..e983ffefff3d5aea6b078efa9bb586202957a5e1 --- /dev/null +++ b/src/tests/eucnc24/tests/Tools.py @@ -0,0 +1,109 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import enum, logging, requests +from typing import Any, Dict, List, Optional, Set, Union +from common.Constants import ServiceNameEnum +from common.Settings import get_service_host, get_service_port_http + +NBI_ADDRESS = get_service_host(ServiceNameEnum.NBI) +NBI_PORT = get_service_port_http(ServiceNameEnum.NBI) +NBI_USERNAME = 'admin' +NBI_PASSWORD = 'admin' +NBI_BASE_URL = '' + +class RestRequestMethod(enum.Enum): + GET = 'get' + POST = 'post' + PUT = 'put' + PATCH = 'patch' + DELETE = 'delete' + +EXPECTED_STATUS_CODES : Set[int] = { + requests.codes['OK' ], + requests.codes['CREATED' ], + requests.codes['ACCEPTED' ], + requests.codes['NO_CONTENT'], +} + +def do_rest_request( + method : RestRequestMethod, url : str, body : Optional[Any] = None, timeout : int = 10, + allow_redirects : bool = True, expected_status_codes : Set[int] = EXPECTED_STATUS_CODES, + logger : Optional[logging.Logger] = None +) -> Optional[Union[Dict, List]]: + request_url = 'http://{:s}:{:s}@{:s}:{:d}{:s}{:s}'.format( + NBI_USERNAME, NBI_PASSWORD, NBI_ADDRESS, NBI_PORT, str(NBI_BASE_URL), url + ) + + if logger is not None: + msg = 'Request: {:s} {:s}'.format(str(method.value).upper(), str(request_url)) + if body is not None: msg += ' body={:s}'.format(str(body)) + logger.warning(msg) + reply = requests.request(method.value, request_url, timeout=timeout, json=body, allow_redirects=allow_redirects) + if logger is not None: + logger.warning('Reply: {:s}'.format(str(reply.text))) + assert reply.status_code in expected_status_codes, 'Reply failed with status code {:d}'.format(reply.status_code) + + if reply.content and len(reply.content) > 0: return reply.json() + return None + +def do_rest_get_request( + url : str, body : Optional[Any] = None, timeout : int = 10, + allow_redirects : bool = True, expected_status_codes : Set[int] = EXPECTED_STATUS_CODES, + logger : Optional[logging.Logger] = None +) -> Optional[Union[Dict, List]]: + return do_rest_request( + RestRequestMethod.GET, url, body=body, timeout=timeout, allow_redirects=allow_redirects, + expected_status_codes=expected_status_codes, logger=logger + ) + +def do_rest_post_request( + url : str, body : Optional[Any] = None, timeout : int = 10, + allow_redirects : bool = True, expected_status_codes : Set[int] = EXPECTED_STATUS_CODES, + logger : Optional[logging.Logger] = None +) -> Optional[Union[Dict, List]]: + return do_rest_request( + RestRequestMethod.POST, url, body=body, timeout=timeout, allow_redirects=allow_redirects, + expected_status_codes=expected_status_codes, logger=logger + ) + +def do_rest_put_request( + url : str, body : Optional[Any] = None, timeout : int = 10, + allow_redirects : bool = True, expected_status_codes : Set[int] = EXPECTED_STATUS_CODES, + logger : Optional[logging.Logger] = None +) -> Optional[Union[Dict, List]]: + return do_rest_request( + RestRequestMethod.PUT, url, body=body, timeout=timeout, allow_redirects=allow_redirects, + expected_status_codes=expected_status_codes, logger=logger + ) + +def do_rest_patch_request( + url : str, body : Optional[Any] = None, timeout : int = 10, + allow_redirects : bool = True, expected_status_codes : Set[int] = EXPECTED_STATUS_CODES, + logger : Optional[logging.Logger] = None +) -> Optional[Union[Dict, List]]: + return do_rest_request( + RestRequestMethod.PATCH, url, body=body, timeout=timeout, allow_redirects=allow_redirects, + expected_status_codes=expected_status_codes, logger=logger + ) + +def do_rest_delete_request( + url : str, body : Optional[Any] = None, timeout : int = 10, + allow_redirects : bool = True, expected_status_codes : Set[int] = EXPECTED_STATUS_CODES, + logger : Optional[logging.Logger] = None +) -> Optional[Union[Dict, List]]: + return do_rest_request( + RestRequestMethod.DELETE, url, body=body, timeout=timeout, allow_redirects=allow_redirects, + expected_status_codes=expected_status_codes, logger=logger + ) diff --git a/src/tests/eucnc24/tests/__init__.py b/src/tests/eucnc24/tests/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..3ee6f7071f145e06c3aeaefc09a43ccd88e619e3 --- /dev/null +++ b/src/tests/eucnc24/tests/__init__.py @@ -0,0 +1,14 @@ +# Copyright 2022-2024 ETSI OSG/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. + diff --git a/src/tests/eucnc24/tests/test_cleanup.py b/src/tests/eucnc24/tests/test_cleanup.py new file mode 100644 index 0000000000000000000000000000000000000000..7cfed0caf295af9dd5f66fd263339e37a7c887a0 --- /dev/null +++ b/src/tests/eucnc24/tests/test_cleanup.py @@ -0,0 +1,44 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import logging, os +from common.Constants import DEFAULT_CONTEXT_NAME +from common.proto.context_pb2 import ContextId +from common.tools.descriptor.Loader import DescriptorLoader, validate_empty_scenario +from common.tools.object_factory.Context import json_context_id +from context.client.ContextClient import ContextClient +from device.client.DeviceClient import DeviceClient +from .Fixtures import context_client, device_client # pylint: disable=unused-import + +LOGGER = logging.getLogger(__name__) +LOGGER.setLevel(logging.DEBUG) + +DESCRIPTOR_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'data', 'tfs-topology.json') +ADMIN_CONTEXT_ID = ContextId(**json_context_id(DEFAULT_CONTEXT_NAME)) + +def test_scenario_cleanup( + context_client : ContextClient, # pylint: disable=redefined-outer-name + device_client : DeviceClient, # pylint: disable=redefined-outer-name +) -> None: + # Verify the scenario has no services/slices + response = context_client.GetContext(ADMIN_CONTEXT_ID) + assert len(response.service_ids) == 0 + assert len(response.slice_ids) == 0 + + # Load descriptors and validate the base scenario + descriptor_loader = DescriptorLoader( + descriptors_file=DESCRIPTOR_FILE, context_client=context_client, device_client=device_client) + descriptor_loader.validate() + descriptor_loader.unload() + validate_empty_scenario(context_client) diff --git a/src/tests/eucnc24/tests/test_onboarding.py b/src/tests/eucnc24/tests/test_onboarding.py new file mode 100644 index 0000000000000000000000000000000000000000..93f040877a4d0c40e2a9d832872e78c75688cffb --- /dev/null +++ b/src/tests/eucnc24/tests/test_onboarding.py @@ -0,0 +1,67 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import logging, os, time +from common.Constants import DEFAULT_CONTEXT_NAME +from common.proto.context_pb2 import ContextId, DeviceOperationalStatusEnum, Empty +from common.tools.descriptor.Loader import DescriptorLoader, check_descriptor_load_results, validate_empty_scenario +from common.tools.object_factory.Context import json_context_id +from context.client.ContextClient import ContextClient +from device.client.DeviceClient import DeviceClient +from .Fixtures import context_client, device_client # pylint: disable=unused-import + +LOGGER = logging.getLogger(__name__) +LOGGER.setLevel(logging.DEBUG) + +DESCRIPTOR_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'data', 'tfs-topology.json') +ADMIN_CONTEXT_ID = ContextId(**json_context_id(DEFAULT_CONTEXT_NAME)) + +def test_scenario_onboarding( + context_client : ContextClient, # pylint: disable=redefined-outer-name + device_client : DeviceClient, # pylint: disable=redefined-outer-name +) -> None: + validate_empty_scenario(context_client) + + descriptor_loader = DescriptorLoader( + descriptors_file=DESCRIPTOR_FILE, context_client=context_client, device_client=device_client) + results = descriptor_loader.process() + check_descriptor_load_results(results, descriptor_loader) + descriptor_loader.validate() + + # Verify the scenario has no services/slices + response = context_client.GetContext(ADMIN_CONTEXT_ID) + assert len(response.service_ids) == 0 + assert len(response.slice_ids) == 0 + +def test_scenario_devices_enabled( + context_client : ContextClient, # pylint: disable=redefined-outer-name +) -> None: + """ + This test validates that the devices are enabled. + """ + DEVICE_OP_STATUS_ENABLED = DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_ENABLED + + num_devices = -1 + num_devices_enabled, num_retry = 0, 0 + while (num_devices != num_devices_enabled) and (num_retry < 10): + time.sleep(1.0) + response = context_client.ListDevices(Empty()) + num_devices = len(response.devices) + num_devices_enabled = 0 + for device in response.devices: + if device.device_operational_status != DEVICE_OP_STATUS_ENABLED: continue + num_devices_enabled += 1 + LOGGER.info('Num Devices enabled: {:d}/{:d}'.format(num_devices_enabled, num_devices)) + num_retry += 1 + assert num_devices_enabled == num_devices diff --git a/src/tests/eucnc24/tests/test_service_ietf_create.py b/src/tests/eucnc24/tests/test_service_ietf_create.py new file mode 100644 index 0000000000000000000000000000000000000000..b0785c21a332ddf03021644bc4b415ba86027412 --- /dev/null +++ b/src/tests/eucnc24/tests/test_service_ietf_create.py @@ -0,0 +1,71 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import json, logging, os +from typing import Dict +from common.Constants import DEFAULT_CONTEXT_NAME +from common.proto.context_pb2 import ContextId, ServiceStatusEnum, ServiceTypeEnum +from common.tools.grpc.Tools import grpc_message_to_json_string +from common.tools.object_factory.Context import json_context_id +from context.client.ContextClient import ContextClient +from .Fixtures import context_client # pylint: disable=unused-import +from .Tools import do_rest_get_request, do_rest_post_request + + +LOGGER = logging.getLogger(__name__) +LOGGER.setLevel(logging.DEBUG) + +REQUEST_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'data', 'ietf-l3vpn-service.json') +ADMIN_CONTEXT_ID = ContextId(**json_context_id(DEFAULT_CONTEXT_NAME)) + + +# pylint: disable=redefined-outer-name, unused-argument +def test_service_ietf_creation( + context_client : ContextClient, +): + # Issue service creation request + with open(REQUEST_FILE, 'r', encoding='UTF-8') as f: + svc1_data = json.load(f) + URL = '/restconf/data/ietf-l3vpn-svc:l3vpn-svc/vpn-services' + do_rest_post_request(URL, body=svc1_data, logger=LOGGER, expected_status_codes={201}) + vpn_id = svc1_data['ietf-l3vpn-svc:l3vpn-svc']['vpn-services']['vpn-service'][0]['vpn-id'] + + URL = '/restconf/data/ietf-l3vpn-svc:l3vpn-svc/vpn-services/vpn-service={:s}/'.format(vpn_id) + service_data = do_rest_get_request(URL, logger=LOGGER, expected_status_codes={200}) + service_uuid = service_data['service-id'] + + # Verify service was created + response = context_client.GetContext(ADMIN_CONTEXT_ID) + assert len(response.service_ids) == 1 + assert len(response.slice_ids) == 0 + + # Check there is 1 service + response = context_client.ListServices(ADMIN_CONTEXT_ID) + LOGGER.warning('Services[{:d}] = {:s}'.format( + len(response.services), grpc_message_to_json_string(response) + )) + assert len(response.services) == 1 + + for service in response.services: + service_id = service.service_id + assert service_id.service_uuid.uuid == service_uuid + assert service.service_status.service_status == ServiceStatusEnum.SERVICESTATUS_ACTIVE + assert service.service_type == ServiceTypeEnum.SERVICETYPE_L3NM + + response = context_client.ListConnections(service_id) + LOGGER.warning(' ServiceId[{:s}] => Connections[{:d}] = {:s}'.format( + grpc_message_to_json_string(service_id), len(response.connections), + grpc_message_to_json_string(response) + )) + assert len(response.connections) == 1 diff --git a/src/tests/eucnc24/tests/test_service_ietf_remove.py b/src/tests/eucnc24/tests/test_service_ietf_remove.py new file mode 100644 index 0000000000000000000000000000000000000000..f64fc07bfd82c4bd2e50f6a3184f83635cc89cc5 --- /dev/null +++ b/src/tests/eucnc24/tests/test_service_ietf_remove.py @@ -0,0 +1,77 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import logging, os +from typing import Dict, Set, Tuple +from common.Constants import DEFAULT_CONTEXT_NAME +from common.proto.context_pb2 import ContextId, ServiceStatusEnum, ServiceTypeEnum +from common.tools.grpc.Tools import grpc_message_to_json_string +from common.tools.object_factory.Context import json_context_id +from context.client.ContextClient import ContextClient +from .Fixtures import context_client # pylint: disable=unused-import +from .Tools import do_rest_delete_request + + +LOGGER = logging.getLogger(__name__) +LOGGER.setLevel(logging.DEBUG) + +REQUEST_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'data', 'ietf-l3vpn-service.json') +ADMIN_CONTEXT_ID = ContextId(**json_context_id(DEFAULT_CONTEXT_NAME)) + + +# pylint: disable=redefined-outer-name, unused-argument +def test_service_ietf_removal( + context_client : ContextClient, # pylint: disable=redefined-outer-name +): + # Verify the scenario has 1 service and 0 slices + response = context_client.GetContext(ADMIN_CONTEXT_ID) + assert len(response.service_ids) == 1 + assert len(response.slice_ids) == 0 + + # Check there are no slices + response = context_client.ListSlices(ADMIN_CONTEXT_ID) + LOGGER.warning('Slices[{:d}] = {:s}'.format(len(response.slices), grpc_message_to_json_string(response))) + assert len(response.slices) == 0 + + # Check there is 1 service + response = context_client.ListServices(ADMIN_CONTEXT_ID) + LOGGER.warning('Services[{:d}] = {:s}'.format(len(response.services), grpc_message_to_json_string(response))) + assert len(response.services) == 1 + + service_uuids : Set[str] = set() + for service in response.services: + service_id = service.service_id + assert service.service_status.service_status == ServiceStatusEnum.SERVICESTATUS_ACTIVE + assert service.service_type == ServiceTypeEnum.SERVICETYPE_L3NM + + response = context_client.ListConnections(service_id) + LOGGER.warning(' ServiceId[{:s}] => Connections[{:d}] = {:s}'.format( + grpc_message_to_json_string(service_id), len(response.connections), + grpc_message_to_json_string(response) + )) + assert len(response.connections) == 1 + + service_uuids.add(service_id.service_uuid.uuid) + + # Identify service to delete + assert len(service_uuids) == 1 + service_uuid = set(service_uuids).pop() + + URL = '/restconf/data/ietf-l3vpn-svc:l3vpn-svc/vpn-services/vpn-service={:s}/'.format(service_uuid) + do_rest_delete_request(URL, logger=LOGGER, expected_status_codes={204}) + + # Verify the scenario has no services/slices + response = context_client.GetContext(ADMIN_CONTEXT_ID) + assert len(response.service_ids) == 0 + assert len(response.slice_ids) == 0 diff --git a/src/tests/eucnc24/tests/test_service_tfs_create.py b/src/tests/eucnc24/tests/test_service_tfs_create.py new file mode 100644 index 0000000000000000000000000000000000000000..6e0492f86f21b02c7f047d84c2db49d342710ac7 --- /dev/null +++ b/src/tests/eucnc24/tests/test_service_tfs_create.py @@ -0,0 +1,76 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import logging, os +from common.Constants import DEFAULT_CONTEXT_NAME +from common.proto.context_pb2 import ContextId, ServiceStatusEnum, ServiceTypeEnum +from common.tools.descriptor.Loader import DescriptorLoader, check_descriptor_load_results +from common.tools.grpc.Tools import grpc_message_to_json_string +from common.tools.object_factory.Context import json_context_id +from context.client.ContextClient import ContextClient +from device.client.DeviceClient import DeviceClient +from service.client.ServiceClient import ServiceClient +from .Fixtures import context_client, device_client, service_client # pylint: disable=unused-import + + +LOGGER = logging.getLogger(__name__) +LOGGER.setLevel(logging.DEBUG) + +DESCRIPTOR_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'data', 'tfs-service.json') +ADMIN_CONTEXT_ID = ContextId(**json_context_id(DEFAULT_CONTEXT_NAME)) + + +def test_service_tfs_creation( + context_client : ContextClient, # pylint: disable=redefined-outer-name + device_client : DeviceClient, # pylint: disable=redefined-outer-name + service_client : ServiceClient, # pylint: disable=redefined-outer-name +): + # Load descriptors and validate the base scenario + descriptor_loader = DescriptorLoader( + descriptors_file=DESCRIPTOR_FILE, context_client=context_client, + device_client=device_client, service_client=service_client + ) + results = descriptor_loader.process() + check_descriptor_load_results(results, descriptor_loader) + + # Verify the scenario has 1 service and 0 slices + response = context_client.GetContext(ADMIN_CONTEXT_ID) + assert len(response.service_ids) == 1 + assert len(response.slice_ids) == 0 + + # Check there are no slices + response = context_client.ListSlices(ADMIN_CONTEXT_ID) + LOGGER.warning('Slices[{:d}] = {:s}'.format( + len(response.slices), grpc_message_to_json_string(response) + )) + assert len(response.slices) == 0 + + # Check there is 1 service + response = context_client.ListServices(ADMIN_CONTEXT_ID) + LOGGER.warning('Services[{:d}] = {:s}'.format( + len(response.services), grpc_message_to_json_string(response) + )) + assert len(response.services) == 1 + + for service in response.services: + service_id = service.service_id + assert service.service_status.service_status == ServiceStatusEnum.SERVICESTATUS_ACTIVE + assert service.service_type == ServiceTypeEnum.SERVICETYPE_L3NM + + response = context_client.ListConnections(service_id) + LOGGER.warning(' ServiceId[{:s}] => Connections[{:d}] = {:s}'.format( + grpc_message_to_json_string(service_id), len(response.connections), + grpc_message_to_json_string(response) + )) + assert len(response.connections) == 1 diff --git a/src/tests/eucnc24/tests/test_service_tfs_remove.py b/src/tests/eucnc24/tests/test_service_tfs_remove.py new file mode 100644 index 0000000000000000000000000000000000000000..76fdf0fc7407ce86bbd87806932eb1a4a45c40d1 --- /dev/null +++ b/src/tests/eucnc24/tests/test_service_tfs_remove.py @@ -0,0 +1,80 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import logging, os +from typing import Set, Tuple +from common.Constants import DEFAULT_CONTEXT_NAME +from common.proto.context_pb2 import ContextId, ServiceId, ServiceStatusEnum, ServiceTypeEnum +from common.tools.grpc.Tools import grpc_message_to_json_string +from common.tools.object_factory.Context import json_context_id +from common.tools.object_factory.Service import json_service_id +from context.client.ContextClient import ContextClient +from service.client.ServiceClient import ServiceClient +from .Fixtures import context_client, service_client # pylint: disable=unused-import + + +LOGGER = logging.getLogger(__name__) +LOGGER.setLevel(logging.DEBUG) + +DESCRIPTOR_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'data', 'tfs-service.json') +ADMIN_CONTEXT_ID = ContextId(**json_context_id(DEFAULT_CONTEXT_NAME)) + + +def test_service_tfs_removal( + context_client : ContextClient, # pylint: disable=redefined-outer-name + service_client : ServiceClient, # pylint: disable=redefined-outer-name +): + # Verify the scenario has 1 service and 0 slices + response = context_client.GetContext(ADMIN_CONTEXT_ID) + assert len(response.service_ids) == 1 + assert len(response.slice_ids) == 0 + + # Check there are no slices + response = context_client.ListSlices(ADMIN_CONTEXT_ID) + LOGGER.warning('Slices[{:d}] = {:s}'.format(len(response.slices), grpc_message_to_json_string(response))) + assert len(response.slices) == 0 + + # Check there is 1 service + response = context_client.ListServices(ADMIN_CONTEXT_ID) + LOGGER.warning('Services[{:d}] = {:s}'.format(len(response.services), grpc_message_to_json_string(response))) + assert len(response.services) == 1 + + context_service_uuids : Set[Tuple[str, str]] = set() + for service in response.services: + service_id = service.service_id + assert service.service_status.service_status == ServiceStatusEnum.SERVICESTATUS_ACTIVE + assert service.service_type == ServiceTypeEnum.SERVICETYPE_L3NM + + response = context_client.ListConnections(service_id) + LOGGER.warning(' ServiceId[{:s}] => Connections[{:d}] = {:s}'.format( + grpc_message_to_json_string(service_id), len(response.connections), + grpc_message_to_json_string(response) + )) + assert len(response.connections) == 1 + + context_uuid = service_id.context_id.context_uuid.uuid + service_uuid = service_id.service_uuid.uuid + context_service_uuids.add((context_uuid, service_uuid)) + + # Identify service to delete + assert len(context_service_uuids) == 1 + context_uuid, service_uuid = set(context_service_uuids).pop() + + # Delete Service + service_client.DeleteService(ServiceId(**json_service_id(service_uuid, json_context_id(context_uuid)))) + + # Verify the scenario has no services/slices + response = context_client.GetContext(ADMIN_CONTEXT_ID) + assert len(response.service_ids) == 0 + assert len(response.slice_ids) == 0 diff --git a/src/tests/hackfest3/tests/Objects.py b/src/tests/hackfest3/tests/Objects.py index 0d49747b89647997d9f2aafbccc8aacc137793a4..e5f394070f403f780abe39a2c1e73288ff8cf3b1 100644 --- a/src/tests/hackfest3/tests/Objects.py +++ b/src/tests/hackfest3/tests/Objects.py @@ -60,7 +60,7 @@ DEVICE_SW1 = json_device_p4_disabled(DEVICE_SW1_UUID) DEVICE_SW1_DPID = 1 DEVICE_SW1_NAME = DEVICE_SW1_UUID -DEVICE_SW1_IP_ADDR = '192.168.6.38' +DEVICE_SW1_IP_ADDR = '192.168.5.131' DEVICE_SW1_PORT = '50001' DEVICE_SW1_VENDOR = 'Open Networking Foundation' DEVICE_SW1_HW_VER = 'BMv2 simple_switch' @@ -100,7 +100,7 @@ DEVICE_SW2 = json_device_p4_disabled(DEVICE_SW2_UUID) DEVICE_SW2_DPID = 1 DEVICE_SW2_NAME = DEVICE_SW2_UUID -DEVICE_SW2_IP_ADDR = '192.168.6.38' +DEVICE_SW2_IP_ADDR = '192.168.5.131' DEVICE_SW2_PORT = '50002' DEVICE_SW2_VENDOR = 'Open Networking Foundation' DEVICE_SW2_HW_VER = 'BMv2 simple_switch' @@ -138,7 +138,7 @@ DEVICE_SW3 = json_device_p4_disabled(DEVICE_SW3_UUID) DEVICE_SW3_DPID = 1 DEVICE_SW3_NAME = DEVICE_SW3_UUID -DEVICE_SW3_IP_ADDR = '192.168.6.38' +DEVICE_SW3_IP_ADDR = '192.168.5.131' DEVICE_SW3_PORT = '50003' DEVICE_SW3_VENDOR = 'Open Networking Foundation' DEVICE_SW3_HW_VER = 'BMv2 simple_switch' @@ -176,7 +176,7 @@ DEVICE_SW4 = json_device_p4_disabled(DEVICE_SW4_UUID) DEVICE_SW4_DPID = 1 DEVICE_SW4_NAME = DEVICE_SW4_UUID -DEVICE_SW4_IP_ADDR = '192.168.6.38' +DEVICE_SW4_IP_ADDR = '192.168.5.131' DEVICE_SW4_PORT = '50004' DEVICE_SW4_VENDOR = 'Open Networking Foundation' DEVICE_SW4_HW_VER = 'BMv2 simple_switch' diff --git a/src/tests/hackfest3/tests/test_functional_create_service.py b/src/tests/hackfest3/tests/test_functional_create_service.py index fdd006eb71a359fa7a3b43bb86be713ab5b2b2dd..a358c4c022be3216e29c23515a3192c8acbe8ce1 100644 --- a/src/tests/hackfest3/tests/test_functional_create_service.py +++ b/src/tests/hackfest3/tests/test_functional_create_service.py @@ -28,6 +28,7 @@ from service.client.ServiceClient import ServiceClient from .Objects import CONTEXT_ID, CONTEXTS, DEVICES, LINKS, TOPOLOGIES, SERVICES from common.proto.context_pb2 import ConfigActionEnum, Device, DeviceId,\ DeviceOperationalStatusEnum +from common.tools.object_factory.Constraint import json_constraint_custom LOGGER = logging.getLogger(__name__) LOGGER.setLevel(logging.DEBUG) @@ -62,4 +63,5 @@ def test_rules_entry( service_p4 = copy.deepcopy(service) service_client.CreateService(Service(**service_p4)) service_p4['service_endpoint_ids'].extend(endpoints) + service_p4['service_constraints'].extend([json_constraint_custom('min_latency_E2E','2')]) service_client.UpdateService(Service(**service_p4)) diff --git a/src/tests/ofc24/.gitlab-ci.yml b/src/tests/ofc24/.gitlab-ci.yml index d7bda488689abe88b8abba9a054307fcf377af46..af4e1aaa6b98beb21a85a4746f61cf9d4916dba7 100644 --- a/src/tests/ofc24/.gitlab-ci.yml +++ b/src/tests/ofc24/.gitlab-ci.yml @@ -138,6 +138,7 @@ end2end_test ofc24: - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/serviceservice -c server - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/sliceservice -c server - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/nbiservice -c server + - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/webuiservice -c server - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/opticalcontrollerservice -c server - if docker ps -a | grep ${TEST_NAME}; then docker rm -f ${TEST_NAME}; fi diff --git a/src/tests/ofc24/descriptors/topology.json b/src/tests/ofc24/descriptors/topology.json index 85bbad55eb8608d2d2a7abad7fffab8fffdae682..f358bf94cebc5ebe51cef25dd3816622dcdb7b64 100644 --- a/src/tests/ofc24/descriptors/topology.json +++ b/src/tests/ofc24/descriptors/topology.json @@ -7,144 +7,1564 @@ ], "devices": [ { - "device_id": {"device_uuid": {"uuid": "T1"}}, "device_type": "optical-transponder", "device_drivers": [11], + "device_id": {"device_uuid": {"uuid": "T1.1"}}, "device_type": "optical-transponder", "device_drivers": [11], "device_operational_status": 1, - "device_endpoints": [ - {"endpoint_id": { - "device_id": {"device_uuid": {"uuid": "T1"}}, "endpoint_uuid": {"uuid": "1"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }} - ], "device_config": {"config_rules": [ {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "172.254.253.101"}}, {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "2022"}}, {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": { "username": "admin", "password": "admin", "force_running": false, "hostkey_verify": false, "look_for_keys": false, "allow_agent": false, "commit_per_rule": false, - "device_params": {"name": "default"}, "manager_params": {"timeout": 120}, - "endpoints": [{"uuid": "1", "type": "optical", "sample_types": [101, 102, 201, 202]}] + "device_params": {"name": "default"}, "manager_params": {"timeout": 120} }}} ]} }, { - "device_id": {"device_uuid": {"uuid": "T2"}}, "device_type": "optical-transponder", "device_drivers": [11], + "device_id": {"device_uuid": {"uuid": "T1.2"}}, "device_type": "optical-transponder", "device_drivers": [11], + "device_operational_status": 1, + "device_config": {"config_rules": [ + {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "172.254.253.101"}}, + {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "2022"}}, + {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": { + "username": "admin", "password": "admin", "force_running": false, "hostkey_verify": false, + "look_for_keys": false, "allow_agent": false, "commit_per_rule": false, + "device_params": {"name": "default"}, "manager_params": {"timeout": 120} + }}} + ]} + }, + { + "device_id": {"device_uuid": {"uuid": "T1.3"}}, "device_type": "optical-transponder", "device_drivers": [11], + "device_operational_status": 1, + "device_config": {"config_rules": [ + {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "172.254.253.101"}}, + {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "2022"}}, + {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": { + "username": "admin", "password": "admin", "force_running": false, "hostkey_verify": false, + "look_for_keys": false, "allow_agent": false, "commit_per_rule": false, + "device_params": {"name": "default"}, "manager_params": {"timeout": 120} + }}} + ]} + }, + { + "device_id": {"device_uuid": {"uuid": "T2.1"}}, "device_type": "optical-transponder", "device_drivers": [11], + "device_operational_status": 1, + "device_config": {"config_rules": [ + {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "172.254.253.102"}}, + {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "2022"}}, + {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": { + "username": "admin", "password": "admin", "force_running": false, "hostkey_verify": false, + "look_for_keys": false, "allow_agent": false, "commit_per_rule": false, + "device_params": {"name": "default"}, "manager_params": {"timeout": 120} + }}} + ]} + }, + { + "device_id": {"device_uuid": {"uuid": "T2.2"}}, "device_type": "optical-transponder", "device_drivers": [11], + "device_operational_status": 1, + "device_config": {"config_rules": [ + {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "172.254.253.102"}}, + {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "2022"}}, + {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": { + "username": "admin", "password": "admin", "force_running": false, "hostkey_verify": false, + "look_for_keys": false, "allow_agent": false, "commit_per_rule": false, + "device_params": {"name": "default"}, "manager_params": {"timeout": 120} + }}} + ]} + }, + { + "device_id": {"device_uuid": {"uuid": "T2.3"}}, "device_type": "optical-transponder", "device_drivers": [11], "device_operational_status": 1, - "device_endpoints": [ - {"endpoint_id": { - "device_id": {"device_uuid": {"uuid": "T2"}}, "endpoint_uuid": {"uuid": "6"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }} - ], "device_config": {"config_rules": [ {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "172.254.253.102"}}, {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "2022"}}, {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": { "username": "admin", "password": "admin", "force_running": false, "hostkey_verify": false, "look_for_keys": false, "allow_agent": false, "commit_per_rule": false, - "device_params": {"name": "default"}, "manager_params": {"timeout": 120}, - "endpoints": [{"uuid": "6", "type": "optical", "sample_types": [101, 102, 201, 202]}] + "device_params": {"name": "default"}, "manager_params": {"timeout": 120} }}} ]} }, { "device_id": {"device_uuid": {"uuid": "R1"}}, "device_type": "optical-roadm", "device_drivers": [11], "device_operational_status": 1, - "device_endpoints": [ - {"endpoint_id": { - "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "2"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }}, - {"endpoint_id": { - "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "3"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }}, - {"endpoint_id": { - "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "12"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }}, - {"endpoint_id": { - "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "13"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }} - ], "device_config": {"config_rules": [ {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "172.254.253.201"}}, {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "2022"}}, {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": { "username": "admin", "password": "admin", "force_running": false, "hostkey_verify": false, - "look_for_keys": false, "allow_agent": false, "commit_per_rule": false, - "device_params": {"name": "default"}, "manager_params": {"timeout": 120}, - "endpoints": [ - {"sample_types": [101, 102, 201, 202], "type": "optical", "uuid": "2"}, - {"sample_types": [101, 102, 201, 202], "type": "optical", "uuid": "3"}, - {"sample_types": [101, 102, 201, 202], "type": "optical", "uuid": "12"}, - {"sample_types": [101, 102, 201, 202], "type": "optical", "uuid": "13"} - ]} - }}] - } + "look_for_keys": false, "allow_agent": false, "commit_per_rule": false, "type": "optical-roadm", + "device_params": {"name": "default"}, "manager_params": {"timeout": 120} + }}} + ]} }, { "device_id": {"device_uuid": {"uuid": "R2"}}, "device_type": "optical-roadm", "device_drivers": [11], "device_operational_status": 1, - "device_endpoints": [ - {"endpoint_id": { - "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "4"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }}, - {"endpoint_id": { - "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "5"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }}, - {"endpoint_id": { - "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "14"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }}, - {"endpoint_id": { - "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "15"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }} - ], "device_config": {"config_rules": [ {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "172.254.253.202"}}, {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "2022"}}, {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": { "username": "admin", "password": "admin", "force_running": false, "hostkey_verify": false, - "look_for_keys": false, "allow_agent": false, "commit_per_rule": false, - "device_params": {"name": "default"}, "manager_params": {"timeout": 120}, - "endpoints": [ - {"sample_types": [101, 102, 201, 202], "type": "optical", "uuid": "4"}, - {"sample_types": [101, 102, 201, 202], "type": "optical", "uuid": "5"}, - {"sample_types": [101, 102, 201, 202], "type": "optical", "uuid": "14"}, - {"sample_types": [101, 102, 201, 202], "type": "optical", "uuid": "15"} - ] + "look_for_keys": false, "allow_agent": false, "commit_per_rule": false, "type": "optical-roadm", + "device_params": {"name": "default"}, "manager_params": {"timeout": 120} }}} ]} } ], - "links": [ - {"link_id": {"link_uuid": {"uuid": "T1->R1"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "T1"}}, "endpoint_uuid": {"uuid": "1"}}, - {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "12"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R1->T1"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "2"}}, - {"device_id": {"device_uuid": {"uuid": "T1"}}, "endpoint_uuid": {"uuid": "1"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R1->R2"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "3"}}, - {"device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "14"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R2->R1"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "4"}}, - {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "13"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "T2->R2"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "T2"}}, "endpoint_uuid": {"uuid": "6"}}, - {"device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "15"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R2->T2"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "5"}}, - {"device_id": {"device_uuid": {"uuid": "T2"}}, "endpoint_uuid": {"uuid": "6"}} - ]} - ] + "optical_links": [ + { + "name": "T1.1-R1", + "link_id": { + "link_uuid": { + "uuid": "T1.1->R1" + } + }, + "link_endpoint_ids": [ + { + "device_id": { + "device_uuid": { + "uuid": "T1.1" + } + }, + "endpoint_uuid": { + "uuid": "1" + } + }, + { + "device_id": { + "device_uuid": { + "uuid": "R1" + } + }, + "endpoint_uuid": { + "uuid": "12" + } + } + ], + "optical_details": { + "length": 0, + "src_port": "1", + "dst_port": "12", + "local_peer_port": "1", + "remote_peer_port": "2", + "used": false, + "c_slots": { + "1": 1, + "2": 1, + "3": 1, + "4": 1, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1, + "19": 1, + "20": 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 + }, + "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 + } + } + }, + { + "name": "T1.2-R1", + "link_id": { + "link_uuid": { + "uuid": "T1.2->R1" + } + }, + "link_endpoint_ids": [ + { + "device_id": { + "device_uuid": { + "uuid": "T1.2" + } + }, + "endpoint_uuid": { + "uuid": "1" + } + }, + { + "device_id": { + "device_uuid": { + "uuid": "R1" + } + }, + "endpoint_uuid": { + "uuid": "13" + } + } + ], + "optical_details": { + "length": 0, + "src_port": "1", + "dst_port": "13", + "local_peer_port": "1", + "remote_peer_port": "3", + "used": false, + "c_slots": { + "1": 1, + "2": 1, + "3": 1, + "4": 1, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1, + "19": 1, + "20": 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 + }, + "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 + } + } + }, + { + "name": "T1.3-R1", + "link_id": { + "link_uuid": { + "uuid": "T1.3->R1" + } + }, + "link_endpoint_ids": [ + { + "device_id": { + "device_uuid": { + "uuid": "T1.3" + } + }, + "endpoint_uuid": { + "uuid": "1" + } + }, + { + "device_id": { + "device_uuid": { + "uuid": "R1" + } + }, + "endpoint_uuid": { + "uuid": "14" + } + } + ], + "optical_details": { + "length": 0, + "src_port": "1", + "dst_port": "14", + "local_peer_port": "1", + "remote_peer_port": "4", + "used": false, + "c_slots": { + "1": 1, + "2": 1, + "3": 1, + "4": 1, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1, + "19": 1, + "20": 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 + }, + "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 + } + } + }, + { + "name": "R1-T1.1", + "link_id": { + "link_uuid": { + "uuid": "R1->T1.1" + } + }, + "link_endpoint_ids": [ + { + "device_id": { + "device_uuid": { + "uuid": "R1" + } + }, + "endpoint_uuid": { + "uuid": "2" + } + }, + { + "device_id": { + "device_uuid": { + "uuid": "T1.1" + } + }, + "endpoint_uuid": { + "uuid": "1" + } + } + ], + "optical_details": { + "length": 0, + "src_port": "2", + "dst_port": "1", + "local_peer_port": "12", + "remote_peer_port": "1", + "used": false, + "c_slots": { + "1": 1, + "2": 1, + "3": 1, + "4": 1, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1, + "19": 1, + "20": 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 + }, + "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 + } + } + }, + { + "name": "R1-T1.2", + "link_id": { + "link_uuid": { + "uuid": "R1->T1.2" + } + }, + "link_endpoint_ids": [ + { + "device_id": { + "device_uuid": { + "uuid": "R1" + } + }, + "endpoint_uuid": { + "uuid": "3" + } + }, + { + "device_id": { + "device_uuid": { + "uuid": "T1.2" + } + }, + "endpoint_uuid": { + "uuid": "1" + } + } + ], + "optical_details": { + "length": 0, + "src_port": "3", + "dst_port": "1", + "local_peer_port": "13", + "remote_peer_port": "1", + "used": false, + "c_slots": { + "1": 1, + "2": 1, + "3": 1, + "4": 1, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1, + "19": 1, + "20": 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 + }, + "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 + } + } + }, + { + "name": "R1-T1.3", + "link_id": { + "link_uuid": { + "uuid": "R1->T1.3" + } + }, + "link_endpoint_ids": [ + { + "device_id": { + "device_uuid": { + "uuid": "R1" + } + }, + "endpoint_uuid": { + "uuid": "4" + } + }, + { + "device_id": { + "device_uuid": { + "uuid": "T1.3" + } + }, + "endpoint_uuid": { + "uuid": "1" + } + } + ], + "optical_details": { + "length": 0, + "src_port": "4", + "dst_port": "1", + "local_peer_port": "14", + "remote_peer_port": "1", + "used": false, + "c_slots": { + "1": 1, + "2": 1, + "3": 1, + "4": 1, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1, + "19": 1, + "20": 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 + }, + "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 + } + } + }, + { + "name": "R1-R2", + "link_id": { + "link_uuid": { + "uuid": "R1->R2" + } + }, + "link_endpoint_ids": [ + { + "device_id": { + "device_uuid": { + "uuid": "R1" + } + }, + "endpoint_uuid": { + "uuid": "101" + } + }, + { + "device_id": { + "device_uuid": { + "uuid": "R2" + } + }, + "endpoint_uuid": { + "uuid": "111" + } + } + ], + "optical_details": { + "length": 0, + "src_port": "101", + "dst_port": "111", + "local_peer_port": "111", + "remote_peer_port": "101", + "c_slots": { + "1": 1, + "2": 1, + "3": 1, + "4": 1, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1, + "19": 1, + "20": 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 + }, + "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 + } + } + }, + { + "name": "R2-R1", + "link_id": { + "link_uuid": { + "uuid": "R2->R1" + } + }, + "link_endpoint_ids": [ + { + "device_id": { + "device_uuid": { + "uuid": "R2" + } + }, + "endpoint_uuid": { + "uuid": "101" + } + }, + { + "device_id": { + "device_uuid": { + "uuid": "R1" + } + }, + "endpoint_uuid": { + "uuid": "111" + } + } + ], + "optical_details": { + "length": 0, + "src_port": "101", + "dst_port": "111", + "local_peer_port": "111", + "remote_peer_port": "101", + "c_slots": { + "1": 1, + "2": 1, + "3": 1, + "4": 1, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1, + "19": 1, + "20": 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 + }, + "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 + } + } + }, + { + "name": "T2.1-R2", + "link_id": { + "link_uuid": { + "uuid": "T2.1->R2" + } + }, + "link_endpoint_ids": [ + { + "device_id": { + "device_uuid": { + "uuid": "T2.1" + } + }, + "endpoint_uuid": { + "uuid": "6" + } + }, + { + "device_id": { + "device_uuid": { + "uuid": "R2" + } + }, + "endpoint_uuid": { + "uuid": "12" + } + } + ], + "optical_details": { + "length": 0, + "src_port": "6", + "dst_port": "12", + "local_peer_port": "6", + "remote_peer_port": "2", + "used": false, + "c_slots": { + "1": 1, + "2": 1, + "3": 1, + "4": 1, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1, + "19": 1, + "20": 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 + }, + "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 + } + } + }, + { + "name": "T2.2-R2", + "link_id": { + "link_uuid": { + "uuid": "T2.2->R2" + } + }, + "link_endpoint_ids": [ + { + "device_id": { + "device_uuid": { + "uuid": "T2.2" + } + }, + "endpoint_uuid": { + "uuid": "6" + } + }, + { + "device_id": { + "device_uuid": { + "uuid": "R2" + } + }, + "endpoint_uuid": { + "uuid": "13" + } + } + ], + "optical_details": { + "length": 0, + "src_port": "6", + "dst_port": "13", + "local_peer_port": "6", + "remote_peer_port": "3", + "used": false, + "c_slots": { + "1": 1, + "2": 1, + "3": 1, + "4": 1, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1, + "19": 1, + "20": 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 + }, + "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 + } + } + }, + { + "name": "T2.3-R2", + "link_id": { + "link_uuid": { + "uuid": "T2.3->R2" + } + }, + "link_endpoint_ids": [ + { + "device_id": { + "device_uuid": { + "uuid": "T2.3" + } + }, + "endpoint_uuid": { + "uuid": "6" + } + }, + { + "device_id": { + "device_uuid": { + "uuid": "R2" + } + }, + "endpoint_uuid": { + "uuid": "14" + } + } + ], + "optical_details": { + "length": 0, + "src_port": "6", + "dst_port": "14", + "local_peer_port": "6", + "remote_peer_port": "4", + "used": false, + "c_slots": { + "1": 1, + "2": 1, + "3": 1, + "4": 1, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1, + "19": 1, + "20": 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 + }, + "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 + } + } + }, + { + "name": "R2-T2.1", + "link_id": { + "link_uuid": { + "uuid": "R2->T2.1" + } + }, + "link_endpoint_ids": [ + { + "device_id": { + "device_uuid": { + "uuid": "R2" + } + }, + "endpoint_uuid": { + "uuid": "2" + } + }, + { + "device_id": { + "device_uuid": { + "uuid": "T2.1" + } + }, + "endpoint_uuid": { + "uuid": "6" + } + } + ], + "optical_details": { + "length": 0, + "src_port": "2", + "dst_port": "6", + "local_peer_port": "12", + "remote_peer_port": "6", + "used": false, + "c_slots": { + "1": 1, + "2": 1, + "3": 1, + "4": 1, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1, + "19": 1, + "20": 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 + }, + "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 + } + } + }, + { + "name": "R2-T2.2", + "link_id": { + "link_uuid": { + "uuid": "R1->T2.2" + } + }, + "link_endpoint_ids": [ + { + "device_id": { + "device_uuid": { + "uuid": "R2" + } + }, + "endpoint_uuid": { + "uuid": "3" + } + }, + { + "device_id": { + "device_uuid": { + "uuid": "T2.2" + } + }, + "endpoint_uuid": { + "uuid": "6" + } + } + ], + "optical_details": { + "length": 0, + "src_port": "3", + "dst_port": "6", + "local_peer_port": "13", + "remote_peer_port": "6", + "used": false, + "c_slots": { + "1": 1, + "2": 1, + "3": 1, + "4": 1, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1, + "19": 1, + "20": 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 + }, + "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 + } + } + }, + { + "name": "R2-T2.3", + "link_id": { + "link_uuid": { + "uuid": "R2->T2.3" + } + }, + "link_endpoint_ids": [ + { + "device_id": { + "device_uuid": { + "uuid": "R2" + } + }, + "endpoint_uuid": { + "uuid": "4" + } + }, + { + "device_id": { + "device_uuid": { + "uuid": "T2.3" + } + }, + "endpoint_uuid": { + "uuid": "6" + } + } + ], + "optical_details": { + "length": 0, + "src_port": "4", + "dst_port": "6", + "local_peer_port": "14", + "remote_peer_port": "6", + "used": false, + "c_slots": { + "1": 1, + "2": 1, + "3": 1, + "4": 1, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1, + "19": 1, + "20": 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 + }, + "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 + } + } + } + ] } diff --git a/src/tests/ofc24/get_all.sh b/src/tests/ofc24/get_all.sh old mode 100644 new mode 100755 index 2f0412d460e07c29e3b4f1feb43528f9925709ca..ceb96a34c98823e122a65b38ccef57e9ed2f1ec0 --- a/src/tests/ofc24/get_all.sh +++ b/src/tests/ofc24/get_all.sh @@ -1,6 +1,18 @@ #!/bin/bash +# Copyright 2022-2024 ETSI OSG/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 - ~/tfs-ctrl/src/tests/ofc24/get_bands.sh > bands.json - ~/tfs-ctrl/src/tests/ofc24/get_links.sh > links.json - ~/tfs-ctrl/src/tests/ofc24/get_lightpath.sh > lightpath.json - +~/tfs-ctrl/src/tests/ofc24/get_bands.sh > bands.json +~/tfs-ctrl/src/tests/ofc24/get_links.sh > links.json +~/tfs-ctrl/src/tests/ofc24/get_lightpath.sh > lightpath.json diff --git a/src/tests/ofc24/get_bands.sh b/src/tests/ofc24/get_bands.sh old mode 100644 new mode 100755 index d4f01357df1b79f8b6b23320394c0ec1d9d596c7..c63461e44d8363f768fa1770b88b916e4d5689f7 --- a/src/tests/ofc24/get_bands.sh +++ b/src/tests/ofc24/get_bands.sh @@ -1,11 +1,22 @@ #!/bin/bash -ip=$(sudo kubectl get all --all-namespaces | grep service/opticalcontrollerservice | awk '{print $4}') +# Copyright 2022-2024 ETSI OSG/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 -#echo $ip +ip=$(sudo kubectl get all --all-namespaces | grep service/opticalcontrollerservice | awk '{print $4}') +echo $ip #push=$(curl -X GET "http://$ip:10060/OpticalTFS/GetTopology/admin/admin") - links=$(curl -X GET "http://$ip:10060/OpticalTFS/GetOpticalBands") - -echo $links \ No newline at end of file +echo $links diff --git a/src/tests/ofc24/get_lightpath.sh b/src/tests/ofc24/get_lightpath.sh old mode 100644 new mode 100755 index f5c7206e756a05138d5ec054ca1e6298b88cde5d..eefd46c0ed5ee1435e3b0dc5fa601d7d4a8f9243 --- a/src/tests/ofc24/get_lightpath.sh +++ b/src/tests/ofc24/get_lightpath.sh @@ -1,11 +1,22 @@ #!/bin/bash -ip=$(sudo kubectl get all --all-namespaces | grep service/opticalcontrollerservice | awk '{print $4}') +# Copyright 2022-2024 ETSI OSG/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 -#echo $ip +ip=$(sudo kubectl get all --all-namespaces | grep service/opticalcontrollerservice | awk '{print $4}') +echo $ip #push=$(curl -X GET "http://$ip:10060/OpticalTFS/GetTopology/admin/admin") - links=$(curl -X GET "http://$ip:10060/OpticalTFS/GetLightpaths") - -echo $links \ No newline at end of file +echo $links diff --git a/src/tests/ofc24/get_links.sh b/src/tests/ofc24/get_links.sh old mode 100644 new mode 100755 index 2799934ad8d927e40607c3285cc2ff447d4e48d7..f1146b4eac873114282a58445c3aad1b33002dd9 --- a/src/tests/ofc24/get_links.sh +++ b/src/tests/ofc24/get_links.sh @@ -1,11 +1,22 @@ #!/bin/bash -ip=$(sudo kubectl get all --all-namespaces | grep service/opticalcontrollerservice | awk '{print $4}') +# Copyright 2022-2024 ETSI OSG/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 -#echo $ip +ip=$(sudo kubectl get all --all-namespaces | grep service/opticalcontrollerservice | awk '{print $4}') +echo $ip #push=$(curl -X GET "http://$ip:10060/OpticalTFS/GetTopology/admin/admin") - links=$(curl -X GET "http://$ip:10060/OpticalTFS/GetLinks") - -echo $links \ No newline at end of file +echo $links diff --git a/src/tests/ofc24/r_t.sh b/src/tests/ofc24/r_t.sh index 6cd0d9fab1711ae5f7a151844b7ee8227b7564fd..eef73563fbec2aa60e1133d0790e2821867fe997 100755 --- a/src/tests/ofc24/r_t.sh +++ b/src/tests/ofc24/r_t.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) +# Copyright 2022-2024 ETSI OSG/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. @@ -28,4 +28,4 @@ docker rm na2 screen -dmS t1 -T xterm sh -c "docker run --name t1 -p 10.0.2.4:2023:2022 -v /home/tfs/tfs-ctrl/src/tests/ofc24/tempOC/files:/files -it asgamb1/oc23bgp.img:latest bash -c 'cp /files/transponders_x4.xml demoECOC21.xml ; ./startNetconfAgent.sh'" screen -dmS t3 -T xterm sh -c "docker run --name na3 -p 10.0.2.4:2025:2022 -v /home/tfs/tfs-ctrl/src/tests/ofc24/tempOC/files:/files -it asgamb1/flexscale-node.img:latest bash -c 'cp /files/platform_r1.xml init_openconfig-platform.xml ; ./startNetconfAgent.sh'" screen -dmS t2 -T xterm sh -c "docker run --name t2 -p 10.0.2.4:2024:2022 -v /home/tfs/tfs-ctrl/src/tests/ofc24/tempOC/files:/files -it asgamb1/oc23bgp.img:latest bash -c 'cp /files/transponders_x4_2.xml demoECOC21.xml ; ./startNetconfAgent.sh'" -screen -dmS t4 -T xterm sh -c "docker run --name na2 -p 10.0.2.4:2026:2022 -v /home/tfs/tfs-ctrl/src/tests/ofc24/tempOC/files:/files -it asgamb1/flexscale-node.img:latest bash -c 'cp /files/platform_r2.xml init_openconfig-platform.xml ; ./startNetconfAgent.sh'" \ No newline at end of file +screen -dmS t4 -T xterm sh -c "docker run --name na2 -p 10.0.2.4:2026:2022 -v /home/tfs/tfs-ctrl/src/tests/ofc24/tempOC/files:/files -it asgamb1/flexscale-node.img:latest bash -c 'cp /files/platform_r2.xml init_openconfig-platform.xml ; ./startNetconfAgent.sh'" diff --git a/src/tests/ofc24/roadms.sh b/src/tests/ofc24/roadms.sh index ac5101376fcb6b910eb3cbfd90e1e9a0528f6ed1..032615d555fce47c94a83848a9b24f0ed7ce04ae 100644 --- a/src/tests/ofc24/roadms.sh +++ b/src/tests/ofc24/roadms.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) +# Copyright 2022-2024 ETSI OSG/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. diff --git a/src/tests/ofc24/run_test.sh b/src/tests/ofc24/run_test.sh index a4cb46bb4e2448cad7e563719102c63503251771..b1cbe33c9c9169375b2f88fe5590347d85dd5552 100644 --- a/src/tests/ofc24/run_test.sh +++ b/src/tests/ofc24/run_test.sh @@ -1,17 +1,24 @@ #!/bin/bash +# Copyright 2022-2024 ETSI OSG/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 + docker stop na1 docker rm na1 - screen -dmS t1 -T xterm sh -c "docker run -p 10.0.2.10:2023:2022 -v ~/tfs-ctrl/src/tests/ofc24/tempOC/files:/files --name na1 -it asgamb1/oc23bgp.img:latest -" - sleep 2 - if [ "$( docker container inspect -f '{{.State.Running}}' na1)" = "true" ]; then - - - - docker exec na1 sh -c " cp /files/platform_t1.xml demoECOC21.xml ; - - /confd/examples.confd/OC23/startNetconfAgent.sh; " - else - echo "your container is not running yet" - fi - +screen -dmS t1 -T xterm sh -c "docker run -p 10.0.2.10:2023:2022 -v ~/tfs-ctrl/src/tests/ofc24/tempOC/files:/files --name na1 -it asgamb1/oc23bgp.img:latest" +sleep 2 +if [ "$( docker container inspect -f '{{.State.Running}}' na1)" = "true" ]; then + docker exec na1 sh -c " cp /files/platform_t1.xml demoECOC21.xml ; /confd/examples.confd/OC23/startNetconfAgent.sh; " +else + echo "your container is not running yet" +fi diff --git a/src/tests/ofc24/tempOC/files/startNetconfAgent.sh b/src/tests/ofc24/tempOC/files/startNetconfAgent.sh index 10b721883799c4fd257e1f627ff1480259037702..35c95b6574bca3e0b620c356ea0f393137ec1b90 100644 --- a/src/tests/ofc24/tempOC/files/startNetconfAgent.sh +++ b/src/tests/ofc24/tempOC/files/startNetconfAgent.sh @@ -1,4 +1,18 @@ #!/bin/bash +# Copyright 2022-2024 ETSI OSG/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 + make clean make all #make init diff --git a/src/tests/ofc24/transponders.sh b/src/tests/ofc24/transponders.sh index a7d69af37c5b1c915815506bfb3d38e230fd0713..17fe4a5e7ebcbc653e1f43291addbc15670c03f6 100644 --- a/src/tests/ofc24/transponders.sh +++ b/src/tests/ofc24/transponders.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) +# Copyright 2022-2024 ETSI OSG/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. @@ -23,4 +23,4 @@ docker rm tna2 screen -dmS tt1 -T xterm sh -c "docker run --name tna1 -p 10.0.2.4:2023:2022 -v /home/tfs/tfs-ctrl/src/tests/ofc24/tempOC/files:/files -it asgamb1/oc23bgp.img:latest bash -c 'cp /files/platform_t1.xml demoECOC21.xml ; ./startNetconfAgent.sh'" -screen -dmS tt2 -T xterm sh -c "docker run --name tna2 -p 10.0.2.4:2024:2022 -v /home/tfs/tfs-ctrl/src/tests/ofc24/tempOC/files:/files -it asgamb1/oc23bgp.img:latest bash -c 'cp /files/platform_t2.xml demoECOC21.xml ; ./startNetconfAgent.sh'" \ No newline at end of file +screen -dmS tt2 -T xterm sh -c "docker run --name tna2 -p 10.0.2.4:2024:2022 -v /home/tfs/tfs-ctrl/src/tests/ofc24/tempOC/files:/files -it asgamb1/oc23bgp.img:latest bash -c 'cp /files/platform_t2.xml demoECOC21.xml ; ./startNetconfAgent.sh'" diff --git a/src/tests/p4/tests/Objects.py b/src/tests/p4/tests/Objects.py index 6004ea413ec6af3412780bb7b49f03edb0481b7e..d8f08c271d1f1c2ca36f6ac87b38dd0a47bc1cf8 100644 --- a/src/tests/p4/tests/Objects.py +++ b/src/tests/p4/tests/Objects.py @@ -60,7 +60,7 @@ DEVICE_SW1 = json_device_p4_disabled(DEVICE_SW1_UUID) DEVICE_SW1_DPID = 1 DEVICE_SW1_NAME = DEVICE_SW1_UUID -DEVICE_SW1_IP_ADDR = '192.168.6.38' +DEVICE_SW1_IP_ADDR = '192.168.5.131' DEVICE_SW1_PORT = '50001' DEVICE_SW1_VENDOR = 'Open Networking Foundation' DEVICE_SW1_HW_VER = 'BMv2 simple_switch' @@ -102,7 +102,7 @@ DEVICE_SW2 = json_device_p4_disabled(DEVICE_SW2_UUID) DEVICE_SW2_DPID = 1 DEVICE_SW2_NAME = DEVICE_SW2_UUID -DEVICE_SW2_IP_ADDR = '192.168.6.38' +DEVICE_SW2_IP_ADDR = '192.168.5.131' DEVICE_SW2_PORT = '50002' DEVICE_SW2_VENDOR = 'Open Networking Foundation' DEVICE_SW2_HW_VER = 'BMv2 simple_switch' @@ -140,7 +140,7 @@ DEVICE_SW3 = json_device_p4_disabled(DEVICE_SW3_UUID) DEVICE_SW3_DPID = 1 DEVICE_SW3_NAME = DEVICE_SW3_UUID -DEVICE_SW3_IP_ADDR = '192.168.6.38' +DEVICE_SW3_IP_ADDR = '192.168.5.131' DEVICE_SW3_PORT = '50003' DEVICE_SW3_VENDOR = 'Open Networking Foundation' DEVICE_SW3_HW_VER = 'BMv2 simple_switch' @@ -178,7 +178,7 @@ DEVICE_SW4 = json_device_p4_disabled(DEVICE_SW4_UUID) DEVICE_SW4_DPID = 1 DEVICE_SW4_NAME = DEVICE_SW4_UUID -DEVICE_SW4_IP_ADDR = '192.168.6.38' +DEVICE_SW4_IP_ADDR = '192.168.5.131' DEVICE_SW4_PORT = '50004' DEVICE_SW4_VENDOR = 'Open Networking Foundation' DEVICE_SW4_HW_VER = 'BMv2 simple_switch' @@ -216,7 +216,7 @@ DEVICE_SW5 = json_device_p4_disabled(DEVICE_SW5_UUID) DEVICE_SW5_DPID = 1 DEVICE_SW5_NAME = DEVICE_SW5_UUID -DEVICE_SW5_IP_ADDR = '192.168.6.38' +DEVICE_SW5_IP_ADDR = '192.168.5.131' DEVICE_SW5_PORT = '50005' DEVICE_SW5_VENDOR = 'Open Networking Foundation' DEVICE_SW5_HW_VER = 'BMv2 simple_switch' @@ -254,7 +254,7 @@ DEVICE_SW6 = json_device_p4_disabled(DEVICE_SW6_UUID) DEVICE_SW6_DPID = 1 DEVICE_SW6_NAME = DEVICE_SW6_UUID -DEVICE_SW6_IP_ADDR = '192.168.6.38' +DEVICE_SW6_IP_ADDR = '192.168.5.131' DEVICE_SW6_PORT = '50006' DEVICE_SW6_VENDOR = 'Open Networking Foundation' DEVICE_SW6_HW_VER = 'BMv2 simple_switch' @@ -292,7 +292,7 @@ DEVICE_SW7 = json_device_p4_disabled(DEVICE_SW7_UUID) DEVICE_SW7_DPID = 1 DEVICE_SW7_NAME = DEVICE_SW7_UUID -DEVICE_SW7_IP_ADDR = '192.168.6.38' +DEVICE_SW7_IP_ADDR = '192.168.5.131' DEVICE_SW7_PORT = '50007' DEVICE_SW7_VENDOR = 'Open Networking Foundation' DEVICE_SW7_HW_VER = 'BMv2 simple_switch' @@ -330,7 +330,7 @@ DEVICE_SW8 = json_device_p4_disabled(DEVICE_SW8_UUID) DEVICE_SW8_DPID = 1 DEVICE_SW8_NAME = DEVICE_SW8_UUID -DEVICE_SW8_IP_ADDR = '192.168.6.38' +DEVICE_SW8_IP_ADDR = '192.168.5.131' DEVICE_SW8_PORT = '50008' DEVICE_SW8_VENDOR = 'Open Networking Foundation' DEVICE_SW8_HW_VER = 'BMv2 simple_switch' diff --git a/src/tests/tools/mock_qkd_nodes/start.sh b/src/tests/tools/mock_qkd_nodes/start.sh index faf2f84baf61f16565b497b53bf5f41f45007c00..89797b9c9496cdf58061c406ad2886be0d9c47f6 100755 --- a/src/tests/tools/mock_qkd_nodes/start.sh +++ b/src/tests/tools/mock_qkd_nodes/start.sh @@ -13,18 +13,30 @@ # See the License for the specific language governing permissions and # limitations under the License. +#!/bin/bash cd "$(dirname "$0")" +# Function to kill all background processes killbg() { - for p in "${pids[@]}" ; do - kill "$p"; - done + for p in "${pids[@]}" ; do + kill "$p"; + done } trap killbg EXIT pids=() + +# Set FLASK_APP and run the Flask instances on different ports +export FLASK_APP=wsgi flask run --host 0.0.0.0 --port 11111 & pids+=($!) + flask run --host 0.0.0.0 --port 22222 & pids+=($!) -flask run --host 0.0.0.0 --port 33333 + +flask run --host 0.0.0.0 --port 33333 & +pids+=($!) + +# Wait for all background processes to finish +wait + diff --git a/src/vnt_manager/.gitlab-ci.yml b/src/vnt_manager/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..2566df2387776356b61609b51501b41c167b140a --- /dev/null +++ b/src/vnt_manager/.gitlab-ci.yml @@ -0,0 +1,38 @@ +# Copyright 2022-2024 ETSI OSG/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. + +# build, tag and push the Docker image to the gitlab registry +build vnt_manager: + variables: + IMAGE_NAME: 'vnt_manager' # name of the microservice + IMAGE_TAG: 'latest' # tag of the container image (production, development, etc) + stage: build + before_script: + - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY + script: + - docker buildx build -t "$IMAGE_NAME:$IMAGE_TAG" -f ./src/$IMAGE_NAME/Dockerfile . + - docker tag "$IMAGE_NAME:$IMAGE_TAG" "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG" + - docker push "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG" + after_script: + - docker images --filter="dangling=true" --quiet | xargs -r docker rmi + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)' + - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"' + - changes: + - src/$IMAGE_NAME/**/*.{py,in,yml} + - src/$IMAGE_NAME/Dockerfile + - src/$IMAGE_NAME/tests/*.py + - src/$IMAGE_NAME/tests/Dockerfile + - manifests/${IMAGE_NAME}service.yaml + - .gitlab-ci.yml diff --git a/src/vnt_manager/Config.py b/src/vnt_manager/Config.py new file mode 100644 index 0000000000000000000000000000000000000000..bbfc943b68af13a11e562abbc8680ade71db8f02 --- /dev/null +++ b/src/vnt_manager/Config.py @@ -0,0 +1,13 @@ +# Copyright 2022-2024 ETSI OSG/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. diff --git a/src/vnt_manager/Dockerfile b/src/vnt_manager/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..2680336e962240c3938b06ffb47079bd6dab1368 --- /dev/null +++ b/src/vnt_manager/Dockerfile @@ -0,0 +1,87 @@ +# Copyright 2022-2024 ETSI OSG/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. + +FROM python:3.9-slim + +# Install dependencies +RUN apt-get --yes --quiet --quiet update && \ + apt-get --yes --quiet --quiet install wget g++ && \ + rm -rf /var/lib/apt/lists/* + +# Set Python to show logs as they occur +ENV PYTHONUNBUFFERED=0 +ENV PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python + +# Download the gRPC health probe +RUN GRPC_HEALTH_PROBE_VERSION=v0.2.0 && \ + wget -qO/bin/grpc_health_probe https://github.com/grpc-ecosystem/grpc-health-probe/releases/download/${GRPC_HEALTH_PROBE_VERSION}/grpc_health_probe-linux-amd64 && \ + chmod +x /bin/grpc_health_probe + +# Creating a user for security reasons +RUN groupadd -r teraflow && useradd -u 1001 --no-log-init -r -m -g teraflow teraflow +USER teraflow + +# set working directory +RUN mkdir -p /home/teraflow/controller/common/ +WORKDIR /home/teraflow/controller + +# Get Python packages per module +ENV VIRTUAL_ENV=/home/teraflow/venv +RUN python3 -m venv ${VIRTUAL_ENV} +ENV PATH="${VIRTUAL_ENV}/bin:${PATH}" + +# Get generic Python packages +RUN python3 -m pip install --upgrade pip +RUN python3 -m pip install --upgrade setuptools wheel +RUN python3 -m pip install --upgrade pip-tools + +# Get common Python packages +# Note: this step enables sharing the previous Docker build steps among all the Python components +COPY --chown=teraflow:teraflow common_requirements.in common_requirements.in +RUN pip-compile --quiet --output-file=common_requirements.txt common_requirements.in +RUN python3 -m pip install -r common_requirements.txt + +# Add common files into working directory +WORKDIR /home/teraflow/controller/common +COPY --chown=teraflow:teraflow src/common/. ./ +RUN rm -rf proto + +# Create proto sub-folder, copy .proto files, and generate Python code +RUN mkdir -p /home/teraflow/controller/common/proto +WORKDIR /home/teraflow/controller/common/proto +RUN touch __init__.py +COPY --chown=teraflow:teraflow proto/*.proto ./ +RUN python3 -m grpc_tools.protoc -I=. --python_out=. --grpc_python_out=. *.proto +RUN rm *.proto +RUN find . -type f -exec sed -i -E 's/(import\ .*)_pb2/from . \1_pb2/g' {} \; + +# Create module sub-folders +RUN mkdir -p /home/teraflow/controller/vnt_manager +WORKDIR /home/teraflow/controller + +# Get Python packages per module +COPY --chown=teraflow:teraflow ./src/vnt_manager/requirements.in vnt_manager/requirements.in +# consider common and specific requirements to avoid inconsistencies with dependencies +RUN pip-compile --quiet --output-file=vnt_manager/requirements.txt vnt_manager/requirements.in common_requirements.in +RUN python3 -m pip install -r vnt_manager/requirements.txt + +# Add component files into working directory +COPY src/context/__init__.py context/__init__.py +COPY src/context/client/. context/client/ +COPY src/device/__init__.py device/__init__.py +COPY src/device/client/. device/client/ +COPY src/vnt_manager/. vnt_manager/ + +# Start the service +ENTRYPOINT ["python", "-m", "vnt_manager.service"] diff --git a/src/vnt_manager/__init__.py b/src/vnt_manager/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..bbfc943b68af13a11e562abbc8680ade71db8f02 --- /dev/null +++ b/src/vnt_manager/__init__.py @@ -0,0 +1,13 @@ +# Copyright 2022-2024 ETSI OSG/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. diff --git a/src/vnt_manager/client/VNTManagerClient.py b/src/vnt_manager/client/VNTManagerClient.py new file mode 100644 index 0000000000000000000000000000000000000000..8ecb3dc0d8f7c937c66b5af6e2f3ae715575b425 --- /dev/null +++ b/src/vnt_manager/client/VNTManagerClient.py @@ -0,0 +1,104 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import logging + +import grpc + +from common.Constants import ServiceNameEnum +from common.proto.context_pb2 import Empty +from common.proto.vnt_manager_pb2 import VNTSubscriptionRequest, VNTSubscriptionReply +from common.proto.vnt_manager_pb2_grpc import VNTManagerServiceStub +from common.Settings import get_service_host, get_service_port_grpc +from common.tools.client.RetryDecorator import delay_exponential, retry +from common.tools.grpc.Tools import grpc_message_to_json +from common.proto.context_pb2 import ( + Link, LinkId, LinkIdList, LinkList, +) +from common.tools.grpc.Tools import grpc_message_to_json_string + +LOGGER = logging.getLogger(__name__) +MAX_RETRIES = 15 +DELAY_FUNCTION = delay_exponential(initial=0.01, increment=2.0, maximum=5.0) +RETRY_DECORATOR = retry( + max_retries=MAX_RETRIES, + delay_function=DELAY_FUNCTION, + prepare_method_name="connect", +) + + +class VNTManagerClient: + def __init__(self, host=None, port=None): + if not host: + host = get_service_host(ServiceNameEnum.VNTMANAGER) + if not port: + port = get_service_port_grpc(ServiceNameEnum.VNTMANAGER) + self.endpoint = "{:s}:{:s}".format(str(host), str(port)) + LOGGER.debug("Creating channel to {:s}...".format(str(self.endpoint))) + self.channel = None + self.stub = None + self.connect() + LOGGER.debug("Channel created") + + def connect(self): + self.channel = grpc.insecure_channel(self.endpoint) + self.stub = VNTManagerServiceStub(self.channel) + + def close(self): + if self.channel is not None: + self.channel.close() + self.channel = None + self.stub = None + + @RETRY_DECORATOR + def VNTSubscript(self, request: VNTSubscriptionRequest) -> VNTSubscriptionReply: + LOGGER.debug("Subscript request: {:s}".format(str(grpc_message_to_json(request)))) + response = self.stub.VNTSubscript(request) + LOGGER.debug("Subscript result: {:s}".format(str(grpc_message_to_json(response)))) + return response + + @RETRY_DECORATOR + def ListVirtualLinkIds(self, request: Empty) -> LinkIdList: + LOGGER.debug('ListVirtualLinkIds request: {:s}'.format(grpc_message_to_json_string(request))) + response = self.stub.ListVirtualLinkIds(request) + LOGGER.debug('ListVirtualLinkIds result: {:s}'.format(grpc_message_to_json_string(response))) + return response + + @RETRY_DECORATOR + def ListVirtualLinks(self, request: Empty) -> LinkList: + LOGGER.debug('ListVirtualLinks request: {:s}'.format(grpc_message_to_json_string(request))) + response = self.stub.ListVirtualLinks(request) + LOGGER.debug('ListVirtualLinks result: {:s}'.format(grpc_message_to_json_string(response))) + return response + + @RETRY_DECORATOR + def GetVirtualLink(self, request: LinkId) -> Link: + LOGGER.debug('GetVirtualLink request: {:s}'.format(grpc_message_to_json_string(request))) + response = self.stub.GetVirtualLink(request) + LOGGER.debug('GetVirtualLink result: {:s}'.format(grpc_message_to_json_string(response))) + return response + + @RETRY_DECORATOR + def SetVirtualLink(self, request: Link) -> LinkId: + LOGGER.debug('SetVirtualLink request: {:s}'.format(grpc_message_to_json_string(request))) + response = self.stub.SetVirtualLink(request) + LOGGER.debug('SetVirtualLink result: {:s}'.format(grpc_message_to_json_string(response))) + return response + + @RETRY_DECORATOR + def RemoveVirtualLink(self, request: LinkId) -> Empty: + LOGGER.debug('RemoveVirtualLink request: {:s}'.format(grpc_message_to_json_string(request))) + response = self.stub.RemoveVirtualLink(request) + LOGGER.debug('RemoveVirtualLink result: {:s}'.format(grpc_message_to_json_string(response))) + return response diff --git a/src/vnt_manager/client/__init__.py b/src/vnt_manager/client/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..bbfc943b68af13a11e562abbc8680ade71db8f02 --- /dev/null +++ b/src/vnt_manager/client/__init__.py @@ -0,0 +1,13 @@ +# Copyright 2022-2024 ETSI OSG/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. diff --git a/src/vnt_manager/requirements.in b/src/vnt_manager/requirements.in new file mode 100644 index 0000000000000000000000000000000000000000..6f9f590845cf3c925b2da23f127bc4aa942253b9 --- /dev/null +++ b/src/vnt_manager/requirements.in @@ -0,0 +1,15 @@ +# Copyright 2022-2024 ETSI OSG/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. + +websockets==12.0 diff --git a/src/vnt_manager/service/VNTManagerService.py b/src/vnt_manager/service/VNTManagerService.py new file mode 100644 index 0000000000000000000000000000000000000000..80d635ffe475c7840cf9bd0c0650471bae17cb3e --- /dev/null +++ b/src/vnt_manager/service/VNTManagerService.py @@ -0,0 +1,35 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import logging + +from common.Constants import ServiceNameEnum +from common.proto.vnt_manager_pb2_grpc import add_VNTManagerServiceServicer_to_server +from common.Settings import get_service_port_grpc +from common.tools.service.GenericGrpcService import GenericGrpcService +from .VNTManagerServiceServicerImpl import VNTManagerServiceServicerImpl + +LOGGER = logging.getLogger(__name__) + + +class VNTManagerService(GenericGrpcService): + def __init__(self, cls_name: str = __name__): + port = get_service_port_grpc(ServiceNameEnum.VNTMANAGER) + super().__init__(port, cls_name=cls_name) + self.vntmanager_servicer = VNTManagerServiceServicerImpl() + + def install_servicers(self): + add_VNTManagerServiceServicer_to_server( + self.vntmanager_servicer, self.server + ) diff --git a/src/vnt_manager/service/VNTManagerServiceServicerImpl.py b/src/vnt_manager/service/VNTManagerServiceServicerImpl.py new file mode 100644 index 0000000000000000000000000000000000000000..d684e044efd972bd7705f6c1a448b0a5be23431b --- /dev/null +++ b/src/vnt_manager/service/VNTManagerServiceServicerImpl.py @@ -0,0 +1,183 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import grpc +import json +import logging +import threading +import time +from websockets.sync.client import connect +from common.Constants import DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME +from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_method +from common.proto.context_pb2 import ContextId, Empty, Link, LinkId, LinkList, TopologyId +from common.proto.vnt_manager_pb2 import VNTSubscriptionRequest, VNTSubscriptionReply +from common.proto.vnt_manager_pb2_grpc import VNTManagerServiceServicer +from common.tools.grpc.Tools import grpc_message_to_json, grpc_message_to_json_string +from common.tools.object_factory.Context import json_context_id +from common.tools.object_factory.Topology import json_topology_id +from context.client.ContextClient import ContextClient +from context.client.EventsCollector import EventsCollector +from .vntm_config_device import configure, deconfigure + +LOGGER = logging.getLogger(__name__) + +METRICS_POOL = MetricsPool("VNTManager", "RPC") + +context_client: ContextClient = ContextClient() + +JSON_ADMIN_CONTEXT_ID = json_context_id(DEFAULT_CONTEXT_NAME) +ADMIN_CONTEXT_ID = ContextId(**JSON_ADMIN_CONTEXT_ID) +ADMIN_TOPOLOGY_ID = TopologyId(**json_topology_id(DEFAULT_TOPOLOGY_NAME, context_id=JSON_ADMIN_CONTEXT_ID)) + +GET_EVENT_TIMEOUT = 0.5 + + +class VNTMEventDispatcher(threading.Thread): + def __init__(self, host, port) -> None: + LOGGER.debug('Creating VTNM connector...') + self.host = host + self.port = port + super().__init__(name='VNTMEventDispatcher', daemon=True) + self._terminate = threading.Event() + LOGGER.debug('VNTM connector created') + + def start(self) -> None: + self._terminate.clear() + return super().start() + + def stop(self): + self._terminate.set() + + + def send_msg(self, msg): + try: + self.websocket.send(msg) + except Exception as e: + LOGGER.info(e) + + def recv_msg(self): + message = self.websocket.recv() + return message + + def run(self) -> None: + + time.sleep(5) + events_collector = EventsCollector( + context_client, log_events_received=True, + activate_context_collector = False, + activate_topology_collector = True, + activate_device_collector = False, + activate_link_collector = False, + activate_service_collector = False, + activate_slice_collector = False, + activate_connection_collector = False,) + events_collector.start() + + + url = "ws://" + str(self.host) + ":" + str(self.port) + LOGGER.debug('Connecting to {}'.format(url)) + + try: + LOGGER.info("Connecting to events server...: {}".format(url)) + self.websocket = connect(url) + except Exception as ex: + LOGGER.error('Error connecting to {}'.format(url)) + else: + LOGGER.info('Connected to {}'.format(url)) + context_id = json_context_id(DEFAULT_CONTEXT_NAME) + topology_id = json_topology_id(DEFAULT_TOPOLOGY_NAME, context_id) + + try: + topology_details = context_client.GetTopologyDetails(TopologyId(**topology_id)) + except Exception as ex: + LOGGER.warning('No topology found') + else: + self.send_msg(grpc_message_to_json_string(topology_details)) + + while not self._terminate.is_set(): + event = events_collector.get_event(block=True, timeout=GET_EVENT_TIMEOUT) + LOGGER.info('Event type: {}'.format(event)) + if event is None: continue + LOGGER.debug('Received event: {}'.format(event)) + topology_details = context_client.GetTopologyDetails(TopologyId(**topology_id)) + + to_send = grpc_message_to_json_string(topology_details) + + self.send_msg(to_send) + + LOGGER.info('Exiting') + events_collector.stop() + + +class VNTManagerServiceServicerImpl(VNTManagerServiceServicer): + def __init__(self): + LOGGER.debug("Creating Servicer...") + LOGGER.debug("Servicer Created") + self.links = [] + + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) + def VNTSubscript(self, request: VNTSubscriptionRequest, context: grpc.ServicerContext) -> VNTSubscriptionReply: + LOGGER.info("Subscript request: {:s}".format(str(grpc_message_to_json(request)))) + reply = VNTSubscriptionReply() + reply.subscription = "OK" + + self.event_dispatcher = VNTMEventDispatcher(request.host, int(request.port)) + self.host = request.host + self.port = request.port + self.event_dispatcher.start() + return reply + + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) + def ListVirtualLinks(self, request : Empty, context : grpc.ServicerContext) -> LinkList: + return [link for link in context_client.ListLinks(Empty()).links if link.virtual] + + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) + def GetVirtualLink(self, request : LinkId, context : grpc.ServicerContext) -> Link: + link = context_client.GetLink(request) + return link if link.virtual else Empty() + + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) + def SetVirtualLink(self, request : Link, context : grpc.ServicerContext) -> LinkId: + try: + LOGGER.info('SETTING virtual link') + self.event_dispatcher.send_msg(grpc_message_to_json_string(request)) + # configure('CSGW1', 'xe5', 'CSGW2', 'xe5', 'ecoc2024-1') + response = self.event_dispatcher.recv_msg() + message_json = json.loads(response) + link = Link(**message_json) + context_client.SetLink(link) + except Exception as e: + LOGGER.error('Exception setting virtual link={}\n\t{}'.format(request.link_id.link_uuid.uuid, e)) + return request.link_id + + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) + def RemoveVirtualLink(self, request : LinkId, context : grpc.ServicerContext) -> Empty: + try: + self.event_dispatcher.send_msg(grpc_message_to_json_string(request)) + # deconfigure('CSGW1', 'xe5', 'CSGW2', 'xe5', 'ecoc2024-1') + response = self.event_dispatcher.recv_msg() + message_json = json.loads(response) + link_id = LinkId(**message_json) + context_client.RemoveLink(link_id) + + LOGGER.info('Removed') + except Exception as e: + msg_error = 'Exception removing virtual link={}\n\t{}'.format(request.link_uuid.uuid, e) + LOGGER.error(msg_error) + return msg_error + else: + context_client.RemoveLink(request) + LOGGER.info('Removed') + + return Empty() diff --git a/src/vnt_manager/service/__init__.py b/src/vnt_manager/service/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..bbfc943b68af13a11e562abbc8680ade71db8f02 --- /dev/null +++ b/src/vnt_manager/service/__init__.py @@ -0,0 +1,13 @@ +# Copyright 2022-2024 ETSI OSG/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. diff --git a/src/vnt_manager/service/__main__.py b/src/vnt_manager/service/__main__.py new file mode 100644 index 0000000000000000000000000000000000000000..a67eb4cfdf657c00373ce93d617425eda2f00981 --- /dev/null +++ b/src/vnt_manager/service/__main__.py @@ -0,0 +1,66 @@ +# Copyright 2022-2024 ETSI OSG/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. + +import logging, signal, sys, threading +from prometheus_client import start_http_server +from common.Constants import ServiceNameEnum +from common.Settings import ( + ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC, + get_env_var_name, get_log_level, get_metrics_port, + wait_for_environment_variables +) +from .VNTManagerService import VNTManagerService + +LOG_LEVEL = get_log_level() +logging.basicConfig(level=LOG_LEVEL, format="[%(asctime)s] %(levelname)s:%(name)s:%(message)s") +LOGGER = logging.getLogger(__name__) + +terminate = threading.Event() + +def signal_handler(signal, frame): # pylint: disable=redefined-outer-name,unused-argument + LOGGER.warning("Terminate signal received") + terminate.set() + +def main(): + LOGGER.info("Starting...") + + wait_for_environment_variables([ + get_env_var_name(ServiceNameEnum.CONTEXT, ENVVAR_SUFIX_SERVICE_HOST ), + get_env_var_name(ServiceNameEnum.CONTEXT, ENVVAR_SUFIX_SERVICE_PORT_GRPC), + get_env_var_name(ServiceNameEnum.DEVICE, ENVVAR_SUFIX_SERVICE_HOST ), + get_env_var_name(ServiceNameEnum.DEVICE, ENVVAR_SUFIX_SERVICE_PORT_GRPC), + ]) + + signal.signal(signal.SIGINT, signal_handler) + signal.signal(signal.SIGTERM, signal_handler) + + # Start metrics server + metrics_port = get_metrics_port() + start_http_server(metrics_port) + + # Starting VNTManager service + grpc_service = VNTManagerService() + grpc_service.start() + + # Wait for Ctrl+C or termination signal + while not terminate.wait(timeout=1): pass + + LOGGER.info("Terminating...") + grpc_service.stop() + + LOGGER.info("Bye") + return 0 + +if __name__ == "__main__": + sys.exit(main()) diff --git a/src/vnt_manager/service/vntm_config_device.py b/src/vnt_manager/service/vntm_config_device.py new file mode 100644 index 0000000000000000000000000000000000000000..4735ed31f185ba221033a7611b2b1af3f90c1688 --- /dev/null +++ b/src/vnt_manager/service/vntm_config_device.py @@ -0,0 +1,184 @@ +# Copyright 2022-2024 ETSI OSG/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. + +from typing import Dict +from common.proto.context_pb2 import ConfigRule +from common.tools.context_queries.Device import get_device +from common.tools.object_factory.ConfigRule import json_config_rule_set, json_config_rule_delete +from context.client.ContextClient import ContextClient +from device.client.DeviceClient import DeviceClient + +##### Config Rule Composers #################################################### + +def compose_config_rule(resource_key, resource_value, delete) -> Dict: + json_config_rule = json_config_rule_delete if delete else json_config_rule_set + return ConfigRule(**json_config_rule(resource_key, resource_value)) + +def network_instance(ni_name, ni_type, ni_router_id=None, ni_route_distinguisher=None, delete=False) -> Dict: + path = '/network_instance[{:s}]'.format(ni_name) + data = {'name': ni_name, 'type': ni_type} + if ni_router_id is not None: data['router_id'] = ni_router_id + if ni_route_distinguisher is not None: data['route_distinguisher'] = ni_route_distinguisher + return compose_config_rule(path, data, delete) + +def network_instance_add_protocol_bgp(ni_name, ni_type, ni_router_id, ni_bgp_as, neighbors=[], delete=False)-> Dict: + path = '/network_instance[{:s}]/protocols[BGP]'.format(ni_name) + data = { + 'name': ni_name, 'type': ni_type, 'router_id': ni_router_id, 'identifier': 'BGP', + 'protocol_name': ni_bgp_as, 'as': ni_bgp_as + } + if len(neighbors) > 0: + data['neighbors'] = [ + {'ip_address': neighbor_ip_address, 'remote_as': neighbor_remote_as} + for neighbor_ip_address, neighbor_remote_as in neighbors + ] + return compose_config_rule(path, data, delete) + +def network_instance_add_protocol_direct(ni_name, ni_type, delete=False) -> Dict: + path = '/network_instance[{:s}]/protocols[DIRECTLY_CONNECTED]'.format(ni_name) + data = { + 'name': ni_name, 'type': ni_type, 'identifier': 'DIRECTLY_CONNECTED', + 'protocol_name': 'DIRECTLY_CONNECTED' + } + return compose_config_rule(path, data, delete) + +def network_instance_add_protocol_static(ni_name, ni_type, delete=False) -> Dict: + path = '/network_instance[{:s}]/protocols[STATIC]'.format(ni_name) + data = { + 'name': ni_name, 'type': ni_type, 'identifier': 'STATIC', + 'protocol_name': 'STATIC' + } + return compose_config_rule(path, data, delete) + +def network_instance_add_table_connection( + ni_name, src_protocol, dst_protocol, address_family, default_import_policy, bgp_as=None, delete=False +) -> Dict: + path = '/network_instance[{:s}]/table_connections[{:s}][{:s}][{:s}]'.format( + ni_name, src_protocol, dst_protocol, address_family + ) + data = { + 'name': ni_name, 'src_protocol': src_protocol, 'dst_protocol': dst_protocol, + 'address_family': address_family, 'default_import_policy': default_import_policy, + } + if bgp_as is not None: data['as'] = bgp_as + return compose_config_rule(path, data, delete) + +def interface( + name, index, description=None, if_type=None, vlan_id=None, mtu=None, ipv4_address_prefix=None, + enabled=None, delete=False +) -> Dict: + path = '/interface[{:s}]/subinterface[{:d}]'.format(name, index) + data = {'name': name, 'index': index} + if description is not None: data['description'] = description + if if_type is not None: data['type' ] = if_type + if vlan_id is not None: data['vlan_id' ] = vlan_id + if mtu is not None: data['mtu' ] = mtu + if enabled is not None: data['enabled' ] = enabled + if ipv4_address_prefix is not None: + ipv4_address, ipv4_prefix = ipv4_address_prefix + data['address_ip' ] = ipv4_address + data['address_prefix'] = ipv4_prefix + return compose_config_rule(path, data, delete) + +def network_instance_interface(ni_name, ni_type, if_name, if_index, delete=False) -> Dict: + path = '/network_instance[{:s}]/interface[{:s}.{:d}]'.format(ni_name, if_name, if_index) + data = {'name': ni_name, 'type': ni_type, 'id': if_name, 'interface': if_name, 'subinterface': if_index} + return compose_config_rule(path, data, delete) + +# configure('CSGW1', 'xe5', 'CSGW2', 'xe5', 'ecoc2024-1') +# deconfigure('CSGW1', 'xe5', 'CSGW2', 'xe5', 'ecoc2024-1') + +def configure(router_a, port_a, router_b, port_b, ni_name): + context_client = ContextClient() + device_client = DeviceClient() + + client_if_name = 'ce1' + client_if_addr = {'CSGW1': ('192.168.10.1', 24), 'CSGW2': ('192.168.20.1', 24)} + bgp_router_addresses = {'CSGW1': '192.168.150.1', 'CSGW2': '192.168.150.2'} + + locations = [ + {'router': router_a, 'port': port_a, 'neighbor': router_b}, + {'router': router_b, 'port': port_b, 'neighbor': router_a}, + ] + for location in locations: + router = location['router'] + port = location['port'] + neighbor = location['neighbor'] + + client_ipv4_address_prefix = client_if_addr[router] + bgp_router_address = bgp_router_addresses[router] + bgp_neighbor_address = bgp_router_addresses[neighbor] + + config_rules = [ + network_instance(ni_name, 'L3VRF', bgp_router_address, '65001:1'), + network_instance_add_protocol_direct(ni_name, 'L3VRF'), + network_instance_add_protocol_static(ni_name, 'L3VRF'), + network_instance_add_protocol_bgp(ni_name, 'L3VRF', bgp_router_address, '65001', neighbors=[ + (bgp_neighbor_address, '65001') + ]), + network_instance_add_table_connection( + ni_name, 'DIRECTLY_CONNECTED', 'BGP', 'IPV4', 'ACCEPT_ROUTE', bgp_as='65001' + ), + network_instance_add_table_connection( + ni_name, 'STATIC', 'BGP', 'IPV4', 'ACCEPT_ROUTE', bgp_as='65001' + ), + + interface(client_if_name, 0, if_type='ethernetCsmacd', mtu=1500), + network_instance_interface(ni_name, 'L3VRF', client_if_name, 0), + interface(client_if_name, 0, if_type='ethernetCsmacd', mtu=1500, + ipv4_address_prefix=client_ipv4_address_prefix, enabled=True), + + interface(port, 0, if_type='ethernetCsmacd', mtu=1500), + network_instance_interface(ni_name, 'L3VRF', port, 0), + interface(port, 0, if_type='ethernetCsmacd', mtu=1500, + ipv4_address_prefix=(bgp_router_address, 24), enabled=True), + ] + + device = get_device( + context_client, router, rw_copy=True, include_endpoints=False, + include_config_rules=False, include_components=False + ) + device.device_config.config_rules.extend(config_rules) + device_client.ConfigureDevice(device) + + +def deconfigure(router_a, port_a, router_b, port_b, ni_name): + context_client = ContextClient() + device_client = DeviceClient() + + client_if_name = 'ce1' + + locations = [ + {'router': router_a, 'port': port_a, 'neighbor': router_b}, + {'router': router_b, 'port': port_b, 'neighbor': router_a}, + ] + for location in locations: + router = location['router'] + port = location['port'] + #neighbor = location['neighbor'] + + config_rules = [ + network_instance_interface(ni_name, 'L3VRF', client_if_name, 0, delete=True), + network_instance_interface(ni_name, 'L3VRF', port, 0, delete=True), + #interface(client_if_name, 0, delete=True), + #interface(port, 0, delete=True), + network_instance(ni_name, 'L3VRF', delete=True), + ] + + device = get_device( + context_client, router, rw_copy=True, include_endpoints=False, + include_config_rules=False, include_components=False + ) + device.device_config.config_rules.extend(config_rules) + device_client.ConfigureDevice(device) diff --git a/src/webui/service/__init__.py b/src/webui/service/__init__.py index 6a08fbbbc79791a87576db7ae2bd63da3d4f53d5..a7c0898559606e182c4326761c04b03c8e8fa57f 100644 --- a/src/webui/service/__init__.py +++ b/src/webui/service/__init__.py @@ -20,6 +20,10 @@ from common.tools.grpc.Tools import grpc_message_to_json from context.client.ContextClient import ContextClient from device.client.DeviceClient import DeviceClient from qkd_app.client.QKDAppClient import QKDAppClient +from common.Settings import ( + is_deployed_bgpls, is_deployed_load_gen, is_deployed_optical, + is_deployed_policy, is_deployed_qkd_app, is_deployed_slice +) def get_working_context() -> str: return session['context_uuid'] if 'context_uuid' in session else '---' @@ -83,43 +87,43 @@ def create_app(use_config=None, web_app_root=None): app.register_blueprint(healthz, url_prefix='/healthz') - from webui.service.js.routes import js # pylint: disable=import-outside-toplevel + from webui.service.js.routes import js # pylint: disable=import-outside-toplevel app.register_blueprint(js) - from webui.service.main.routes import main # pylint: disable=import-outside-toplevel + from webui.service.main.routes import main # pylint: disable=import-outside-toplevel app.register_blueprint(main) - from webui.service.load_gen.routes import load_gen # pylint: disable=import-outside-toplevel + from webui.service.load_gen.routes import load_gen # pylint: disable=import-outside-toplevel app.register_blueprint(load_gen) - - from webui.service.base_optical.route import base_optical # pylint: disable=import-outside-toplevel + + from webui.service.base_optical.route import base_optical # pylint: disable=import-outside-toplevel app.register_blueprint(base_optical) - - from webui.service.opticalconfig.routes import opticalconfig # pylint: disable=import-outside-toplevel + + from webui.service.opticalconfig.routes import opticalconfig # pylint: disable=import-outside-toplevel app.register_blueprint(opticalconfig) - - from webui.service.optical_link.routes import optical_link # pylint: disable=import-outside-toplevel + + from webui.service.optical_link.routes import optical_link # pylint: disable=import-outside-toplevel app.register_blueprint(optical_link) - from webui.service.service.routes import service # pylint: disable=import-outside-toplevel + from webui.service.service.routes import service # pylint: disable=import-outside-toplevel app.register_blueprint(service) - from webui.service.slice.routes import slice # pylint: disable=import-outside-toplevel,redefined-builtin + from webui.service.slice.routes import slice # pylint: disable=import-outside-toplevel,redefined-builtin app.register_blueprint(slice) - from webui.service.device.routes import device # pylint: disable=import-outside-toplevel + from webui.service.device.routes import device # pylint: disable=import-outside-toplevel app.register_blueprint(device) - from webui.service.bgpls.routes import bgpls # pylint: disable=import-outside-toplevel + from webui.service.bgpls.routes import bgpls # pylint: disable=import-outside-toplevel app.register_blueprint(bgpls) - from webui.service.link.routes import link # pylint: disable=import-outside-toplevel + from webui.service.link.routes import link # pylint: disable=import-outside-toplevel app.register_blueprint(link) - from webui.service.qkd_app.routes import qkd_app as _qkd_app # pylint: disable=import-outside-toplevel - app.register_blueprint(_qkd_app) + from webui.service.qkd_app.routes import qkd_app # pylint: disable=import-outside-toplevel + app.register_blueprint(qkd_app) - from webui.service.policy_rule.routes import policy_rule # pylint: disable=import-outside-toplevel + from webui.service.policy_rule.routes import policy_rule # pylint: disable=import-outside-toplevel app.register_blueprint(policy_rule) app.jinja_env.globals.update({ # pylint: disable=no-member @@ -129,6 +133,13 @@ def create_app(use_config=None, web_app_root=None): 'round' : round, 'get_working_context' : get_working_context, 'get_working_topology': get_working_topology, + + 'is_deployed_bgpls' : is_deployed_bgpls, + 'is_deployed_load_gen': is_deployed_load_gen, + 'is_deployed_optical' : is_deployed_optical, + 'is_deployed_policy' : is_deployed_policy, + 'is_deployed_qkd_app' : is_deployed_qkd_app, + 'is_deployed_slice' : is_deployed_slice, }) if web_app_root is not None: diff --git a/src/webui/service/__main__.py b/src/webui/service/__main__.py index 8ec8dcb64d55c7a4c4d699601fe97a7d6432ce05..109c468c7daeda22efedf75a7293c6d8c6f038d8 100644 --- a/src/webui/service/__main__.py +++ b/src/webui/service/__main__.py @@ -41,10 +41,6 @@ def main(): get_env_var_name(ServiceNameEnum.DEVICE, ENVVAR_SUFIX_SERVICE_PORT_GRPC), get_env_var_name(ServiceNameEnum.SERVICE, ENVVAR_SUFIX_SERVICE_HOST ), get_env_var_name(ServiceNameEnum.SERVICE, ENVVAR_SUFIX_SERVICE_PORT_GRPC), - get_env_var_name(ServiceNameEnum.SLICE, ENVVAR_SUFIX_SERVICE_HOST ), - get_env_var_name(ServiceNameEnum.SLICE, ENVVAR_SUFIX_SERVICE_PORT_GRPC), - get_env_var_name(ServiceNameEnum.QKD_APP, ENVVAR_SUFIX_SERVICE_HOST ), - get_env_var_name(ServiceNameEnum.QKD_APP, ENVVAR_SUFIX_SERVICE_PORT_GRPC), ]) logger.info('Starting...') diff --git a/src/webui/service/base_optical/__init__.py b/src/webui/service/base_optical/__init__.py index 1549d9811aa5d1c193a44ad45d0d7773236c0612..3ee6f7071f145e06c3aeaefc09a43ccd88e619e3 100644 --- a/src/webui/service/base_optical/__init__.py +++ b/src/webui/service/base_optical/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) +# Copyright 2022-2024 ETSI OSG/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. diff --git a/src/webui/service/base_optical/route.py b/src/webui/service/base_optical/route.py index 8f3634a8944cca2018ef6b538c245b72f301d937..84fb8a97572e9e6f9f2056cae3ad9087a7390720 100644 --- a/src/webui/service/base_optical/route.py +++ b/src/webui/service/base_optical/route.py @@ -1,4 +1,4 @@ -# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) +# Copyright 2022-2024 ETSI OSG/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. @@ -13,17 +13,15 @@ # limitations under the License. -from flask import current_app, render_template, Blueprint, flash, session, redirect, url_for -from common.proto.context_pb2 import Empty, OpticalLink, LinkId, OpticalLinkList ,OpticalConfigList -from common.tools.context_queries.EndPoint import get_endpoint_names -from common.tools.context_queries.Link import get_link -from common.tools.context_queries.Topology import get_topology -from context.client.ContextClient import ContextClient -from device.client.DeviceClient import DeviceClient +from flask import render_template, Blueprint +#from common.proto.context_pb2 import Empty, OpticalConfigList +#from context.client.ContextClient import ContextClient +#from device.client.DeviceClient import DeviceClient base_optical = Blueprint('base_optical', __name__, url_prefix='/base_optical') -device_client = DeviceClient() -context_client = ContextClient() +#device_client = DeviceClient() +#context_client = ContextClient() + @base_optical.get('/') def home(): # context_client.connect() @@ -32,4 +30,4 @@ def home(): # device_client.connect() # device_client.GetDeviceConfiguration(opticalConfig_list) # device_client.close() - return render_template("base_optical/home.html") \ No newline at end of file + return render_template("base_optical/home.html") diff --git a/src/webui/service/main/routes.py b/src/webui/service/main/routes.py index d85c9f22d74dfd81134dfe515ab9690a841b1fcb..97c97331d415b8c2d059f5bb65236ba6563d48c3 100644 --- a/src/webui/service/main/routes.py +++ b/src/webui/service/main/routes.py @@ -48,9 +48,7 @@ def process_descriptors(descriptors): descriptor_loader = DescriptorLoader(descriptors, num_workers=DESCRIPTOR_LOADER_NUM_WORKERS) results = descriptor_loader.process() for message,level in compose_notifications(results): - if level == 'error': LOGGER.warning('ERROR message={:s}'.format(str(message))) - flash(message, level) @main.route('/', methods=['GET', 'POST']) @@ -169,10 +167,10 @@ def topology(): 'target': link.link_endpoint_ids[1].device_id.device_uuid.uuid, }) - return jsonify({'devices': devices, 'links': links ,'optical_links':optical_links}) + return jsonify({'devices': devices, 'links': links, 'optical_links': optical_links}) except: # pylint: disable=bare-except LOGGER.exception('Error retrieving topology') - return jsonify({'devices': [], 'links': [],'optical_links':[]}) + return jsonify({'devices': [], 'links': [], 'optical_links': []}) finally: context_client.close() diff --git a/src/webui/service/optical_link/__init__.py b/src/webui/service/optical_link/__init__.py index 355dcdb04bdddd352966a9567a7a63117666e619..7c7568fdb6e3b1446aa9412ad32a0a5948ba949b 100644 --- a/src/webui/service/optical_link/__init__.py +++ b/src/webui/service/optical_link/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) +# Copyright 2022-2024 ETSI OSG/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. diff --git a/src/webui/service/optical_link/routes.py b/src/webui/service/optical_link/routes.py index 8db38d479d104731fb60cfc4d2a41aa9e93eb709..bc4ed8c6a14d31512398341984029f07fc2bcc6c 100644 --- a/src/webui/service/optical_link/routes.py +++ b/src/webui/service/optical_link/routes.py @@ -1,4 +1,4 @@ -# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) +# Copyright 2022-2024 ETSI OSG/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. @@ -16,11 +16,8 @@ from flask import current_app, render_template, Blueprint, flash, session, redirect, url_for from common.proto.context_pb2 import Empty, OpticalLink, LinkId, OpticalLinkList from common.tools.context_queries.EndPoint import get_endpoint_names -from common.tools.context_queries.Link import get_link from common.tools.context_queries.Topology import get_topology -from common.tools.object_factory.OpticalLink import order_dict from context.client.ContextClient import ContextClient -import logging optical_link = Blueprint('optical_link', __name__, url_prefix='/optical_link') context_client = ContextClient() @@ -42,16 +39,17 @@ def home(): if grpc_topology is None: flash('Context({:s})/Topology({:s}) not found'.format(str(context_uuid), str(topology_uuid)), 'danger') else: - topo_link_uuids = {link_id.link_uuid.uuid for link_id in grpc_topology.link_ids} - grpc_links: OpticalLinkList = context_client.GetOpticalLinkList(Empty()) + grpc_links : OpticalLinkList = context_client.GetOpticalLinkList(Empty()) for link_ in grpc_links.optical_links: - links.append(link_) endpoint_ids.extend(link_.link_endpoint_ids) device_names, endpoints_data = get_endpoint_names(context_client, endpoint_ids) context_client.close() - return render_template('optical_link/home.html', links=links, device_names=device_names, endpoints_data=endpoints_data) + return render_template( + 'optical_link/home.html', links=links, device_names=device_names, + endpoints_data=endpoints_data + ) @optical_link.route('detail/', methods=('GET', 'POST')) @@ -68,22 +66,21 @@ def detail(link_uuid: str): device_names, endpoints_data = dict(), dict() else: device_names, endpoints_data = get_endpoint_names(context_client, link_obj.link_endpoint_ids) - c_slots= order_dict( link_obj.optical_details.c_slots) - l_slots= order_dict( link_obj.optical_details.l_slots) - s_slots= order_dict( link_obj.optical_details.s_slots) - + c_slots = link_obj.optical_details.c_slots + l_slots = link_obj.optical_details.l_slots + s_slots = link_obj.optical_details.s_slots + context_client.close() - - return render_template('optical_link/detail.html',link=link_obj, device_names=device_names, endpoints_data=endpoints_data - ,c_slots=c_slots,l_slots=l_slots,s_slots=s_slots) + + return render_template( + 'optical_link/detail.html', link=link_obj, device_names=device_names, + endpoints_data=endpoints_data, c_slots=c_slots, l_slots=l_slots, s_slots=s_slots + ) @optical_link.get('/delete') def delete(link_uuid): try: - - - request = LinkId() request.link_uuid.uuid = link_uuid # pylint: disable=no-member context_client.connect() @@ -98,20 +95,14 @@ def delete(link_uuid): @optical_link.get("delete_all") -def delete_all () : - - try : +def delete_all(): + try: context_client.connect() - optical_link_list:OpticalLinkList = context_client.GetOpticalLinkList(Empty()) + optical_link_list : OpticalLinkList = context_client.GetOpticalLinkList(Empty()) for optical_link in optical_link_list.optical_links: - context_client.DeleteOpticalLink(optical_link.link_id) - context_client.close() - flash(f"All Optical Link Deleted Successfully",'success') - except Exception as e : - flash(f"Problem in delete all optical link => {e}",'danger') - return redirect(url_for('optical_link.home')) - - - - \ No newline at end of file + context_client.close() + flash(f"All Optical Link Deleted Successfully",'success') + except Exception as e: + flash(f"Problem in delete all optical link => {e}",'danger') + return redirect(url_for('optical_link.home')) diff --git a/src/webui/service/opticalconfig/__init__.py b/src/webui/service/opticalconfig/__init__.py index 1549d9811aa5d1c193a44ad45d0d7773236c0612..3ee6f7071f145e06c3aeaefc09a43ccd88e619e3 100644 --- a/src/webui/service/opticalconfig/__init__.py +++ b/src/webui/service/opticalconfig/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) +# Copyright 2022-2024 ETSI OSG/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. diff --git a/src/webui/service/opticalconfig/forms.py b/src/webui/service/opticalconfig/forms.py index efce6b59cb41abc522658c187f276a4015cb4b9f..e9cb283eb00e07fa6ad10e78c377d921ac4c506d 100644 --- a/src/webui/service/opticalconfig/forms.py +++ b/src/webui/service/opticalconfig/forms.py @@ -1,27 +1,41 @@ +# Copyright 2022-2024 ETSI OSG/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. from flask_wtf import FlaskForm -from wtforms import StringField, SelectField, TextAreaField, SubmitField -from wtforms.validators import DataRequired, Length, NumberRange, ValidationError -from common.proto.context_pb2 import DeviceOperationalStatusEnum +from wtforms import StringField, SelectField, SubmitField class UpdateDeviceForm(FlaskForm): - power = StringField('Power') - frequency= StringField("Frequency") - operational_mode=StringField("Operational Mode") - line_port=SelectField("Line Port") - - - submit = SubmitField('Update') + power = StringField('Power') + frequency = StringField("Frequency") + operational_mode = StringField("Operational Mode") + line_port = SelectField("Line Port") + submit = SubmitField('Update') -class AddTrancseiver (FlaskForm): - transceiver = StringField("Transceiver") - submit = SubmitField('Add') -class UpdateInterfaceForm (FlaskForm): - ip=StringField("IP Address") - prefix_length=StringField("Prefix Length") - +class AddTrancseiver(FlaskForm): + transceiver = StringField("Transceiver") + submit = SubmitField('Add') -class UpdateStatusForm (FlaskForm): +class UpdateInterfaceForm(FlaskForm): + ip = StringField("IP Address") + prefix_length = StringField("Prefix Length") - status=SelectField("Device Status", choices=[('', 'Select...'), ('DISABLED', 'DISABLED'), ('ENABLED', 'ENABLED')]) \ No newline at end of file +DEVICE_STATUS = [ + ('', 'Select...'), + ('DISABLED', 'DISABLED'), + ('ENABLED', 'ENABLED') +] + +class UpdateStatusForm(FlaskForm): + status = SelectField("Device Status", choices=DEVICE_STATUS) diff --git a/src/webui/service/opticalconfig/routes.py b/src/webui/service/opticalconfig/routes.py index 1b60bff1be780039b51ceebe286d4dfdc16e7a71..257e867bf2a631818690140127b944d73dff8528 100644 --- a/src/webui/service/opticalconfig/routes.py +++ b/src/webui/service/opticalconfig/routes.py @@ -1,14 +1,31 @@ -import base64, json, logging #, re -from flask import request, redirect, render_template, Blueprint, flash, session, url_for, current_app ,make_response -from common.proto.context_pb2 import ( Empty -,DeviceId ,OpticalConfig, OpticalConfigId ,OpticalConfigList) +# Copyright 2022-2024 ETSI OSG/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. +import json, logging +from flask import ( + request, redirect, render_template, Blueprint, flash, session, url_for, + current_app, make_response +) +from common.proto.context_pb2 import ( + Empty, OpticalConfig, OpticalConfigId, OpticalConfigList +) from context.client.ContextClient import ContextClient from device.client.DeviceClient import DeviceClient from service.client.ServiceClient import ServiceClient from slice.client.SliceClient import SliceClient -from .forms import UpdateDeviceForm ,AddTrancseiver ,UpdateInterfaceForm ,UpdateStatusForm -from common.tools.context_queries.OpticalConfig import opticalconfig_get_uuid , device_get_uuid +from .forms import UpdateDeviceForm, AddTrancseiver, UpdateStatusForm +from common.tools.context_queries.OpticalConfig import opticalconfig_get_uuid from common.DeviceTypes import DeviceTypeEnum opticalconfig = Blueprint('opticalconfig', __name__,url_prefix="/opticalconfig") @@ -24,8 +41,7 @@ DESCRIPTOR_LOADER_NUM_WORKERS = 10 @opticalconfig.get("/") def home() : - list_config=[] - deviceId= DeviceId() + list_config = [] channels_num = 0 if 'context_uuid' not in session or 'topology_uuid' not in session: flash("Please select a context!", "warning") @@ -34,65 +50,47 @@ def home() : topology_uuid = session['topology_uuid'] context_client.connect() - opticalConfig_list:OpticalConfigList = context_client.GetOpticalConfig(Empty()) - logging.info("myconfigList %s",opticalConfig_list) - + opticalConfig_list : OpticalConfigList = context_client.GetOpticalConfig(Empty()) for configs in opticalConfig_list.opticalconfigs: - - value=json.loads(configs.config) if type(configs.config)==str else configs.config + value = json.loads(configs.config) if type(configs.config)==str else configs.config config_type = value["type"] if config_type != DeviceTypeEnum.OPEN_ROADM._value_ : - if ('channels' in value): - - - value["channels_number"]=len(value['channels']) - - else : - if ('interfaces' in value) : - value["channels_number"]=len(value['interfaces']) + if 'channels' in value: + value["channels_number"] = len(value['channels']) + else: + if 'interfaces' in value: + value["channels_number"] = len(value['interfaces']) # value['operationalMode']=value['operational-mode'] # value['targetOutputPower']=value['target-output-power'] value['opticalconfig_id']=configs.opticalconfig_id # value['line_port']=value["line-port"] - list_config.append(value) - - logging.info("opticalConfig %s",list_config) - + context_client.close() + return render_template('opticalconfig/home.html', config=list_config) - return render_template( - 'opticalconfig/home.html', config=list_config) - - - @opticalconfig.route('/detail',methods=['GET']) def show_details(config_uuid): - opticalconfigId=OpticalConfigId() - opticalconfigId.opticalconfig_uuid=config_uuid - device_details=[] - - context_client.connect() - response = context_client.SelectOpticalConfig(opticalconfigId) - context_client.close() - if (response and response.opticalconfig_id.opticalconfig_uuid !=''): - LOGGER.info("response from show detail %s",response) - opticalConfig = OpticalConfig() - opticalConfig.CopyFrom(response) - - device_name="" - config =json.loads(opticalConfig.config) - if ("device_name" in config): - device_name= config["device_name"] - config_type = config["type"] + opticalconfigId = OpticalConfigId() + opticalconfigId.opticalconfig_uuid = config_uuid + device_details = [] + + context_client.connect() + response = context_client.SelectOpticalConfig(opticalconfigId) + context_client.close() + if (response and response.opticalconfig_id.opticalconfig_uuid !=''): + opticalConfig = OpticalConfig() + opticalConfig.CopyFrom(response) + device_name = "" + config = json.loads(opticalConfig.config) + if "device_name" in config: + device_name = config["device_name"] + + config_type = config["type"] if config_type == DeviceTypeEnum.OPTICAL_TRANSPONDER._value_: - LOGGER.info("config details from show detail %s",config) - - if 'channels' in config: - for channel in config['channels'] : new_config={} new_config["name"]=channel['name'] @@ -101,16 +99,11 @@ def show_details(config_uuid): new_config["frequency"]=channel['frequency'] if 'frequency' in channel else '' new_config['line_port']=channel["line-port"] if 'line-port' in channel else '' new_config["status"] = channel['status'] if 'status' in channel else "" - device_details.append(new_config) if config_type == DeviceTypeEnum.OPTICAL_ROADM._value_: - LOGGER.info("config details from show detail %s",config) - - if 'channels' in config: - for channel in config['channels'] : new_config={} new_config["band_name"]=channel['band_name'] if 'band_name' in channel else None @@ -122,8 +115,8 @@ def show_details(config_uuid): new_config["status"] = channel['status'] if 'status' in channel else "" new_config['optical_band_parent']= channel['optical_band_parent'] if 'optical_band_parent' in channel else '' new_config['channel_index']= channel['channel_index'] if 'channel_index' in channel else '' - - device_details.append(new_config) + device_details.append(new_config) + if config_type == DeviceTypeEnum.OPEN_ROADM._value_: if 'interfaces' in config : for interface in config["interfaces"]: @@ -136,140 +129,116 @@ def show_details(config_uuid): new_config["frequency"]=interface["frequency"] new_config["width"]=interface[ "width"] new_config["type"]=interface["type"] - - device_details.append(new_config) + device_details.append(new_config) - - LOGGER.info("device details %s",device_details) - return render_template('opticalconfig/details.html', device=device_details,config_id=config_uuid,device_name=device_name,type=config_type) + return render_template( + 'opticalconfig/details.html', device=device_details, config_id=config_uuid, + device_name=device_name, type=config_type + ) @opticalconfig.route('/delete', methods=['GET']) def delete_opitcalconfig (opticalconfig_uuid) : try : - opticalconfigId=OpticalConfigId() - opticalconfigId.opticalconfig_uuid=opticalconfig_uuid + opticalconfigId = OpticalConfigId() + opticalconfigId.opticalconfig_uuid = opticalconfig_uuid context_client.connect() context_client.DeleteOpticalConfig(opticalconfigId) context_client.close() flash(f'OpticalConfig "{opticalconfig_uuid}" deleted successfully!', 'success') except Exception as e: # pylint: disable=broad-except flash(f'Problem deleting optical config {opticalconfig_uuid}', 'danger') - current_app.logger.exception(e) - return redirect(url_for('opticalconfig.home')) - - + current_app.logger.exception(e) + return redirect(url_for('opticalconfig.home')) + + @opticalconfig.route('/update_opticalconfig', methods=['POST']) -def update_externally () : - +def update_externally(): if (request.method == 'POST'): - device_list= [] data = request.get_json() - LOGGER.info(f"data {data}") - devices=data.get('devices') - LOGGER.info(f"devices {devices}") - myResponse =[] - status_code='' + devices = data.get('devices') + + myResponse = [] + status_code = '' for device in devices : port = device.get("port") - channel_name= f"channel-{port}" - device_name=device.get("device_name") - LOGGER.info(f"device from post {device}") + channel_name = f"channel-{port}" + device_name = device.get("device_name") - if (device_name): - + if device_name: opticalconfig_uuid = opticalconfig_get_uuid(device_name=device_name) opticalconfigId=OpticalConfigId() - opticalconfigId.opticalconfig_uuid=opticalconfig_uuid + opticalconfigId.opticalconfig_uuid = opticalconfig_uuid context_client.connect() opticalconfig = context_client.SelectOpticalConfig(opticalconfigId) context_client.close() - LOGGER.info(f"opticalconfig {opticalconfig}") - LOGGER.info(f"opticalconfig opticalconfig_uuid {opticalconfig.opticalconfig_id.opticalconfig_uuid}") - LOGGER.info(f"device is existed {opticalconfig.opticalconfig_id.opticalconfig_uuid != ''}") + if opticalconfig and opticalconfig.opticalconfig_id.opticalconfig_uuid != '' : - new_opticalconfig = OpticalConfig() new_opticalconfig.CopyFrom(opticalconfig) - config =json.loads(opticalconfig.config) - channels= config['channels'] - target_channel =next((item for item in channels if item["name"]['index'] == channel_name) , None) - LOGGER.info(f"target channel {target_channel}") - target_power=device.get( "target-output-power") + config = json.loads(opticalconfig.config) + channels = config['channels'] + target_channel = next((item for item in channels if item["name"]['index'] == channel_name) , None) + target_power = device.get( "target-output-power") freq = device.get("frequency") mode = device.get("operational-mode") - status= device.get("status","ENABLED") - LOGGER.info(f"target power {target_power} freq {freq} mode {mode}") + status = device.get("status","ENABLED") + if target_channel: if target_power is not None : - target_channel["target-output-power"] =str(target_power) if freq is not None : - - target_channel["frequency"] =freq + target_channel["frequency"] = freq if mode is not None : - - target_channel["operational-mode"] =mode + target_channel["operational-mode"] = mode if status is not None : - target_channel["status"]="ENABLED" - #del target_channel['name'] - config["new_config"]=target_channel + target_channel["status"] = "ENABLED" + #del target_channel['name'] + config["new_config"]=target_channel config["new_config"]["channel_name"]=channel_name config["flow"]=[(port,'0')] opticalconfig.config =json.dumps(config) - LOGGER.info(f"new Config {config}") + try: device_client.connect() device_client.ConfigureOpticalDevice(opticalconfig) device_client.close() - + myResponse.append(f"device {device_name} port {port} is updated successfully") status_code = 200 - - except Exception as e: # pylint: disable=broad-except - myResponse.append(f"Problem updating the device. {e}") status_code = 500 break - else : - myResponse.append(f"requested channel {channel_name} is not existed") status_code = 400 break - else : - myResponse.append(f"requested device {device_name} is not existed") status_code = 400 break - - response=make_response(f'{myResponse}') response.status_code=status_code - return response - #return redirect(url_for('opticalconfig.show_details',config_uuid=opticalconfig_uuid)) #return redirect(url_for('opticalconfig.home')) @opticalconfig.route('//update', methods=['GET', 'POST']) -def update(config_uuid,channel_name): - +def update(config_uuid, channel_name): form = UpdateDeviceForm() - opticalconfigId=OpticalConfigId() - opticalconfigId.opticalconfig_uuid=config_uuid + opticalconfigId = OpticalConfigId() + opticalconfigId.opticalconfig_uuid = config_uuid context_client.connect() response = context_client.SelectOpticalConfig(opticalconfigId) context_client.close() - LOGGER.info("response %s",response) + opticalconfig = OpticalConfig() opticalconfig.CopyFrom(response) config =json.loads(opticalconfig.config) @@ -281,21 +250,18 @@ def update(config_uuid,channel_name): form.operational_mode.default=channel["operational-mode"] form.power.default=channel["target-output-power"] form.line_port.choices = [("","")] - + for transceiver in config["transceivers"]['transceiver']: - form.line_port.choices.append((transceiver,transceiver)) - # listing enum values + # listing enum values if form.validate_on_submit(): - new_config["target-output-power"] =form.power.data if form.power.data != '' else new_config['target-output-power'] new_config["frequency"]=form.frequency.data if form.frequency.data != '' else new_config['frequency'] new_config["operational-mode"]=form.operational_mode.data if form.operational_mode.data != '' else new_config['operational-mode'] new_config["line-port"]=form.line_port.data if form.line_port.data != '' else new_config['line-port'] - opticalconfig.config =json.dumps(new_config) - LOGGER.info("myconfig copied %s",opticalconfig) + try: device_client.connect() device_client.ConfigureOpticalDevice(opticalconfig) @@ -304,7 +270,7 @@ def update(config_uuid,channel_name): return redirect(url_for('opticalconfig.show_details',config_uuid=config_uuid)) except Exception as e: # pylint: disable=broad-except flash(f'Problem updating the device. {e}', 'danger') - return render_template('myabout/update.html', device=response, form=form, submit_text='Update Device',channel_name=channel_name) + return render_template('device/update.html', device=response, form=form, submit_text='Update Device',channel_name=channel_name) @opticalconfig.route('refresh_all',methods=['POST','GET']) @@ -316,7 +282,8 @@ def refresh_all (): device_client.GetDeviceConfiguration(opticalConfig_list) device_client.close() return home() - + + @opticalconfig.route('/add_transceiver', methods=['GET','POST']) def add_transceiver (config_uuid): config={} @@ -342,14 +309,12 @@ def add_transceiver (config_uuid): except Exception as e: # pylint: disable=broad-except flash(f'Problem updating the device. {e}', 'danger') return render_template('opticalconfig/add_transceiver.html',form=addtrancseiver, submit_text='Add Trancseiver') - - + @opticalconfig.route('//update_status', methods=['GET','POST']) def update_status (config_uuid,channel_name): - - config={} - form=UpdateStatusForm() + config = {} + form = UpdateStatusForm() opticalconfigId=OpticalConfigId() opticalconfigId.opticalconfig_uuid=config_uuid @@ -369,9 +334,8 @@ def update_status (config_uuid,channel_name): config["flow"]=[(port,'0')] config["new_config"]=new_config opticlConfig.config=json.dumps(config) - + try: - LOGGER.info(f"update status {opticlConfig}") device_client.connect() device_client.ConfigureOpticalDevice(opticlConfig) device_client.close() @@ -379,13 +343,13 @@ def update_status (config_uuid,channel_name): return redirect(url_for('opticalconfig.show_details',config_uuid=config_uuid)) except Exception as e: # pylint: disable=broad-except flash(f'Problem updating the device. {e}', 'danger') - return render_template('opticalconfig/update_status.html',form=form , channel_name=channel_name, submit_text='Update Device Status') - - - + return render_template( + 'opticalconfig/update_status.html', form=form, channel_name=channel_name, + submit_text='Update Device Status' + ) + @opticalconfig.route('/configure_openroadm', methods=['POST']) -def update_openroadm () : - +def update_openroadm(): if (request.method == 'POST'): ports_list= [] data = request.get_json() @@ -406,10 +370,8 @@ def update_openroadm () : target_interface["width"]=width target_interface["administrative-state"]="inService" target_interface["config_type"]=device.get("config_type") - - + if (device_name): - opticalconfig_uuid = opticalconfig_get_uuid(device_name=device_name) opticalconfigId=OpticalConfigId() opticalconfigId.opticalconfig_uuid=opticalconfig_uuid @@ -427,35 +389,20 @@ def update_openroadm () : config["new_config"]=target_interface opticalconfig.config =json.dumps(config) try: - device_client.connect() - device_client.ConfigureOpticalDevice(opticalconfig) - device_client.close() - - myResponse.append(f"device {device_name} port {port} is updated successfully") - status_code = 200 - - + device_client.connect() + device_client.ConfigureOpticalDevice(opticalconfig) + device_client.close() + myResponse.append(f"device {device_name} port {port} is updated successfully") + status_code = 200 except Exception as e: # pylint: disable=broad-except - - myResponse.append(f"Problem updating the device. {e}") - status_code = 500 - break - - - + myResponse.append(f"Problem updating the device. {e}") + status_code = 500 + break else : - - myResponse.append(f"requested device {device_name} is not existed") - status_code = 400 - break - - + myResponse.append(f"requested device {device_name} is not existed") + status_code = 400 + break response=make_response(f'{myResponse}') response.status_code=status_code - return response - - - - \ No newline at end of file diff --git a/src/webui/service/qkd_app/routes.py b/src/webui/service/qkd_app/routes.py index 39ddd9d4103fc453c6275bc2d0f227f4c814aadf..200d6ebdd17918dbb3d026980c4286212f519b82 100644 --- a/src/webui/service/qkd_app/routes.py +++ b/src/webui/service/qkd_app/routes.py @@ -12,102 +12,156 @@ # See the License for the specific language governing permissions and # limitations under the License. -import grpc, json, logging - +import grpc +import logging from flask import current_app, render_template, Blueprint, flash, session, redirect, url_for -from common.proto.context_pb2 import Empty, Link, LinkId, LinkList -from common.proto.qkd_app_pb2 import App, QKDAppStatusEnum, QKDAppTypesEnum +from common.proto.qkd_app_pb2 import App, AppId, QKDAppStatusEnum, QKDAppTypesEnum +from common.proto.context_pb2 import Uuid, ContextId from common.tools.context_queries.Context import get_context from common.tools.context_queries.Device import get_device -from common.tools.context_queries.Topology import get_topology from context.client.ContextClient import ContextClient from qkd_app.client.QKDAppClient import QKDAppClient - +# Set up logging LOGGER = logging.getLogger(__name__) + +# Blueprint for QKDApp routes qkd_app = Blueprint('qkd_app', __name__, url_prefix='/qkd_app') -# qkd_app_client = QKDAppClient() -# context_client = ContextClient() +# Initialize clients +qkd_app_client = QKDAppClient() +context_client = ContextClient() @qkd_app.get('/') def home(): if 'context_uuid' not in session or 'topology_uuid' not in session: flash("Please select a context!", "warning") return redirect(url_for("main.home")) + context_uuid = session['context_uuid'] topology_uuid = session['topology_uuid'] -# context_client.connect() -# device_names = dict() - -# context_obj = get_context(context_client, context_uuid, rw_copy=False) -# if context_obj is None: -# flash('Context({:s}) not found'.format(str(context_uuid)), 'danger') -# apps = list() -# else: -# try: -# apps = qkd_app_client.ListApps(context_obj.context_id) -# apps = apps.apps -# except grpc.RpcError as e: -# if e.code() != grpc.StatusCode.NOT_FOUND: raise -# if e.details() != 'Context({:s}) not found'.format(context_uuid): raise -# apps = list() -# else: -# # Too many requests to context_client if it has too many apps (update in the future) -# for app in apps: -# if app.local_device_id.device_uuid.uuid not in device_names: -# device = get_device(context_client, app.local_device_id.device_uuid.uuid) -# if device is not None: -# device_names[app.local_device_id.device_uuid.uuid] = device.name - -# if app.remote_device_id.device_uuid.uuid and app.remote_device_id.device_uuid.uuid not in device_names: -# device = get_device(context_client, app.remote_device_id.device_uuid.uuid) -# if device is not None: -# device_names[app.remote_device_id.device_uuid.uuid] = device.name - - context_client.close() - return render_template( - 'qkd_app/home.html', apps=apps, device_names=device_names, ate=QKDAppTypesEnum, ase=QKDAppStatusEnum) + # Connect to context client + context_client.connect() + device_names = dict() + + try: + # Fetch context object + context_obj = get_context(context_client, context_uuid, rw_copy=False) + if context_obj is None: + flash('Context({:s}) not found'.format(str(context_uuid)), 'danger') + apps = list() + else: + try: + # Call ListApps using the context_id + apps_response = qkd_app_client.ListApps(context_obj.context_id) + apps = apps_response.apps + except grpc.RpcError as e: + LOGGER.error(f"gRPC error while fetching apps: {e.details()}") + if e.code() != grpc.StatusCode.NOT_FOUND: raise + if e.details() != 'Context({:s}) not found'.format(context_uuid): raise + apps = list() + else: + # Map local and remote device names + for app in apps: + if app.local_device_id.device_uuid.uuid not in device_names: + device = get_device(context_client, app.local_device_id.device_uuid.uuid) + if device: + device_names[app.local_device_id.device_uuid.uuid] = device.name -@qkd_app.route('detail/', methods=('GET', 'POST')) + if app.remote_device_id.device_uuid.uuid and app.remote_device_id.device_uuid.uuid not in device_names: + device = get_device(context_client, app.remote_device_id.device_uuid.uuid) + if device: + device_names[app.remote_device_id.device_uuid.uuid] = device.name + finally: + context_client.close() + + # Render the template with app list and device names + return render_template( + 'qkd_app/home.html', + apps=apps, + device_names=device_names, + ate=QKDAppTypesEnum, + ase=QKDAppStatusEnum + ) + +@qkd_app.route('detail/', methods=['GET', 'POST']) def detail(app_uuid: str): - ''' - context_client.connect() - link_obj = get_link(context_client, link_uuid, rw_copy=False) - if link_obj is None: - flash('Link({:s}) not found'.format(str(link_uuid)), 'danger') - link_obj = Link() - device_names, endpoints_data = dict(), dict() - else: - device_names, endpoints_data = get_endpoint_names(context_client, link_obj.link_endpoint_ids) - context_client.close() - return render_template('link/detail.html',link=link_obj, device_names=device_names, endpoints_data=endpoints_data) - ''' - pass + """ + Displays details for a specific QKD app identified by its UUID. + """ + try: + qkd_app_client.connect() + + # Wrap the app_uuid in a Uuid object and fetch details + uuid_message = Uuid(uuid=app_uuid) + app_id = AppId(app_uuid=uuid_message) + app_detail = qkd_app_client.GetApp(app_id) + + if not app_detail: + flash(f"App with UUID {app_uuid} not found", "danger") + return redirect(url_for("qkd_app.home")) + + # Fetch device details + context_client.connect() + device_names = {} + + try: + if app_detail.local_device_id.device_uuid.uuid: + local_device = get_device(context_client, app_detail.local_device_id.device_uuid.uuid) + if local_device: + device_names[app_detail.local_device_id.device_uuid.uuid] = local_device.name + + if app_detail.remote_device_id.device_uuid.uuid: + remote_device = get_device(context_client, app_detail.remote_device_id.device_uuid.uuid) + if remote_device: + device_names[app_detail.remote_device_id.device_uuid.uuid] = remote_device.name + + except grpc.RpcError as e: + LOGGER.error(f"Failed to retrieve device details for app {app_uuid}: {e}") + flash(f"Error retrieving device details: {e.details()}", "danger") + return redirect(url_for("qkd_app.home")) + + finally: + context_client.close() + + return render_template( + 'qkd_app/detail.html', + app=app_detail, + ase=QKDAppStatusEnum, + ate=QKDAppTypesEnum, + device_names=device_names + ) + + except grpc.RpcError as e: + LOGGER.error(f"Failed to retrieve app details for {app_uuid}: {e}") + flash(f"Error retrieving app details: {e.details()}", "danger") + return redirect(url_for("qkd_app.home")) + + finally: + qkd_app_client.close() @qkd_app.get('/delete') -def delete(app_uuid): - ''' +def delete(app_uuid: str): + """ + Deletes a specific QKD app identified by its UUID. + """ try: + request = AppId(app_uuid=Uuid(uuid=app_uuid)) + + qkd_app_client.connect() + qkd_app_client.DeleteApp(request) # Call the DeleteApp method + qkd_app_client.close() + + flash(f'App "{app_uuid}" deleted successfully!', 'success') + + except grpc.RpcError as e: + LOGGER.error(f"Problem deleting app {app_uuid}: {e}") + flash(f"Problem deleting app {app_uuid}: {e.details()}", 'danger') + + except Exception as e: + LOGGER.exception(f"Unexpected error while deleting app {app_uuid}: {e}") + flash(f"Unexpected error: {str(e)}", 'danger') -# # first, check if link exists! -# # request: LinkId = LinkId() -# # request.link_uuid.uuid = link_uuid -# # response: Link = client.GetLink(request) -# # TODO: finalize implementation - -# request = LinkId() -# request.link_uuid.uuid = link_uuid # pylint: disable=no-member -# context_client.connect() -# context_client.RemoveLink(request) -# context_client.close() - -# flash(f'Link "{link_uuid}" deleted successfully!', 'success') -# except Exception as e: # pylint: disable=broad-except -# flash(f'Problem deleting link "{link_uuid}": {e.details()}', 'danger') -# current_app.logger.exception(e) -# return redirect(url_for('link.home')) -# ''' -# pass + return redirect(url_for('qkd_app.home')) diff --git a/src/webui/service/templates/base.html b/src/webui/service/templates/base.html index e08997f82fe0318cc18eb0e5a9d927e1b2ec76ec..1402f40c43f3066b0cb09017dfb81f0e4911333f 100644 --- a/src/webui/service/templates/base.html +++ b/src/webui/service/templates/base.html @@ -55,6 +55,7 @@ Home {% endif %} + + + - - - + + {% if is_deployed_slice() %} + + {% endif %} + + {% if is_deployed_optical() %} + + {% endif %} + + {% if is_deployed_policy() %} + + {% endif %} + + {% if is_deployed_qkd_app() %} + + {% endif %} + + {% if is_deployed_bgpls() %} + + {% endif %} + + {% if is_deployed_load_gen() %} + + {% endif %} + - - - - {% endblock %} \ No newline at end of file +{% endblock %} diff --git a/src/webui/service/templates/opticalconfig/add_transceiver.html b/src/webui/service/templates/opticalconfig/add_transceiver.html index 200626fad5ae3a0f405cd5ec8c4533cd374fc108..d10faa7f146fcef18c4f865fe969cf6620e13c15 100644 --- a/src/webui/service/templates/opticalconfig/add_transceiver.html +++ b/src/webui/service/templates/opticalconfig/add_transceiver.html @@ -1,5 +1,5 @@ +--> {% extends 'base.html' %} {% block content %} -

My Configurations

+

Optical Configurations

{% if config %}
@@ -109,8 +109,5 @@
-->
- - - -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/src/webui/service/templates/opticalconfig/update_interface.html b/src/webui/service/templates/opticalconfig/update_interface.html index f09c724c12314b669c6ae1c72dbcc9cfae1f5f45..5c9b7b79c419861b287b0e4aae17e60cfbda18cc 100644 --- a/src/webui/service/templates/opticalconfig/update_interface.html +++ b/src/webui/service/templates/opticalconfig/update_interface.html @@ -1,5 +1,5 @@ {% extends 'base.html' %} @@ -48,4 +63,5 @@ -{% endblock %} \ No newline at end of file + +{% endblock %} diff --git a/src/webui/service/templates/qkd_app/detail.html b/src/webui/service/templates/qkd_app/detail.html new file mode 100644 index 0000000000000000000000000000000000000000..078895cec81b4680715f9d027beac3158afdc4a4 --- /dev/null +++ b/src/webui/service/templates/qkd_app/detail.html @@ -0,0 +1,126 @@ +{% extends 'base.html' %} + +{% block content %} +

App {{ app.app_id.app_uuid.uuid }}

+ + +
+
+ +
+
+ +
+
+ + +
+
+ UUID: {{ app.app_id.app_uuid.uuid }}
+ Status: {{ ase.Name(app.app_status).replace('QKDAPPSTATUS_', '') }}
+ Type: {{ ate.Name(app.app_type).replace('QKDAPPTYPES_', '').replace('CLIENT', 'EXTERNAL') }}
+
+ + +
+
Associated Devices
+ + + + + + + + + + + + + {% if app.remote_device_id.device_uuid.uuid %} + + + + + {% endif %} + +
DeviceEndpoint Type
+ + {{ device_names.get(app.local_device_id.device_uuid.uuid, app.local_device_id.device_uuid.uuid) }} + + + + + + + Local Device
+ + {{ device_names.get(app.remote_device_id.device_uuid.uuid, app.remote_device_id.device_uuid.uuid) }} + + + + + + + Remote Device
+
+
+ + +
+
+
App QoS
+ + + + + + + + + + + + + + + + + + + + + + + + + +
QoS ParameterValue
Max Bandwidth{{ app.qos.max_bandwidth }} bps
Min Bandwidth{{ app.qos.min_bandwidth or 'N/A' }} bps
Jitter{{ app.qos.jitter or 'N/A' }} ms
TTL{{ app.qos.ttl or 'N/A' }} seconds
+
+
+ + +
+ +{% endblock %} diff --git a/src/webui/service/templates/qkd_app/home.html b/src/webui/service/templates/qkd_app/home.html index 1a786e975385ec50ad18ae2678f5f46e98f38310..e84b9230abc87c455c99afe6529905560f448782 100644 --- a/src/webui/service/templates/qkd_app/home.html +++ b/src/webui/service/templates/qkd_app/home.html @@ -74,14 +74,12 @@ {% endif %} - + + + + + + {% endfor %} diff --git a/test.py b/test.py deleted file mode 100644 index 9595e5bb83632e52fe672a3d31ff4103d2787690..0000000000000000000000000000000000000000 --- a/test.py +++ /dev/null @@ -1,284 +0,0 @@ -from ncclient import manager -from ncclient.xml_ import * -import lxml.etree as ET -import re -from typing import Optional, Union -from uuid import UUID, uuid4, uuid5 -import logging -from decimal import Decimal - - -create_mc_test = ''' - - - MC-TTP-DEG1-RX-193.3 Media-channel-193.3THz -openROADM-if:mediaChannelTrailTerminationPoint inService -DEG1-AMPTX DEG1-AMPTX-OUT -OMS-DEG1-TTP-RX -193350.0 193250.0 MC-TTP-DEG1-TX-193.3 -Media-channel-193.3THz openROADM-if:mediaChannelTrailTerminationPoint -inService DEG1-AMPRX -DEG1-AMPRX-IN OMS-DEG1-TTP-TX - -193350.0 193250.0 -''' - -create_mc_err= ''' - - - - MC-TTP-DEG2-RX-193.3 - Media-Channel-TTP-193.3THz-degree-2-in - openROADM-if:mediaChannelTrailTerminationPoint - inService - DEG2-AMPRX - DEG2-AMPRX-IN - OMS-DEG2-TTP-RX - - 193.25 - 193.35 - - - - MC-TTP-DEG2-TX-193.3 - Media-Channel-TTP-193.3THz-degree-2-out - openROADM-if:mediaChannelTrailTerminationPoint - inService - DEG2-AMPTX - DEG2-AMPTX-OUT - OMS-DEG2-TTP-TX - - 193.25 - 193.35 - - - - - - - -''' - - -create_nmc = ''' - - - - NMC-CTP-DEG2-TX-193.3 - Network-Media-Channel-CTP-193.3THz-degree-2-out - openROADM-if:networkMediaChannelConnectionTerminationPoint - inService - DEG2-AMPTX - MC-TTP-DEG2-TX-193.3 - DEG2-AMPTX-OUT - - 193.30 - 100 - - - - NMC-CTP-DEG2-RX-193.3 - Network-Media-Channel-CTP-193.3THz-degree-2-in - openROADM-if:networkMediaChannelConnectionTerminationPoint - inService - DEG2-AMPRX - DEG2-AMPRX-IN - MC-TTP-DEG2-RX-193.3 - - 193.30 - 100 - - - - - - -''' - -create_srg = ''' - - - - SRG1-PP01-TX-193.3 - Network-Media-Channel-CTP-193.3THz-srg-1-out - openROADM-if:networkMediaChannelConnectionTerminationPoint - inService - SRG1-WSS - SRG1-OUT1 - - 193.30 - 100 - - - - SRG1-PP01-RX-193.3 - Network-Media-Channel-CTP-193.3THz-srg-1-in - openROADM-if:networkMediaChannelConnectionTerminationPoint - inService - SRG1-WSS - SRG1-IN1 - - 193.30 - 100 - - - - - - - -''' - - - -create_connec= ''' - - - - NMC-CTP-DEG1-RX-193.3-to-SRG1-TX-193.3 - off - 0 - - NMC-CTP-DEG1-RX-193.3 - - - SRG1-PP01-TX-193.3 - - - - - -''' - - -def extract_openroadm_interface (xml_data:str): - or_config=[] - or_interfaces=[] - - xml_bytes = xml_data.encode("utf-8") - root = ET.fromstring(xml_bytes) - # with open('xml.log', 'w') as f: - # print(xml_bytes, file=f) - - - namespace = {'oc': "http://org/openroadm/device" - , 'mc':"http://org/openroadm/media-channel-interfaces" - ,'nmc':"http://org/openroadm/network-media-channel-interfaces" - ,'or-type':'http://org/openroadm/interfaces'} - - interfaces = root.findall('.//oc:interface',namespace) - for interface in interfaces : - mc = interface.find('.//mc:mc-ttp',namespace) - name = interface.find('.//oc:name',namespace) - description = interface.find('.//oc:description',namespace) - type=interface.find('.//oc:type',namespace) - administrative_state=interface.find('.//oc:administrative-state',namespace) - circuit_pack_name=interface.find('.//oc:supporting-circuit-pack-name',namespace) - port=interface.find('.//oc:supporting-port',namespace) - interface_list =interface.find('.//oc:supporting-interface-list',namespace) - - or_interfaces.append({ - 'interface_list':name.text if name is not None else None, - 'administrative_state':administrative_state.text if administrative_state is not None else None, - 'circuit_pack_name':circuit_pack_name.text if circuit_pack_name is not None else None, - 'port':port.text if port is not None else None , - 'type':type.text if type is not None else None - }) - if mc is not None : - print (mc) - frequency = mc.find('.//mc:min-freq',namespace) - width=mc.find('.//mc:width',namespace) - mc= { - 'name':name.text if name is not None else None, - 'description':description.text if description is not None else None , - 'type':"media_channel", - 'administrative_state':administrative_state.text if administrative_state is not None else None, - 'circuit_pack_name':circuit_pack_name.text if circuit_pack_name is not None else None, - 'port':port.text if port is not None else None , - 'interface_list': interface_list.text if interface_list is not None else None, - 'frequency': frequency.text if frequency is not None else None, - 'width':width.text if width is not None else None - } - or_config.append(mc) - - else : - nmc = interface.find('.//nmc:nmc-ctp',namespace) - if nmc is not None : - frequency = nmc.find('.//nmc:frequency',namespace) - width=nmc.find('.//nmc:width',namespace) - nmc= { - 'name':name.text if name is not None else None, - 'description':description.text if description is not None else None , - 'type':"network_media_channel", - 'administrative_state':administrative_state.text if administrative_state is not None else None, - 'circuit_pack_name':circuit_pack_name.text if circuit_pack_name is not None else None, - 'port':port.text if port is not None else None , - 'interface_list': interface_list.text if interface_list is not None else None, - 'frequency': frequency.text if frequency is not None else None, - 'width':width.text if width is not None else None - } - or_config.append(nmc) - - return [or_interfaces,or_config] - - - - - - -device = { - 'host':'172.17.0.2', # IP address or hostname of the remote machine '172.17.0.2' - 'port': 830, # SSH port (default: 22) - 'username': 'openroadm', # SSH username - 'password': 'openroadm', # SSH password - 'device_params': {'name': 'default'}, - 'hostkey_verify':False, - - - "force_running": False, - - "look_for_keys": False, - "allow_agent": False, - "commit_per_rule": False, -} - - - - - -if __name__ == '__main__': - - - with manager.connect( host=device['host'] - ,port=device['port'] - ,username=device['username'] - ,password=device['password'] - ,hostkey_verify=device['hostkey_verify'] - ,allow_agent=device['allow_agent'] - ,look_for_keys=device['look_for_keys']) as m : - edit_result = m.edit_config (target="running",config=create_mc_test ) - result = m.get_config (source="running").data_xml - #interfaces,config = extract_openroadm_interface(result) - #print (interfaces) - #interfaces=extract_roadm_interface(result) - #print(interfaces) - # optical_band_namespaces="http://flex-scale-project.eu/yang/flex-scale-mg-on" - #namespaces={"oc":"http://openconfig.net/yang/wavelength-router"} - #obj=extract_media_channels(result,namespaces) - #obj1=extract_optical_bands(result,namespaces) - # road_info= extract_openroadm_info(result) - # circuits=extract_roadm_circuits_pack(result) - #print (f'edit result {edit_result}') - #print(f"result {result}") - #print(f"media_cahnnels {obj}") - #print(f"optical_bands {obj1}") - - #print(f"circuits {circuits}") - with open("xml.log","w") as f: - print (result,file=f) - - - - - - diff --git a/topog.json b/topog.json deleted file mode 100644 index 7e432c5feae313d869e84899a3e37490ae98b390..0000000000000000000000000000000000000000 --- a/topog.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "1": { - "optical_band_id": 1, - "bidir": 0, - "src": "R1", - "dst": "R2", - "flows": { - "R1": { - "f": { - "in": "0", - "out": "101" - }, - "b": {} - }, - "R2": { - "f": { - "in": "111", - "out": "0" - }, - "b": {} - } - }, - "band_type": "c_slots", - "fiber_forward": {}, - "fiber_backward": {}, - "op-mode": 0, - "n_slots": 16, - "links": [ - "R1-R2" - ], - "path": [ - "R1", - "R2" - ], - "band": 200000, - "freq": 192106250, - "is_active": true, - "src_port": "101", - "dst_port": "111", - "rev_dst_port": "111", - "rev_src_port": "101", - "c_slots": { - "1": 1, - "2": 1, - "3": 1, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 1, - "13": 1, - "14": 1, - "15": 1, - "16": 1 - }, - "served_lightpaths": [ - 3 - ] - }, - "2": { - "optical_band_id": 2, - "bidir": 1, - "src": "R1", - "dst": "R2", - "flows": { - "R1": { - "f": { - "in": "0", - "out": "101" - }, - "b": { - "in": "111", - "out": "0" - } - }, - "R2": { - "f": { - "in": "111", - "out": "0" - }, - "b": { - "in": "0", - "out": "101" - } - } - }, - "band_type": "l_slots", - "fiber_forward": {}, - "fiber_backward": {}, - "op-mode": 0, - "n_slots": 16, - "links": [ - "R1-R2" - ], - "path": [ - "R1", - "R2" - ], - "band": 200000, - "freq": 186156250, - "is_active": true, - "src_port": "101", - "dst_port": "111", - "rev_dst_port": "111", - "rev_src_port": "101", - "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 - }, - "served_lightpaths": [] - } -} \ No newline at end of file