Skip to content
Snippets Groups Projects
ConstantsMappings.py 3.68 KiB
Newer Older
  • Learn to ignore specific revisions
  • # Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #      http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT 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 enum import IntEnum
    from common.DeviceTypes import DeviceTypeEnum
    from common.proto.context_pb2 import ServiceTypeEnum
    
    class CapacityUnit(IntEnum):
        TB   = 0
        TBPS = 1
        GB   = 2
        GBPS = 3
        MB   = 4
        MBPS = 5
        KB   = 6
        KBPS = 7
        GHZ  = 8
        MHZ  = 9
    
    CAPACITY_MULTIPLIER = {
        CapacityUnit.TB   : 1.e12,
        CapacityUnit.TBPS : 1.e12,
        CapacityUnit.GB   : 1.e9,
        CapacityUnit.GBPS : 1.e9,
        CapacityUnit.MB   : 1.e6,
        CapacityUnit.MBPS : 1.e6,
        CapacityUnit.KB   : 1.e3,
        CapacityUnit.KBPS : 1.e3,
        CapacityUnit.GHZ  : 1.e9,
        CapacityUnit.MHZ  : 1.e6,
    }
    
    class LinkPortDirection(IntEnum):
        BIDIRECTIONAL = 0
        INPUT         = 1
        OUTPUT        = 2
        UNKNOWN       = 3
    
    class TerminationDirection(IntEnum):
        BIDIRECTIONAL = 0
        SINK          = 1
        SOURCE        = 2
        UNKNOWN       = 3
    
    class TerminationState(IntEnum):
        CAN_NEVER_TERMINATE         = 0
        NOT_TERMINATED              = 1
        TERMINATED_SERVER_TO_CLIENT = 2
        TERMINATED_CLIENT_TO_SERVER = 3
        TERMINATED_BIDIRECTIONAL    = 4
        PERMENANTLY_TERMINATED      = 5
        TERMINATION_STATE_UNKNOWN   = 6
    
    class LinkForwardingDirection(IntEnum):
        BIDIRECTIONAL  = 0
        UNIDIRECTIONAL = 1
        UNKNOWN        = 2
    
    class DeviceLayerEnum(IntEnum):
        APPLICATION_CONTROLLER = 41     # Layer 4 domain controller
        APPLICATION_DEVICE     = 40     # Layer 4 domain device
        PACKET_CONTROLLER      = 31     # Layer 3 domain controller
        PACKET_DEVICE          = 30     # Layer 3 domain device
        MAC_LAYER_CONTROLLER   = 21     # Layer 2 domain controller
        MAC_LAYER_DEVICE       = 20     # Layer 2 domain device
        OPTICAL_CONTROLLER     =  1     # Layer 0 domain controller
        OPTICAL_DEVICE         =  0     # Layer 0 domain device
    
    DEVICE_TYPE_TO_LAYER = {
        DeviceTypeEnum.EMULATED_DATACENTER.value      : DeviceLayerEnum.APPLICATION_DEVICE,
        DeviceTypeEnum.DATACENTER.value               : DeviceLayerEnum.APPLICATION_DEVICE,
    
        DeviceTypeEnum.EMULATED_PACKET_ROUTER.value   : DeviceLayerEnum.PACKET_DEVICE,
        DeviceTypeEnum.PACKET_ROUTER.value            : DeviceLayerEnum.PACKET_DEVICE,
        DeviceTypeEnum.PACKET_SWITCH.value            : DeviceLayerEnum.MAC_LAYER_DEVICE,
        DeviceTypeEnum.P4_SWITCH.value                : DeviceLayerEnum.MAC_LAYER_DEVICE,
    
        DeviceTypeEnum.MICROVAWE_RADIO_SYSTEM.value   : DeviceLayerEnum.MAC_LAYER_CONTROLLER,
    
        DeviceTypeEnum.EMULATED_OPEN_LINE_SYSTEM.value: DeviceLayerEnum.OPTICAL_CONTROLLER,
        DeviceTypeEnum.OPEN_LINE_SYSTEM.value         : DeviceLayerEnum.OPTICAL_CONTROLLER,
    
        DeviceTypeEnum.OPTICAL_ROADM.value            : DeviceLayerEnum.OPTICAL_DEVICE,
    
        DeviceTypeEnum.OPTICAL_TRANSPONDER.value      : DeviceLayerEnum.OPTICAL_DEVICE,
    
    }
    
    DEVICE_LAYER_TO_SERVICE_TYPE = {
        DeviceLayerEnum.APPLICATION_DEVICE.value: ServiceTypeEnum.SERVICETYPE_L3NM,
    
        DeviceLayerEnum.PACKET_DEVICE.value     : ServiceTypeEnum.SERVICETYPE_L3NM,
        DeviceLayerEnum.MAC_LAYER_DEVICE.value  : ServiceTypeEnum.SERVICETYPE_L2NM,
    
        DeviceLayerEnum.OPTICAL_CONTROLLER.value: ServiceTypeEnum.SERVICETYPE_TAPI_CONNECTIVITY_SERVICE,
    }