From 9075d4f547d8492cea29b1d755c789c0e7cb984c Mon Sep 17 00:00:00 2001 From: Thierry Jiao Date: Wed, 22 Jun 2022 09:53:43 +0200 Subject: [PATCH] Fix bug service-create 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 Change-Id: I6ba726bc40c391077f3766f782205b2ec2c541c4 --- .../servicehandler/impl/ServicehandlerImpl.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/impl/ServicehandlerImpl.java b/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/impl/ServicehandlerImpl.java index 4f1e5c63c..109531e34 100644 --- a/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/impl/ServicehandlerImpl.java +++ b/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/impl/ServicehandlerImpl.java @@ -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()) -- 2.36.6