diff --git a/proto/context.proto b/proto/context.proto index 01e096233e364be8ad4e3810e7619e8f522e66e6..42b8a69cc5d28da4b1bc56777dcd678aaa96cfd8 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 9a982d1eb71e8b139d2a86fe1a774154239c7147..b917524a614900e7ad7f402587b8cd03efeafeff 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 fe0d83fb1886a42526b1c71304b7e3ecc2b0b7d7..216cd44617899e63c2c660e9e23ae5c88facd4ab 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 e3102cdf523a4e0b551873bb8f0c423db00aebf0..fdbf4739ab1186552b5f1a0ec5b7fa4cc3486062 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 4fa6829e760be6f24ba011a18664ce2ee4635595..3005c4cb381ba3711841dbc8d3653f297dfb9f16 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 16b86c769c5af1b69db4b669f5689043d03536bd..a7dbd5e02a394a4bdf7e62277fc5d041cacf180a 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 b5628ab5902d1b59c70413d41d05a6736adc751a..b39ce33ad33a06f61057099f0ecf0a58e89a192c 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 %}