From 6b03c8fc01c6e73ce3f93205b4470fcc8b26ac05 Mon Sep 17 00:00:00 2001 From: Javier Mateos Najari <javier.mateos@naudit.es> Date: Mon, 5 May 2025 09:50:35 +0200 Subject: [PATCH] feat(morpheus): add morpheus driver to controller --- proto/context.proto | 1 + src/common/DeviceTypes.py | 1 + .../service/database/models/enums/DeviceDriver.py | 1 + src/device/service/drivers/__init__.py | 11 +++++++++++ src/webui/service/device/forms.py | 1 + src/webui/service/device/routes.py | 2 ++ src/webui/service/templates/device/add.html | 3 ++- 7 files changed, 19 insertions(+), 1 deletion(-) diff --git a/proto/context.proto b/proto/context.proto index 01e096233..42b8a69cc 100644 --- a/proto/context.proto +++ b/proto/context.proto @@ -226,6 +226,7 @@ enum DeviceDriverEnum { DEVICEDRIVER_IETF_L3VPN = 13; DEVICEDRIVER_IETF_SLICE = 14; DEVICEDRIVER_NCE = 15; + DEVICEDRIVER_MORPHEUS = 16; } enum DeviceOperationalStatusEnum { diff --git a/src/common/DeviceTypes.py b/src/common/DeviceTypes.py index 9a982d1eb..b917524a6 100644 --- a/src/common/DeviceTypes.py +++ b/src/common/DeviceTypes.py @@ -50,6 +50,7 @@ class DeviceTypeEnum(Enum): XR_CONSTELLATION = 'xr-constellation' QKD_NODE = 'qkd-node' OPEN_ROADM = 'openroadm' + MORPHEUS = 'morpheus' # ETSI TeraFlowSDN controller TERAFLOWSDN_CONTROLLER = 'teraflowsdn' diff --git a/src/context/service/database/models/enums/DeviceDriver.py b/src/context/service/database/models/enums/DeviceDriver.py index fe0d83fb1..216cd4461 100644 --- a/src/context/service/database/models/enums/DeviceDriver.py +++ b/src/context/service/database/models/enums/DeviceDriver.py @@ -38,6 +38,7 @@ class ORM_DeviceDriverEnum(enum.Enum): IETF_SLICE = DeviceDriverEnum.DEVICEDRIVER_IETF_SLICE OC = DeviceDriverEnum.DEVICEDRIVER_OC QKD = DeviceDriverEnum.DEVICEDRIVER_QKD + MORPHEUS = DeviceDriverEnum.DEVICEDRIVER_MORPHEUS grpc_to_enum__device_driver = functools.partial( grpc_to_enum, DeviceDriverEnum, ORM_DeviceDriverEnum) diff --git a/src/device/service/drivers/__init__.py b/src/device/service/drivers/__init__.py index e3102cdf5..fdbf4739a 100644 --- a/src/device/service/drivers/__init__.py +++ b/src/device/service/drivers/__init__.py @@ -217,3 +217,14 @@ if LOAD_ALL_DEVICE_DRIVERS: FilterFieldEnum.DRIVER : DeviceDriverEnum.DEVICEDRIVER_QKD, } ])) + +if LOAD_ALL_DEVICE_DRIVERS: + from .morpheus.MorpheusApiDriver import MorpheusAPIDriver + DRIVERS.append( + (MorpheusAPIDriver, [ + { + # Close enough, it does optical switching + FilterFieldEnum.DEVICE_TYPE: DeviceTypeEnum.MORPHEUS, + FilterFieldEnum.DRIVER : DeviceDriverEnum.DEVICEDRIVER_MORPHEUS, + } + ])) diff --git a/src/webui/service/device/forms.py b/src/webui/service/device/forms.py index 4fa6829e7..3005c4cb3 100644 --- a/src/webui/service/device/forms.py +++ b/src/webui/service/device/forms.py @@ -34,6 +34,7 @@ class AddDeviceForm(FlaskForm): device_drivers_optical_tfs = BooleanField('OPTICAL TFS') device_drivers_ietf_actn = BooleanField('IETF ACTN') device_drivers_qkd = BooleanField('QKD') + device_drivers_morpheus = BooleanField('MORPHEUS') device_config_address = StringField('connect/address',default='127.0.0.1',validators=[DataRequired(), Length(min=5)]) device_config_port = StringField('connect/port',default='0',validators=[DataRequired(), Length(min=1)]) diff --git a/src/webui/service/device/routes.py b/src/webui/service/device/routes.py index 16b86c769..a7dbd5e02 100644 --- a/src/webui/service/device/routes.py +++ b/src/webui/service/device/routes.py @@ -135,6 +135,8 @@ def add(): device_drivers.append(DeviceDriverEnum.DEVICEDRIVER_IETF_ACTN) if form.device_drivers_qkd.data: device_drivers.append(DeviceDriverEnum.DEVICEDRIVER_QKD) + if form.device_drivers_morpheus.data: + device_drivers.append(DeviceDriverEnum.DEVICEDRIVER_MORPHEUS) device_obj.device_drivers.extend(device_drivers) # pylint: disable=no-member try: diff --git a/src/webui/service/templates/device/add.html b/src/webui/service/templates/device/add.html index b5628ab59..b39ce33ad 100644 --- a/src/webui/service/templates/device/add.html +++ b/src/webui/service/templates/device/add.html @@ -96,6 +96,7 @@ {{ form.device_drivers_optical_tfs }} {{ form.device_drivers_optical_tfs.label(class="col-sm-3 col-form-label") }} {{ form.device_drivers_ietf_actn }} {{ form.device_drivers_ietf_actn.label(class="col-sm-3 col-form-label") }} {{ form.device_drivers_qkd }} {{ form.device_drivers_qkd.label(class="col-sm-3 col-form-label") }} + {{ form.device_drivers_morpheus }} {{ form.device_drivers_morpheus.label(class="col-sm-3 col-form-label") }} {% endif %} </div> </div> @@ -159,4 +160,4 @@ </div> </fieldset> </form> -{% endblock %} \ No newline at end of file +{% endblock %} -- GitLab