From db81efc68d4e7d33bd20cd97c1879a89395546d5 Mon Sep 17 00:00:00 2001
From: gifrerenom <lluis.gifre@cttc.es>
Date: Wed, 12 Jul 2023 17:32:56 +0000
Subject: [PATCH] Pre-merge code cleanup

---
 .../service/ServiceServiceServicerImpl.py     | 80 +++++++++----------
 1 file changed, 37 insertions(+), 43 deletions(-)

diff --git a/src/service/service/ServiceServiceServicerImpl.py b/src/service/service/ServiceServiceServicerImpl.py
index 2a6f88152..f7b2c74b0 100644
--- a/src/service/service/ServiceServiceServicerImpl.py
+++ b/src/service/service/ServiceServiceServicerImpl.py
@@ -117,6 +117,28 @@ class ServiceServiceServicerImpl(ServiceServiceServicer):
             service.service_type = request.service_type                                     # pylint: disable=no-member
         service.service_status.service_status = ServiceStatusEnum.SERVICESTATUS_PLANNED     # pylint: disable=no-member
 
+        if service.service_type == ServiceTypeEnum.SERVICETYPE_TE:
+            # TE service:
+            context_client.SetService(request)
+
+            te_service_client = TEServiceClient()
+            service_status = te_service_client.RequestLSP(service)
+
+            if service_status.service_status == ServiceStatusEnum.SERVICESTATUS_ACTIVE:
+                _service : Optional[Service] = get_service_by_id(
+                    context_client, request.service_id, rw_copy=True,
+                    include_config_rules=False, include_constraints=False, include_endpoint_ids=False)
+                _service.service_status.service_status = ServiceStatusEnum.SERVICESTATUS_ACTIVE
+                service_id = context_client.SetService(_service)
+                return service_id
+            else:
+                MSG = 'RequestLSP for Service({:s}) returned ServiceStatus({:s})'
+                context_uuid = request.service_id.context_id.context_uuid.uuid
+                service_uuid = request.service_id.service_uuid.uuid
+                service_key = '{:s}/{:s}'.format(context_uuid, service_uuid)
+                str_service_status = ServiceStatusEnum.Name(service_status.service_status)
+                raise Exception(MSG.format(service_key, str_service_status))
+
         del service.service_endpoint_ids[:] # pylint: disable=no-member
         for endpoint_id in request.service_endpoint_ids:
             service.service_endpoint_ids.add().CopyFrom(endpoint_id)    # pylint: disable=no-member
@@ -169,42 +191,14 @@ class ServiceServiceServicerImpl(ServiceServiceServicer):
             context_client, service_id_with_uuids, rw_copy=False,
             include_config_rules=True, include_constraints=True, include_endpoint_ids=True)
 
-        if service.service_type == ServiceTypeEnum.SERVICETYPE_TE:
-            # TE service:
-            te_service_client = TEServiceClient()
-
-            # Note: TE should update the service in Context.
-            #       By now we update it manually for debugging purposes
-            service = Service()
-            service.CopyFrom(request)
-            service.service_status.service_status = ServiceStatusEnum.SERVICESTATUS_PLANNED
-            context_client.SetService(request)
-
-            service_status = te_service_client.RequestLSP(service)
-
-            if service_status.service_status == ServiceStatusEnum.SERVICESTATUS_ACTIVE:
-                _service : Optional[Service] = get_service(context_client, request.service_id)
-                service = Service()
-                service.CopyFrom(_service)
-                service.service_status.service_status = ServiceStatusEnum.SERVICESTATUS_ACTIVE
-                context_client.SetService(service)
-            else:
-                MSG = 'RequestLSP for Service({:s}) returned ServiceStatus({:s})'
-                context_uuid = request.service_id.context_id.context_uuid.uuid
-                service_uuid = request.service_id.service_uuid.uuid
-                service_key = '{:s}/{:s}'.format(context_uuid, service_uuid)
-                str_service_status = ServiceStatusEnum.Name(service_status.service_status)
-                raise Exception(MSG.format(service_key, str_service_status))
-        else:
-            # Normal service:
-            num_disjoint_paths = None
-            for constraint in request.service_constraints:
-                if constraint.WhichOneof('constraint') == 'sla_availability':
-                    num_disjoint_paths = constraint.sla_availability.num_disjoint_paths
-                    break
+        num_disjoint_paths = None
+        for constraint in request.service_constraints:
+            if constraint.WhichOneof('constraint') == 'sla_availability':
+                num_disjoint_paths = constraint.sla_availability.num_disjoint_paths
+                break
 
-            num_disjoint_paths = 1 if num_disjoint_paths is None or num_disjoint_paths == 0 else num_disjoint_paths
-            num_expected_endpoints = num_disjoint_paths * 2
+        num_disjoint_paths = 1 if num_disjoint_paths is None or num_disjoint_paths == 0 else num_disjoint_paths
+        num_expected_endpoints = num_disjoint_paths * 2
 
         tasks_scheduler = TasksScheduler(self.service_handler_factory)
         if len(service_with_uuids.service_endpoint_ids) >= num_expected_endpoints:
@@ -253,15 +247,15 @@ class ServiceServiceServicerImpl(ServiceServiceServicer):
             te_service_client = TEServiceClient()
             te_service_client.DeleteLSP(request)
             context_client.RemoveService(request)
-        else:
-            # Normal service
-            # Feed TaskScheduler with this service and the sub-services and sub-connections related to this service.
-            # TaskScheduler identifies inter-dependencies among them and produces a schedule of tasks (an ordered list of
-            # tasks to be executed) to implement the requested delete operation.
-            tasks_scheduler = TasksScheduler(self.service_handler_factory)
-            tasks_scheduler.compose_from_service(service, is_delete=True)
-            tasks_scheduler.execute_all()
+            return Empty()
 
+        # Normal service
+        # Feed TaskScheduler with this service and the sub-services and sub-connections related to this service.
+        # TaskScheduler identifies inter-dependencies among them and produces a schedule of tasks (an ordered list of
+        # tasks to be executed) to implement the requested delete operation.
+        tasks_scheduler = TasksScheduler(self.service_handler_factory)
+        tasks_scheduler.compose_from_service(service, is_delete=True)
+        tasks_scheduler.execute_all()
         return Empty()
 
     @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
-- 
GitLab