Scheduled maintenance on Saturday, 27 September 2025, from 07:00 AM to 4:00 PM GMT (09:00 AM to 6:00 PM CEST) - some services may be unavailable -

Skip to content
Snippets Groups Projects
Objects.py 9.12 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 common.Constants import DEFAULT_CONTEXT_UUID, DEFAULT_TOPOLOGY_UUID
    
    from common.proto.kpi_sample_types_pb2 import KpiSampleType
    
    from common.tools.object_factory.ConfigRule import json_config_rule_set
    from common.tools.object_factory.Connection import json_connection, json_connection_id
    from common.tools.object_factory.Constraint import json_constraint
    from common.tools.object_factory.Context import json_context, json_context_id
    from common.tools.object_factory.Device import json_device_id, json_device_packetrouter_disabled
    from common.tools.object_factory.EndPoint import json_endpoint, json_endpoint_id
    from common.tools.object_factory.Link import json_link, json_link_id
    from common.tools.object_factory.Service import json_service_id, json_service_l3nm_planned
    from common.tools.object_factory.Topology import json_topology, json_topology_id
    
    
    # ----- Context --------------------------------------------------------------------------------------------------------
    CONTEXT_ID = json_context_id(DEFAULT_CONTEXT_UUID)
    CONTEXT    = json_context(DEFAULT_CONTEXT_UUID)
    
    
    # ----- Topology -------------------------------------------------------------------------------------------------------
    TOPOLOGY_ID = json_topology_id(DEFAULT_TOPOLOGY_UUID, context_id=CONTEXT_ID)
    TOPOLOGY    = json_topology(DEFAULT_TOPOLOGY_UUID, context_id=CONTEXT_ID)
    
    
    # ----- KPI Sample Types -----------------------------------------------------------------------------------------------
    PACKET_PORT_SAMPLE_TYPES = [
        KpiSampleType.KPISAMPLETYPE_PACKETS_TRANSMITTED,
        KpiSampleType.KPISAMPLETYPE_PACKETS_RECEIVED,
        KpiSampleType.KPISAMPLETYPE_BYTES_TRANSMITTED,
        KpiSampleType.KPISAMPLETYPE_BYTES_RECEIVED,
    ]
    
    
    # ----- Device ---------------------------------------------------------------------------------------------------------
    
    EP2 = '7eb80584-2587-4e71-b10c-f3a5c48e84ab'
    EP3 = '368baf47-0540-4ab4-add8-a19b5167162c'
    EP100 = '6a923121-36e1-4b5e-8cd6-90aceca9b5cf'
    
    
    DEVICE_R1_UUID  = 'fe83a200-6ded-47b4-b156-3bb3556a10d6'
    
    DEVICE_R1_ID    = json_device_id(DEVICE_R1_UUID)
    DEVICE_R1_EPS   = [
    
        json_endpoint(DEVICE_R1_ID, EP2,   '10G', topology_id=TOPOLOGY_ID, kpi_sample_types=PACKET_PORT_SAMPLE_TYPES),
        json_endpoint(DEVICE_R1_ID, EP3,   '10G', topology_id=TOPOLOGY_ID, kpi_sample_types=PACKET_PORT_SAMPLE_TYPES),
        json_endpoint(DEVICE_R1_ID, EP100, '10G', topology_id=TOPOLOGY_ID, kpi_sample_types=PACKET_PORT_SAMPLE_TYPES),
    
    ]
    DEVICE_R1_RULES = [
        json_config_rule_set('dev/rsrc1/value', 'value1'),
        json_config_rule_set('dev/rsrc2/value', 'value2'),
        json_config_rule_set('dev/rsrc3/value', 'value3'),
    ]
    DEVICE_R1       = json_device_packetrouter_disabled(
        DEVICE_R1_UUID, endpoints=DEVICE_R1_EPS, config_rules=DEVICE_R1_RULES)
    
    
    DEVICE_R2_UUID  = 'R2'
    DEVICE_R2_ID    = json_device_id(DEVICE_R2_UUID)
    DEVICE_R2_EPS   = [
        json_endpoint(DEVICE_R2_ID, 'EP1',   '10G', topology_id=TOPOLOGY_ID, kpi_sample_types=PACKET_PORT_SAMPLE_TYPES),
        json_endpoint(DEVICE_R2_ID, 'EP3',   '10G', topology_id=TOPOLOGY_ID, kpi_sample_types=PACKET_PORT_SAMPLE_TYPES),
        json_endpoint(DEVICE_R2_ID, 'EP100', '10G', topology_id=TOPOLOGY_ID, kpi_sample_types=PACKET_PORT_SAMPLE_TYPES),
    ]
    DEVICE_R2_RULES = [
        json_config_rule_set('dev/rsrc1/value', 'value4'),
        json_config_rule_set('dev/rsrc2/value', 'value5'),
        json_config_rule_set('dev/rsrc3/value', 'value6'),
    ]
    DEVICE_R2       = json_device_packetrouter_disabled(
        DEVICE_R2_UUID, endpoints=DEVICE_R2_EPS, config_rules=DEVICE_R2_RULES)
    
    
    DEVICE_R3_UUID  = 'R3'
    DEVICE_R3_ID    = json_device_id(DEVICE_R3_UUID)
    DEVICE_R3_EPS   = [
        json_endpoint(DEVICE_R3_ID, 'EP1',   '10G', topology_id=TOPOLOGY_ID, kpi_sample_types=PACKET_PORT_SAMPLE_TYPES),
        json_endpoint(DEVICE_R3_ID, 'EP2',   '10G', topology_id=TOPOLOGY_ID, kpi_sample_types=PACKET_PORT_SAMPLE_TYPES),
        json_endpoint(DEVICE_R3_ID, 'EP100', '10G', topology_id=TOPOLOGY_ID, kpi_sample_types=PACKET_PORT_SAMPLE_TYPES),
    ]
    DEVICE_R3_RULES = [
        json_config_rule_set('dev/rsrc1/value', 'value4'),
        json_config_rule_set('dev/rsrc2/value', 'value5'),
        json_config_rule_set('dev/rsrc3/value', 'value6'),
    ]
    DEVICE_R3       = json_device_packetrouter_disabled(
        DEVICE_R3_UUID, endpoints=DEVICE_R3_EPS, config_rules=DEVICE_R3_RULES)
    
    
    # ----- Link -----------------------------------------------------------------------------------------------------------
    LINK_R1_R2_UUID  = 'R1/EP2-R2/EP1'
    LINK_R1_R2_ID    = json_link_id(LINK_R1_R2_UUID)
    LINK_R1_R2_EPIDS = [
        json_endpoint_id(DEVICE_R1_ID, 'EP2', topology_id=TOPOLOGY_ID),
        json_endpoint_id(DEVICE_R2_ID, 'EP1', topology_id=TOPOLOGY_ID),
    ]
    LINK_R1_R2       = json_link(LINK_R1_R2_UUID, LINK_R1_R2_EPIDS)
    
    
    LINK_R2_R3_UUID  = 'R2/EP3-R3/EP2'
    LINK_R2_R3_ID    = json_link_id(LINK_R2_R3_UUID)
    LINK_R2_R3_EPIDS = [
        json_endpoint_id(DEVICE_R2_ID, 'EP3', topology_id=TOPOLOGY_ID),
        json_endpoint_id(DEVICE_R3_ID, 'EP2', topology_id=TOPOLOGY_ID),
    ]
    LINK_R2_R3       = json_link(LINK_R2_R3_UUID, LINK_R2_R3_EPIDS)
    
    
    LINK_R1_R3_UUID  = 'R1/EP3-R3/EP1'
    LINK_R1_R3_ID    = json_link_id(LINK_R1_R3_UUID)
    LINK_R1_R3_EPIDS = [
        json_endpoint_id(DEVICE_R1_ID, 'EP3', topology_id=TOPOLOGY_ID),
        json_endpoint_id(DEVICE_R3_ID, 'EP1', topology_id=TOPOLOGY_ID),
    ]
    LINK_R1_R3       = json_link(LINK_R1_R3_UUID, LINK_R1_R3_EPIDS)
    
    
    # ----- Service --------------------------------------------------------------------------------------------------------
    SERVICE_R1_R2_UUID  = 'SVC:R1/EP100-R2/EP100'
    SERVICE_R1_R2_ID    = json_service_id(SERVICE_R1_R2_UUID, context_id=CONTEXT_ID)
    SERVICE_R1_R2_EPIDS = [
        json_endpoint_id(DEVICE_R1_ID, 'EP100', topology_id=TOPOLOGY_ID),
        json_endpoint_id(DEVICE_R2_ID, 'EP100', topology_id=TOPOLOGY_ID),
    ]
    SERVICE_R1_R2_CONST = [
        json_constraint('latency_ms', '15.2'),
        json_constraint('jitter_us',  '1.2'),
    ]
    SERVICE_R1_R2_RULES = [
        json_config_rule_set('svc/rsrc1/value', 'value7'),
        json_config_rule_set('svc/rsrc2/value', 'value8'),
        json_config_rule_set('svc/rsrc3/value', 'value9'),
    ]
    SERVICE_R1_R2       = json_service_l3nm_planned(
        SERVICE_R1_R2_UUID, endpoint_ids=SERVICE_R1_R2_EPIDS, constraints=SERVICE_R1_R2_CONST,
        config_rules=SERVICE_R1_R2_RULES)
    
    
    SERVICE_R1_R3_UUID  = 'SVC:R1/EP100-R3/EP100'
    SERVICE_R1_R3_ID    = json_service_id(SERVICE_R1_R3_UUID, context_id=CONTEXT_ID)
    SERVICE_R1_R3_EPIDS = [
        json_endpoint_id(DEVICE_R1_ID, 'EP100', topology_id=TOPOLOGY_ID),
        json_endpoint_id(DEVICE_R3_ID, 'EP100', topology_id=TOPOLOGY_ID),
    ]
    SERVICE_R1_R3_CONST = [
        json_constraint('latency_ms', '5.8'),
        json_constraint('jitter_us',  '0.1'),
    ]
    SERVICE_R1_R3_RULES = [
        json_config_rule_set('svc/rsrc1/value', 'value7'),
        json_config_rule_set('svc/rsrc2/value', 'value8'),
        json_config_rule_set('svc/rsrc3/value', 'value9'),
    ]
    SERVICE_R1_R3       = json_service_l3nm_planned(
        SERVICE_R1_R3_UUID, endpoint_ids=SERVICE_R1_R3_EPIDS, constraints=SERVICE_R1_R3_CONST,
        config_rules=SERVICE_R1_R3_RULES)
    
    
    SERVICE_R2_R3_UUID  = 'SVC:R2/EP100-R3/EP100'
    SERVICE_R2_R3_ID    = json_service_id(SERVICE_R2_R3_UUID, context_id=CONTEXT_ID)
    SERVICE_R2_R3_EPIDS = [
        json_endpoint_id(DEVICE_R2_ID, 'EP100', topology_id=TOPOLOGY_ID),
        json_endpoint_id(DEVICE_R3_ID, 'EP100', topology_id=TOPOLOGY_ID),
    ]
    SERVICE_R2_R3_CONST = [
        json_constraint('latency_ms', '23.1'),
        json_constraint('jitter_us',  '3.4'),
    ]
    SERVICE_R2_R3_RULES = [
        json_config_rule_set('svc/rsrc1/value', 'value7'),
        json_config_rule_set('svc/rsrc2/value', 'value8'),
        json_config_rule_set('svc/rsrc3/value', 'value9'),
    ]
    SERVICE_R2_R3       = json_service_l3nm_planned(
        SERVICE_R2_R3_UUID, endpoint_ids=SERVICE_R2_R3_EPIDS, constraints=SERVICE_R2_R3_CONST,
        config_rules=SERVICE_R2_R3_RULES)
    
    
    # ----- Connection -----------------------------------------------------------------------------------------------------
    CONNECTION_R1_R3_UUID   = 'CON:R1/EP100-R3/EP100'
    CONNECTION_R1_R3_ID     = json_connection_id(CONNECTION_R1_R3_UUID)
    CONNECTION_R1_R3_EPIDS  = [
        json_endpoint_id(DEVICE_R1_ID, 'EP100', topology_id=TOPOLOGY_ID),
        json_endpoint_id(DEVICE_R1_ID, 'EP2',   topology_id=TOPOLOGY_ID),
        json_endpoint_id(DEVICE_R2_ID, 'EP1',   topology_id=TOPOLOGY_ID),
        json_endpoint_id(DEVICE_R2_ID, 'EP3',   topology_id=TOPOLOGY_ID),
        json_endpoint_id(DEVICE_R3_ID, 'EP2',   topology_id=TOPOLOGY_ID),
        json_endpoint_id(DEVICE_R3_ID, 'EP100', topology_id=TOPOLOGY_ID),
    ]
    CONNECTION_R1_R3_SVCIDS = [SERVICE_R1_R2_ID, SERVICE_R2_R3_ID]
    CONNECTION_R1_R3        = json_connection(
        CONNECTION_R1_R3_UUID, service_id=SERVICE_R1_R3_ID, path_hops_endpoint_ids=CONNECTION_R1_R3_EPIDS,
        sub_service_ids=CONNECTION_R1_R3_SVCIDS)