Skip to content
Snippets Groups Projects
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
No related branches found
No related tags found
3 merge requests!346Draft: support for restconf protocol,!345Draft: support ipinfusion devices via netconf,!302Resolve "Elaborate IETF Slice NBI to support adding/deleting new sdp, connection group, and match criteria"
...@@ -15,6 +15,8 @@ LOGGER = logging.getLogger(__name__) ...@@ -15,6 +15,8 @@ LOGGER = logging.getLogger(__name__)
RESOURCE_KEY = "ietf_data" RESOURCE_KEY = "ietf_data"
ADDRESS_PREFIX = 24
RAISE_IF_DIFFERS = False
class IETFSliceHandler: class IETFSliceHandler:
...@@ -36,6 +38,7 @@ class IETFSliceHandler: ...@@ -36,6 +38,7 @@ class IETFSliceHandler:
slice_request.slice_id.slice_uuid.uuid = slice_id slice_request.slice_id.slice_uuid.uuid = slice_id
slice_request.slice_status.slice_status = SliceStatusEnum.SLICESTATUS_PLANNED slice_request.slice_status.slice_status = SliceStatusEnum.SLICESTATUS_PLANNED
list_endpoints = [] list_endpoints = []
endpoint_config_rules = []
connection_group_ids = set() connection_group_ids = set()
for sdp in sdps: for sdp in sdps:
attachment_circuits = sdp["attachment-circuits"]["attachment-circuit"] attachment_circuits = sdp["attachment-circuits"]["attachment-circuit"]
...@@ -43,14 +46,26 @@ class IETFSliceHandler: ...@@ -43,14 +46,26 @@ class IETFSliceHandler:
raise Exception("All SDPs should have 1 attachment-circuit") raise Exception("All SDPs should have 1 attachment-circuit")
endpoint = EndPointId() endpoint = EndPointId()
endpoint.topology_id.context_id.context_uuid.uuid = DEFAULT_CONTEXT_NAME endpoint.topology_id.context_id.context_uuid.uuid = DEFAULT_CONTEXT_NAME
endpoint.device_id.device_uuid.uuid = sdp["node-id"] device_uuid = sdp["node-id"]
endpoint.endpoint_uuid.uuid = attachment_circuits[0]["ac-tp-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) list_endpoints.append(endpoint)
connection_group_ids.add( connection_group_ids.add(
sdp["service-match-criteria"]["match-criterion"][0][ sdp["service-match-criteria"]["match-criterion"][0][
"target-connection-group-id" "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) slice_request.slice_endpoint_ids.extend(list_endpoints)
if len(connection_group_ids) != 1: if len(connection_group_ids) != 1:
raise Exception("SDPs target-connection-group-id do not match") raise Exception("SDPs target-connection-group-id do not match")
...@@ -82,13 +97,18 @@ class IETFSliceHandler: ...@@ -82,13 +97,18 @@ class IETFSliceHandler:
slice_request.slice_owner.owner_uuid.uuid = str( slice_request.slice_owner.owner_uuid.uuid = str(
uuid.uuid5(uuid.NAMESPACE_DNS, owner) uuid.uuid5(uuid.NAMESPACE_DNS, owner)
) )
raise_if_differs = False ietf_slice_fields = {
fields = { name: (value, RAISE_IF_DIFFERS) for name, value in request_data.items()
name: (value, raise_if_differs) for name, value in request_data.items()
} }
update_config_rule_custom( 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 return slice_request
@staticmethod @staticmethod
...@@ -112,8 +132,7 @@ class IETFSliceHandler: ...@@ -112,8 +132,7 @@ class IETFSliceHandler:
slice_service = slice_services[0] slice_service = slice_services[0]
slice_sdps = slice_service["sdps"]["sdp"] slice_sdps = slice_service["sdps"]["sdp"]
slice_sdps.append(new_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( update_config_rule_custom(
slice_request.slice_config.config_rules, RESOURCE_KEY, fields slice_request.slice_config.config_rules, RESOURCE_KEY, fields
) )
...@@ -139,8 +158,7 @@ class IETFSliceHandler: ...@@ -139,8 +158,7 @@ class IETFSliceHandler:
True True
) )
slice_sdps.pop(sdp_idx) 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( update_config_rule_custom(
slice_request.slice_config.config_rules, RESOURCE_KEY, fields slice_request.slice_config.config_rules, RESOURCE_KEY, fields
) )
...@@ -167,8 +185,7 @@ class IETFSliceHandler: ...@@ -167,8 +185,7 @@ class IETFSliceHandler:
slice_service = slice_services[0] slice_service = slice_services[0]
slice_connection_groups = slice_service["connection-groups"]["connection-group"] slice_connection_groups = slice_service["connection-groups"]["connection-group"]
slice_connection_groups.append(new_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) update_config_rule_custom(slice.slice_config.config_rules, RESOURCE_KEY, fields)
return slice return slice
...@@ -195,8 +212,7 @@ class IETFSliceHandler: ...@@ -195,8 +212,7 @@ class IETFSliceHandler:
) )
).index(True) ).index(True)
slice_connection_groups.pop(sdp_idx) 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( update_config_rule_custom(
slice_request.slice_config.config_rules, RESOURCE_KEY, fields slice_request.slice_config.config_rules, RESOURCE_KEY, fields
) )
...@@ -288,8 +304,7 @@ class IETFSliceHandler: ...@@ -288,8 +304,7 @@ class IETFSliceHandler:
del slice_request.slice_constraints[:] del slice_request.slice_constraints[:]
slice_request.slice_constraints.extend(list_constraints) slice_request.slice_constraints.extend(list_constraints)
LOGGER.debug(grpc_message_to_json(slice_request)) # TODO remove 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( update_config_rule_custom(
slice_request.slice_config.config_rules, RESOURCE_KEY, fields slice_request.slice_config.config_rules, RESOURCE_KEY, fields
) )
...@@ -326,9 +341,7 @@ class IETFSliceHandler: ...@@ -326,9 +341,7 @@ class IETFSliceHandler:
break break
else: else:
raise Exception("Second SDP not found") raise Exception("Second SDP not found")
fields = {name: (value, RAISE_IF_DIFFERS) for name, value in ietf_data.items()}
raise_if_differs = False
fields = {name: (value, raise_if_differs) for name, value in ietf_data.items()}
update_config_rule_custom( update_config_rule_custom(
slice_request.slice_config.config_rules, RESOURCE_KEY, fields slice_request.slice_config.config_rules, RESOURCE_KEY, fields
) )
......
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
"id": "AC POP to VM1", "id": "AC POP to VM1",
"description": "AC VM1 connected to POP", "description": "AC VM1 connected to POP",
"ac-node-id": "172.16.204.220", "ac-node-id": "172.16.204.220",
"ac-tp-id": "200" "ac-tp-id": "500"
} }
] ]
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment