Skip the temp-service-create if already exists 38/107338/3
authorBalagangadhar (Bala) Bathula <bb4341@att.com>
Tue, 8 Aug 2023 03:01:44 +0000 (23:01 -0400)
committerGilles Thouenon <gilles.thouenon@orange.com>
Thu, 17 Aug 2023 12:40:15 +0000 (14:40 +0200)
- If a temp-service with a commonId already exists in the
  data-store (temp-service-list), and if the temp-service-create
  is issued, then the controller should fail with an error
  message, indicating it already exists.
- Add code to check if the same commonId exists in the datastore
  and add a failed response.
- Add a new Junit test to check it

JIRA: TRNSPRTPCE-753
Signed-off-by: Balagangadhar (Bala) Bathula <bb4341@att.com>
Co-authored-by: Gilles Thouenon <gilles.thouenon@orange.com>
Change-Id: I9f425e9febd8820f3053ecd5dfdd14f8a66279c4

servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/impl/ServicehandlerImpl.java
servicehandler/src/test/java/org/opendaylight/transportpce/servicehandler/impl/ServicehandlerImplTest.java

index d71da9f17723d1bf91463716f1af2b2048dfaeb0..2a95a747dcba692e4727e7f050b9ee91ed3dc974 100644 (file)
@@ -666,6 +666,14 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService {
                     validationResult.getResultMessage(), ResponseCodes.RESPONSE_FAILED);
         }
 
+        //Check any presence of temp-service with the same commonId
+        String commonId = input.getCommonId();
+        if (this.serviceDataStoreOperations.getTempService(commonId).isPresent()) {
+            LOG.warn(TEMP_SERVICE_CREATE_MSG, LogMessages.serviceInDS("Temp (" + commonId + ")"));
+            return ModelMappingUtils.createCreateServiceReply(input, ResponseCodes.FINAL_ACK_YES,
+                    LogMessages.serviceInDS("Temp (" + commonId + ")"), ResponseCodes.RESPONSE_FAILED);
+        }
+
         // Starting service create operation
         LOG.debug(TEMP_SERVICE_CREATE_MSG, LogMessages.PCE_CALLING);
         this.pceListenerImpl.setInput(new ServiceInput(input));
index be9ad142d5653888c7eac246e6889aef30030b85..90c6b22efc0feee50b9ae2830cffa3338869d781 100644 (file)
@@ -531,6 +531,31 @@ public class ServicehandlerImplTest extends AbstractTest {
             result.get().getResult().getConfigurationResponseCommon().getResponseCode());
     }
 
+    @Test
+    void tempServiceCreateShouldBeFailedWithServiceAlreadyExist() throws ExecutionException, InterruptedException {
+        final ServiceDataStoreOperations serviceDSOperations = mock(ServiceDataStoreOperations.class);
+        when(serviceDSOperations.getTempService(any()))
+            .thenReturn(Optional.of(
+                    new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.temp.service.list
+                            .ServicesBuilder()
+                        .setCommonId("bad_commonId")
+                        .build()));
+        ListenableFuture<RpcResult<TempServiceCreateOutput>> result =
+            new ServicehandlerImpl(
+                    pathComputationService, rendererServiceOperations, notificationPublishService,
+                    pceListenerImpl, rendererListenerImpl, networkModelListenerImpl,
+                    serviceDSOperations, catalogDataStoreOperations)
+                .tempServiceCreate(ServiceDataUtils.buildTempServiceCreateInput());
+        result.addListener(() -> endSignal.countDown(), executorService);
+        endSignal.await();
+        assertEquals(
+            ResponseCodes.RESPONSE_FAILED,
+            result.get().getResult().getConfigurationResponseCommon().getResponseCode());
+        assertEquals(
+            "Service 'Temp (commonId)' already exists in datastore",
+            result.get().getResult().getConfigurationResponseCommon().getResponseMessage());
+    }
+
     @Test
     void tempServiceCreateShouldBeSuccessfulWhenPerformPCESuccessful()
             throws ExecutionException, InterruptedException {