Skip to content
Snippets Groups Projects
Commit 20d8340f authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

Compute/InterDomain/Slice components:

- removed check of reply.entity_id==request.entity_id; context computes UUID-like identifiers based from requested identifiers for performance reasons
parent 6de7468f
No related branches found
No related tags found
2 merge requests!54Release 2.0.0,!34Context Scalability extensions using CockroachDB + Removal of Stateful database inside Device + other
...@@ -50,9 +50,7 @@ class L2VPN_Services(Resource): ...@@ -50,9 +50,7 @@ class L2VPN_Services(Resource):
slice_request.slice_status.slice_status = SliceStatusEnum.SLICESTATUS_PLANNED slice_request.slice_status.slice_status = SliceStatusEnum.SLICESTATUS_PLANNED
slice_client = SliceClient() slice_client = SliceClient()
slice_reply = slice_client.CreateSlice(slice_request) slice_client.CreateSlice(slice_request)
if slice_reply != slice_request.slice_id: # pylint: disable=no-member
raise Exception('Slice creation failed. Wrong Slice Id was returned')
response = jsonify({}) response = jsonify({})
response.status_code = HTTP_CREATED response.status_code = HTTP_CREATED
......
...@@ -129,9 +129,7 @@ def process_list_site_network_access( ...@@ -129,9 +129,7 @@ def process_list_site_network_access(
sna_request = process_site_network_access(context_client, site_id, site_network_access) sna_request = process_site_network_access(context_client, site_id, site_network_access)
LOGGER.debug('sna_request = {:s}'.format(grpc_message_to_json_string(sna_request))) LOGGER.debug('sna_request = {:s}'.format(grpc_message_to_json_string(sna_request)))
try: try:
sna_reply = slice_client.UpdateSlice(sna_request) slice_client.UpdateSlice(sna_request)
if sna_reply != sna_request.slice_id: # pylint: disable=no-member
raise Exception('Slice update failed. Wrong Slice Id was returned')
except Exception as e: # pylint: disable=broad-except except Exception as e: # pylint: disable=broad-except
msg = 'Something went wrong Updating VPN {:s}' msg = 'Something went wrong Updating VPN {:s}'
LOGGER.exception(msg.format(grpc_message_to_json_string(sna_request))) LOGGER.exception(msg.format(grpc_message_to_json_string(sna_request)))
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
# limitations under the License. # limitations under the License.
import grpc, logging, uuid import grpc, logging, uuid
from common.Constants import DEFAULT_CONTEXT_UUID, DEFAULT_TOPOLOGY_UUID from common.Constants import DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME
from common.proto.context_pb2 import AuthenticationResult, Slice, SliceId, SliceStatusEnum, TeraFlowController, TopologyId from common.proto.context_pb2 import AuthenticationResult, Slice, SliceId, SliceStatusEnum, TeraFlowController, TopologyId
from common.proto.interdomain_pb2_grpc import InterdomainServiceServicer from common.proto.interdomain_pb2_grpc import InterdomainServiceServicer
from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_method from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_method
...@@ -95,17 +95,15 @@ class InterdomainServiceServicerImpl(InterdomainServiceServicer): ...@@ -95,17 +95,15 @@ class InterdomainServiceServicerImpl(InterdomainServiceServicer):
LOGGER.info('[loop] [local] domain_uuid={:s} is_local_domain={:s} slice_uuid={:s}'.format( LOGGER.info('[loop] [local] domain_uuid={:s} is_local_domain={:s} slice_uuid={:s}'.format(
str(domain_uuid), str(is_local_domain), str(slice_uuid))) str(domain_uuid), str(is_local_domain), str(slice_uuid)))
# local slices always in DEFAULT_CONTEXT_UUID # local slices always in DEFAULT_CONTEXT_NAME
#context_uuid = request.slice_id.context_id.context_uuid.uuid #context_uuid = request.slice_id.context_id.context_uuid.uuid
context_uuid = DEFAULT_CONTEXT_UUID context_uuid = DEFAULT_CONTEXT_NAME
endpoint_ids = map_abstract_endpoints_to_real(context_client, domain_uuid, endpoint_ids) endpoint_ids = map_abstract_endpoints_to_real(context_client, domain_uuid, endpoint_ids)
sub_slice = compose_slice( sub_slice = compose_slice(
context_uuid, slice_uuid, endpoint_ids, constraints=request.slice_constraints, context_uuid, slice_uuid, endpoint_ids, constraints=request.slice_constraints,
config_rules=request.slice_config.config_rules) config_rules=request.slice_config.config_rules)
LOGGER.info('[loop] [local] sub_slice={:s}'.format(grpc_message_to_json_string(sub_slice))) LOGGER.info('[loop] [local] sub_slice={:s}'.format(grpc_message_to_json_string(sub_slice)))
sub_slice_id = slice_client.CreateSlice(sub_slice) sub_slice_id = slice_client.CreateSlice(sub_slice)
if sub_slice_id != sub_slice.slice_id: # pylint: disable=no-member
raise Exception('Local Slice creation failed. Wrong Slice Id was returned')
else: else:
slice_uuid = request.slice_id.slice_uuid.uuid slice_uuid = request.slice_id.slice_uuid.uuid
LOGGER.info('[loop] [remote] domain_uuid={:s} is_local_domain={:s} slice_uuid={:s}'.format( LOGGER.info('[loop] [remote] domain_uuid={:s} is_local_domain={:s} slice_uuid={:s}'.format(
...@@ -113,7 +111,7 @@ class InterdomainServiceServicerImpl(InterdomainServiceServicer): ...@@ -113,7 +111,7 @@ class InterdomainServiceServicerImpl(InterdomainServiceServicer):
# create context/topology for the remote domains where we are creating slices # create context/topology for the remote domains where we are creating slices
create_context(context_client, domain_uuid) create_context(context_client, domain_uuid)
create_topology(context_client, domain_uuid, DEFAULT_TOPOLOGY_UUID) create_topology(context_client, domain_uuid, DEFAULT_TOPOLOGY_NAME)
sub_slice = compose_slice( sub_slice = compose_slice(
domain_uuid, slice_uuid, endpoint_ids, constraints=request.slice_constraints, domain_uuid, slice_uuid, endpoint_ids, constraints=request.slice_constraints,
......
...@@ -108,16 +108,14 @@ class InterdomainServiceServicerImpl(InterdomainServiceServicer): ...@@ -108,16 +108,14 @@ class InterdomainServiceServicerImpl(InterdomainServiceServicer):
slice_endpoint_id.device_id.device_uuid.uuid = 'R1@D2' slice_endpoint_id.device_id.device_uuid.uuid = 'R1@D2'
slice_endpoint_id.endpoint_uuid.uuid = '2/1' slice_endpoint_id.endpoint_uuid.uuid = '2/1'
local_slice_reply = slice_client.CreateSlice(local_slice_request) local_slice_id_reply = slice_client.CreateSlice(local_slice_request)
if local_slice_reply != local_slice_request.slice_id: # pylint: disable=no-member
raise Exception('Local Slice creation failed. Wrong Slice Id was returned')
subslice_id = reply.slice_subslice_ids.add() subslice_id = reply.slice_subslice_ids.add()
subslice_id.context_id.context_uuid.uuid = local_slice_request.slice_id.context_id.context_uuid.uuid subslice_id.context_id.context_uuid.uuid = local_slice_id_reply.context_id.context_uuid.uuid
subslice_id.slice_uuid.uuid = local_slice_request.slice_id.slice_uuid.uuid subslice_id.slice_uuid.uuid = local_slice_id_reply.slice_uuid.uuid
context_client.SetSlice(reply) reply_slice_id = context_client.SetSlice(reply)
return reply.slice_id return reply_slice_id
@safe_and_metered_rpc_method(METRICS_POOL, LOGGER) @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
def Authenticate(self, request : TeraFlowController, context : grpc.ServicerContext) -> AuthenticationResult: def Authenticate(self, request : TeraFlowController, context : grpc.ServicerContext) -> AuthenticationResult:
......
...@@ -81,7 +81,7 @@ class SliceServiceServicerImpl(SliceServiceServicer): ...@@ -81,7 +81,7 @@ class SliceServiceServicerImpl(SliceServiceServicer):
service_id = ServiceId() service_id = ServiceId()
# pylint: disable=no-member # pylint: disable=no-member
context_uuid = service_id.context_id.context_uuid.uuid = request.slice_id.context_id.context_uuid.uuid context_uuid = service_id.context_id.context_uuid.uuid = request.slice_id.context_id.context_uuid.uuid
slice_uuid = service_uuid = service_id.service_uuid.uuid = request.slice_id.slice_uuid.uuid service_uuid = service_id.service_uuid.uuid = request.slice_id.slice_uuid.uuid
service_client = ServiceClient() service_client = ServiceClient()
try: try:
...@@ -92,10 +92,7 @@ class SliceServiceServicerImpl(SliceServiceServicer): ...@@ -92,10 +92,7 @@ class SliceServiceServicerImpl(SliceServiceServicer):
service_request.service_id.CopyFrom(service_id) service_request.service_id.CopyFrom(service_id)
service_request.service_type = ServiceTypeEnum.SERVICETYPE_UNKNOWN service_request.service_type = ServiceTypeEnum.SERVICETYPE_UNKNOWN
service_request.service_status.service_status = ServiceStatusEnum.SERVICESTATUS_PLANNED service_request.service_status.service_status = ServiceStatusEnum.SERVICESTATUS_PLANNED
service_reply = service_client.CreateService(service_request) service_client.CreateService(service_request)
if service_reply != service_request.service_id: # pylint: disable=no-member
# pylint: disable=raise-missing-from
raise Exception('Service creation failed. Wrong Service Id was returned')
_service = context_client.GetService(service_id) _service = context_client.GetService(service_id)
service_request = Service() service_request = Service()
service_request.CopyFrom(_service) service_request.CopyFrom(_service)
...@@ -137,9 +134,7 @@ class SliceServiceServicerImpl(SliceServiceServicer): ...@@ -137,9 +134,7 @@ class SliceServiceServicerImpl(SliceServiceServicer):
service_request.service_type = ServiceTypeEnum.SERVICETYPE_L2NM service_request.service_type = ServiceTypeEnum.SERVICETYPE_L2NM
LOGGER.info('assume L2') LOGGER.info('assume L2')
service_reply = service_client.UpdateService(service_request) service_client.UpdateService(service_request)
if service_reply != service_request.service_id: # pylint: disable=no-member
raise Exception('Service update failed. Wrong Service Id was returned')
copy_endpoint_ids(request.slice_endpoint_ids, slice_request.slice_endpoint_ids) copy_endpoint_ids(request.slice_endpoint_ids, slice_request.slice_endpoint_ids)
copy_constraints(request.slice_constraints, slice_request.slice_constraints) copy_constraints(request.slice_constraints, slice_request.slice_constraints)
......
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