Fix bug service-create 20/101620/2
authorThierry Jiao <thierry.jiao@orange.com>
Wed, 22 Jun 2022 07:53:43 +0000 (09:53 +0200)
committerGuillaume Lambert <guillaume.lambert@orange.com>
Thu, 30 Jun 2022 12:27:30 +0000 (12:27 +0000)
When creating a new service with service-create RPC, ServiceHandlerImpl
will now check that there are no existing services with the same name
in the datastore.

JIRA: TRNSPRTPCE-675
Signed-off-by: Thierry Jiao <thierry.jiao@orange.com>
Change-Id: I6ba726bc40c391077f3766f782205b2ec2c541c4

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

index 4f1e5c63cc05e6eac6acd9ece60ee51b8a5b3077..109531e342c5670c17ff96b665bf3d38720b072b 100644 (file)
@@ -177,6 +177,10 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService {
             ABORT_VALID_FAILED = "Aborting: validation of service create request failed";
         }
 
+        public static String serviceInDS(String serviceName) {
+            return "Service '" + serviceName + "' already exists in datastore";
+        }
+
         public static String serviceNotInDS(String serviceName) {
             return "Service '" + serviceName + "' does not exist in datastore";
         }
@@ -195,12 +199,19 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService {
         // Validation
         OperationResult validationResult = ServiceCreateValidation.validateServiceCreateRequest(
                 new ServiceInput(input), RpcActions.ServiceCreate);
-        if (! validationResult.isSuccess()) {
+        if (!validationResult.isSuccess()) {
             LOG.warn(SERVICE_CREATE_MSG, LogMessages.ABORT_VALID_FAILED);
             return ModelMappingUtils.createCreateServiceReply(
                     input, ResponseCodes.FINAL_ACK_YES,
                     validationResult.getResultMessage(), ResponseCodes.RESPONSE_FAILED);
         }
+        //Check any presence of services with the same name
+        String serviceName = input.getServiceName();
+        if (this.serviceDataStoreOperations.getService(serviceName).isPresent()) {
+            LOG.warn(SERVICE_CREATE_MSG, LogMessages.serviceInDS(serviceName));
+            return ModelMappingUtils.createCreateServiceReply(input, ResponseCodes.FINAL_ACK_YES,
+                    LogMessages.serviceInDS(serviceName), ResponseCodes.RESPONSE_FAILED);
+        }
         this.pceListenerImpl.setInput(new ServiceInput(input));
         this.pceListenerImpl.setServiceReconfigure(false);
         this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
@@ -212,7 +223,7 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService {
         if (output == null) {
             LOG.warn(SERVICE_CREATE_MSG, LogMessages.ABORT_PCE_FAILED);
             sendNbiNotification(new PublishNotificationProcessServiceBuilder()
-                    .setServiceName(input.getServiceName())
+                    .setServiceName(serviceName)
                     .setServiceAEnd(new ServiceAEndBuilder(input.getServiceAEnd()).build())
                     .setServiceZEnd(new ServiceZEndBuilder(input.getServiceZEnd()).build())
                     .setCommonId(input.getCommonId())