Commit 7f00bc97 authored by Shayan Hajipour's avatar Shayan Hajipour
Browse files

debug and enhance:

- post_nework_slice1.json changed to match the CAMARA demo topology
- address ip and prefix added to slice configrules
parent 82fe306f
Loading
Loading
Loading
Loading
+32 −19
Original line number Diff line number Diff line
@@ -15,6 +15,8 @@ LOGGER = logging.getLogger(__name__)


RESOURCE_KEY = "ietf_data"
ADDRESS_PREFIX = 24
RAISE_IF_DIFFERS = False


class IETFSliceHandler:
@@ -36,6 +38,7 @@ class IETFSliceHandler:
        slice_request.slice_id.slice_uuid.uuid = slice_id
        slice_request.slice_status.slice_status = SliceStatusEnum.SLICESTATUS_PLANNED
        list_endpoints = []
        endpoint_config_rules = []
        connection_group_ids = set()
        for sdp in sdps:
            attachment_circuits = sdp["attachment-circuits"]["attachment-circuit"]
@@ -43,14 +46,26 @@ class IETFSliceHandler:
                raise Exception("All SDPs should have 1 attachment-circuit")
            endpoint = EndPointId()
            endpoint.topology_id.context_id.context_uuid.uuid = DEFAULT_CONTEXT_NAME
            endpoint.device_id.device_uuid.uuid = sdp["node-id"]
            endpoint.endpoint_uuid.uuid = attachment_circuits[0]["ac-tp-id"]
            device_uuid = sdp["node-id"]
            endpoint.device_id.device_uuid.uuid = device_uuid
            endpoint_uuid = attachment_circuits[0]["ac-tp-id"]
            endpoint.endpoint_uuid.uuid = endpoint_uuid
            list_endpoints.append(endpoint)
            connection_group_ids.add(
                sdp["service-match-criteria"]["match-criterion"][0][
                    "target-connection-group-id"
                ]
            )
            endpoint_config_rule_fields = {
                "address_ip": (endpoint_uuid, RAISE_IF_DIFFERS),
                "address_prefix": (ADDRESS_PREFIX, RAISE_IF_DIFFERS),
            }
            endpoint_config_rules.append(
                (
                    f"/device[{device_uuid}]/endpoint[{endpoint_uuid}]/settings",
                    endpoint_config_rule_fields,
                )
            )
        slice_request.slice_endpoint_ids.extend(list_endpoints)
        if len(connection_group_ids) != 1:
            raise Exception("SDPs target-connection-group-id do not match")
@@ -82,13 +97,18 @@ class IETFSliceHandler:
        slice_request.slice_owner.owner_uuid.uuid = str(
            uuid.uuid5(uuid.NAMESPACE_DNS, owner)
        )
        raise_if_differs = False
        fields = {
            name: (value, raise_if_differs) for name, value in request_data.items()
        ietf_slice_fields = {
            name: (value, RAISE_IF_DIFFERS) for name, value in request_data.items()
        }
        update_config_rule_custom(
            slice_request.slice_config.config_rules, RESOURCE_KEY, fields
            slice_request.slice_config.config_rules, RESOURCE_KEY, ietf_slice_fields
        )

        for ep_cr_key, ep_cr_fields in endpoint_config_rules:
            update_config_rule_custom(
                slice_request.slice_config.config_rules, ep_cr_key, ep_cr_fields
            )

        return slice_request

    @staticmethod
@@ -112,8 +132,7 @@ class IETFSliceHandler:
        slice_service = slice_services[0]
        slice_sdps = slice_service["sdps"]["sdp"]
        slice_sdps.append(new_sdp)
        raise_if_differs = False
        fields = {name: (value, raise_if_differs) for name, value in ietf_data.items()}
        fields = {name: (value, RAISE_IF_DIFFERS) for name, value in ietf_data.items()}
        update_config_rule_custom(
            slice_request.slice_config.config_rules, RESOURCE_KEY, fields
        )
@@ -139,8 +158,7 @@ class IETFSliceHandler:
            True
        )
        slice_sdps.pop(sdp_idx)
        raise_if_differs = False
        fields = {name: (value, raise_if_differs) for name, value in ietf_data.items()}
        fields = {name: (value, RAISE_IF_DIFFERS) for name, value in ietf_data.items()}
        update_config_rule_custom(
            slice_request.slice_config.config_rules, RESOURCE_KEY, fields
        )
@@ -167,8 +185,7 @@ class IETFSliceHandler:
        slice_service = slice_services[0]
        slice_connection_groups = slice_service["connection-groups"]["connection-group"]
        slice_connection_groups.append(new_connection_group)
        raise_if_differs = False
        fields = {name: (value, raise_if_differs) for name, value in ietf_data.items()}
        fields = {name: (value, RAISE_IF_DIFFERS) for name, value in ietf_data.items()}
        update_config_rule_custom(slice.slice_config.config_rules, RESOURCE_KEY, fields)
        return slice

@@ -195,8 +212,7 @@ class IETFSliceHandler:
            )
        ).index(True)
        slice_connection_groups.pop(sdp_idx)
        raise_if_differs = False
        fields = {name: (value, raise_if_differs) for name, value in ietf_data.items()}
        fields = {name: (value, RAISE_IF_DIFFERS) for name, value in ietf_data.items()}
        update_config_rule_custom(
            slice_request.slice_config.config_rules, RESOURCE_KEY, fields
        )
@@ -288,8 +304,7 @@ class IETFSliceHandler:
        del slice_request.slice_constraints[:]
        slice_request.slice_constraints.extend(list_constraints)
        LOGGER.debug(grpc_message_to_json(slice_request))  # TODO remove
        raise_if_differs = False
        fields = {name: (value, raise_if_differs) for name, value in ietf_data.items()}
        fields = {name: (value, RAISE_IF_DIFFERS) for name, value in ietf_data.items()}
        update_config_rule_custom(
            slice_request.slice_config.config_rules, RESOURCE_KEY, fields
        )
@@ -326,9 +341,7 @@ class IETFSliceHandler:
                break
        else:
            raise Exception("Second SDP not found")

        raise_if_differs = False
        fields = {name: (value, raise_if_differs) for name, value in ietf_data.items()}
        fields = {name: (value, RAISE_IF_DIFFERS) for name, value in ietf_data.items()}
        update_config_rule_custom(
            slice_request.slice_config.config_rules, RESOURCE_KEY, fields
        )
+1 −1
Original line number Diff line number Diff line
@@ -58,7 +58,7 @@
                                        "id": "AC POP to VM1",
                                        "description": "AC VM1 connected to POP",
                                        "ac-node-id": "172.16.204.220",
                                        "ac-tp-id": "200"
                                        "ac-tp-id": "500"
                                    }
                                ]
                            }