From eab2eee703b2bec8682bf165d3eb846ee7e8e76f Mon Sep 17 00:00:00 2001 From: gifrerenom <lluis.gifre@cttc.es> Date: Wed, 5 Oct 2022 15:56:26 +0000 Subject: [PATCH] Added basic optical placeholders: WebUI: - added icons for optical roadm and optical transponder Common: - added missing device types Device: - added missing emulated device driver mappings --- src/common/DeviceTypes.py | 28 ++++++------ src/device/service/drivers/__init__.py | 40 +++++++++++++++--- .../topology_icons/Acknowledgements.txt | 6 +++ .../topology_icons/emu-optical-roadm.png | Bin 0 -> 10849 bytes .../emu-optical-transponder.png | Bin 0 -> 10106 bytes .../static/topology_icons/optical-roadm.png | Bin 0 -> 11367 bytes .../topology_icons/optical-transponder.png | Bin 0 -> 10981 bytes 7 files changed, 57 insertions(+), 17 deletions(-) create mode 100644 src/webui/service/static/topology_icons/emu-optical-roadm.png create mode 100644 src/webui/service/static/topology_icons/emu-optical-transponder.png create mode 100644 src/webui/service/static/topology_icons/optical-roadm.png create mode 100644 src/webui/service/static/topology_icons/optical-transponder.png diff --git a/src/common/DeviceTypes.py b/src/common/DeviceTypes.py index f692321b4..a237223d5 100644 --- a/src/common/DeviceTypes.py +++ b/src/common/DeviceTypes.py @@ -15,16 +15,20 @@ from enum import Enum class DeviceTypeEnum(Enum): - EMULATED_DATACENTER = 'emu-datacenter' - EMULATED_OPEN_LINE_SYSTEM = 'emu-open-line-system' - EMULATED_PACKET_ROUTER = 'emu-packet-router' - EMULATED_PACKET_SWITCH = 'emu-packet-switch' + EMULATED_DATACENTER = 'emu-datacenter' + EMULATED_MICROVAWE_RADIO_SYSTEM = 'emu-microwave-radio-system' + EMULATED_OPEN_LINE_SYSTEM = 'emu-open-line-system' + EMULATED_OPTICAL_ROADM = 'emu-optical-roadm' + EMULATED_OPTICAL_TRANSPONDER = 'emu-optical-transponder' + EMULATED_P4_SWITCH = 'emu-p4-switch' + EMULATED_PACKET_ROUTER = 'emu-packet-router' + EMULATED_PACKET_SWITCH = 'emu-packet-switch' - DATACENTER = 'datacenter' - MICROVAWE_RADIO_SYSTEM = 'microwave-radio-system' - OPTICAL_ROADM = 'optical-roadm' - OPTICAL_TRANSPONDER = 'optical-transponder' - OPEN_LINE_SYSTEM = 'open-line-system' - PACKET_ROUTER = 'packet-router' - PACKET_SWITCH = 'packet-switch' - P4_SWITCH = 'p4-switch' + DATACENTER = 'datacenter' + MICROVAWE_RADIO_SYSTEM = 'microwave-radio-system' + OPEN_LINE_SYSTEM = 'open-line-system' + OPTICAL_ROADM = 'optical-roadm' + OPTICAL_TRANSPONDER = 'optical-transponder' + P4_SWITCH = 'p4-switch' + PACKET_ROUTER = 'packet-router' + PACKET_SWITCH = 'packet-switch' diff --git a/src/device/service/drivers/__init__.py b/src/device/service/drivers/__init__.py index 821a70418..5fe786667 100644 --- a/src/device/service/drivers/__init__.py +++ b/src/device/service/drivers/__init__.py @@ -26,19 +26,49 @@ from .emulated.EmulatedDriver import EmulatedDriver # pylint: disable=wrong-impo DRIVERS.append( (EmulatedDriver, [ { - # Driver==unspecified & no device type specified => use Emulated - FilterFieldEnum.DRIVER: ORM_DeviceDriverEnum.UNDEFINED, + # Driver==EMULATED, all device types => use Emulated + FilterFieldEnum.DEVICE_TYPE: [ + DeviceTypeEnum.EMULATED_DATACENTER, + DeviceTypeEnum.EMULATED_MICROVAWE_RADIO_SYSTEM, + DeviceTypeEnum.EMULATED_OPEN_LINE_SYSTEM, + DeviceTypeEnum.EMULATED_OPTICAL_ROADM, + DeviceTypeEnum.EMULATED_OPTICAL_TRANSPONDER, + DeviceTypeEnum.EMULATED_P4_SWITCH, + DeviceTypeEnum.EMULATED_PACKET_ROUTER, + DeviceTypeEnum.EMULATED_PACKET_SWITCH, + + DeviceTypeEnum.DATACENTER, + DeviceTypeEnum.MICROVAWE_RADIO_SYSTEM, + DeviceTypeEnum.OPEN_LINE_SYSTEM, + DeviceTypeEnum.OPTICAL_ROADM, + DeviceTypeEnum.OPTICAL_TRANSPONDER, + DeviceTypeEnum.P4_SWITCH, + DeviceTypeEnum.PACKET_ROUTER, + DeviceTypeEnum.PACKET_SWITCH, + ], + FilterFieldEnum.DRIVER: [ + ORM_DeviceDriverEnum.UNDEFINED, + ], }, { - # Emulated OLS/Packet Router, specifying Undefined/OpenConfig/TAPI Driver => use EmulatedDriver + # Emulated devices, all drivers => use Emulated FilterFieldEnum.DEVICE_TYPE: [ + DeviceTypeEnum.EMULATED_DATACENTER, + DeviceTypeEnum.EMULATED_MICROVAWE_RADIO_SYSTEM, DeviceTypeEnum.EMULATED_OPEN_LINE_SYSTEM, + DeviceTypeEnum.EMULATED_OPTICAL_ROADM, + DeviceTypeEnum.EMULATED_OPTICAL_TRANSPONDER, + DeviceTypeEnum.EMULATED_P4_SWITCH, DeviceTypeEnum.EMULATED_PACKET_ROUTER, + DeviceTypeEnum.EMULATED_PACKET_SWITCH, ], - FilterFieldEnum.DRIVER : [ + FilterFieldEnum.DRIVER: [ ORM_DeviceDriverEnum.UNDEFINED, ORM_DeviceDriverEnum.OPENCONFIG, - ORM_DeviceDriverEnum.TRANSPORT_API + ORM_DeviceDriverEnum.TRANSPORT_API, + ORM_DeviceDriverEnum.P4, + ORM_DeviceDriverEnum.IETF_NETWORK_TOPOLOGY, + ORM_DeviceDriverEnum.ONF_TR_352, ], } ])) diff --git a/src/webui/service/static/topology_icons/Acknowledgements.txt b/src/webui/service/static/topology_icons/Acknowledgements.txt index 5daab200f..ddf7a8d0d 100644 --- a/src/webui/service/static/topology_icons/Acknowledgements.txt +++ b/src/webui/service/static/topology_icons/Acknowledgements.txt @@ -13,3 +13,9 @@ https://symbols.getvecta.com/stencil_241/281_virtual-layer-switch.29420aff2f.png https://symbols.getvecta.com/stencil_240/102_ibm-tower.2cc133f3d0.png => datacenter.png https://symbols.getvecta.com/stencil_241/133_ibm-tower.995c44696c.png => emu-datacenter.png + +https://symbols.getvecta.com/stencil_240/193_programmable-switch.6d97768882.png => optical-roadm.png +https://symbols.getvecta.com/stencil_241/213_programmable-sw.32d3794d56.png => emu-optical-roadm.png + +https://symbols.getvecta.com/stencil_240/275_wae.c06b769cd7.png => optical-transponder.png +https://symbols.getvecta.com/stencil_241/289_wae.216d930c17.png => emu-optical-transponder.png diff --git a/src/webui/service/static/topology_icons/emu-optical-roadm.png b/src/webui/service/static/topology_icons/emu-optical-roadm.png new file mode 100644 index 0000000000000000000000000000000000000000..d52d71499e3f2b49bdb3f80d8b3c21f9b7350a65 GIT binary patch literal 10849 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 LOs`T0ckllJS-Cl( literal 0 HcmV?d00001 diff --git a/src/webui/service/static/topology_icons/emu-optical-transponder.png b/src/webui/service/static/topology_icons/emu-optical-transponder.png new file mode 100644 index 0000000000000000000000000000000000000000..43b37859780cff9a99c8890972f457d6ffa97c3d GIT binary patch literal 10106 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 literal 0 HcmV?d00001 diff --git a/src/webui/service/static/topology_icons/optical-roadm.png b/src/webui/service/static/topology_icons/optical-roadm.png new file mode 100644 index 0000000000000000000000000000000000000000..2015c839391120f8830d4ca765b1852d9f7bff83 GIT binary patch literal 11367 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 H`TYL?j<h@x literal 0 HcmV?d00001 diff --git a/src/webui/service/static/topology_icons/optical-transponder.png b/src/webui/service/static/topology_icons/optical-transponder.png new file mode 100644 index 0000000000000000000000000000000000000000..cc59281102e6926fe8ff87fc15848485aec177a2 GIT binary patch literal 10981 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 Q`6`N>l+wEr3Ape70-?HETL1t6 literal 0 HcmV?d00001 -- GitLab