diff options
author | 2022-03-11 08:05:11 -0500 | |
---|---|---|
committer | 2022-03-21 10:03:02 -0400 | |
commit | 4622f69544a089ef1a1062369128ac4fc3c35257 (patch) | |
tree | 299dbf9304e2983a479751d953b6d1cdd955df0a /cps-ncmp-service/src/main/java | |
parent | 0d7bf6913ab9db89c474c2bfe30a48ccc130e462 (diff) |
Return Registration response for updating cmhandles
- Added CMHandleRegistrationResponse class for registration response
- Send response in the case of success and failure
- Each update operation in the request is independent on previous one
Issue-ID: CPS-896
Signed-off-by: Renu Kumari <renu.kumari@bell.ca>
Change-Id: Ic6cc69da48bd2078029784cabede4f5965054c03
Diffstat (limited to 'cps-ncmp-service/src/main/java')
2 files changed, 106 insertions, 6 deletions
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServicePropertyHandler.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServicePropertyHandler.java index ca2f578f4..532d8463d 100644 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServicePropertyHandler.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServicePropertyHandler.java @@ -1,6 +1,7 @@ /* * ============LICENSE_START======================================================= * Copyright (C) 2022 Nordix Foundation + * Modifications Copyright (C) 2022 Bell Canada * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,15 +29,19 @@ import static org.onap.cps.ncmp.api.impl.constants.DmiRegistryConstants.NCMP_DMI import static org.onap.cps.ncmp.api.impl.constants.DmiRegistryConstants.NO_TIMESTAMP; import com.google.common.collect.ImmutableMap; +import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.onap.cps.api.CpsDataService; +import org.onap.cps.ncmp.api.models.CmHandleRegistrationResponse; +import org.onap.cps.ncmp.api.models.CmHandleRegistrationResponse.RegistrationError; import org.onap.cps.ncmp.api.models.NcmpServiceCmHandle; import org.onap.cps.spi.FetchDescendantsOption; import org.onap.cps.spi.exceptions.DataNodeNotFoundException; @@ -61,23 +66,32 @@ public class NetworkCmProxyDataServicePropertyHandler { * * @param ncmpServiceCmHandles collection of ncmpServiceCmHandles */ - public void updateCmHandleProperties(final Collection<NcmpServiceCmHandle> ncmpServiceCmHandles) + public List<CmHandleRegistrationResponse> updateCmHandleProperties( + final Collection<NcmpServiceCmHandle> ncmpServiceCmHandles) throws DataNodeNotFoundException { + final List<CmHandleRegistrationResponse> cmHandleRegistrationResponses = new ArrayList<>(); for (final NcmpServiceCmHandle ncmpServiceCmHandle : ncmpServiceCmHandles) { + final String cmHandle = ncmpServiceCmHandle.getCmHandleID(); try { - final String cmHandleXpath = String.format(CM_HANDLE_XPATH_TEMPLATE, - ncmpServiceCmHandle.getCmHandleID()); + final String cmHandleXpath = String.format(CM_HANDLE_XPATH_TEMPLATE, cmHandle); final DataNode existingCmHandleDataNode = cpsDataService.getDataNode(NCMP_DATASPACE_NAME, NCMP_DMI_REGISTRY_ANCHOR, cmHandleXpath, FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS); processUpdates(existingCmHandleDataNode, ncmpServiceCmHandle); + cmHandleRegistrationResponses.add(CmHandleRegistrationResponse.createSuccessResponse(cmHandle)); } catch (final DataNodeNotFoundException e) { log.error("Unable to find dataNode for cmHandleId : {} , caused by : {}", - ncmpServiceCmHandle.getCmHandleID(), - e.getMessage()); - throw e; + cmHandle, e.getMessage()); + cmHandleRegistrationResponses.add(CmHandleRegistrationResponse + .createFailureResponse(cmHandle, RegistrationError.CM_HANDLE_DOES_NOT_EXIST)); + } catch (final Exception exception) { + log.error("Unable to update dataNode for cmHandleId : {} , caused by : {}", + cmHandle, exception.getMessage()); + cmHandleRegistrationResponses.add( + CmHandleRegistrationResponse.createFailureResponse(cmHandle, exception)); } } + return cmHandleRegistrationResponses; } private void processUpdates(final DataNode existingCmHandleDataNode, final NcmpServiceCmHandle incomingCmHandle) { diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/CmHandleRegistrationResponse.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/CmHandleRegistrationResponse.java new file mode 100644 index 000000000..e183ed114 --- /dev/null +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/CmHandleRegistrationResponse.java @@ -0,0 +1,86 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2022 Bell Canada + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.cps.ncmp.api.models; + +import lombok.Builder; +import lombok.Data; +import lombok.RequiredArgsConstructor; + +@Data +@Builder +public class CmHandleRegistrationResponse { + + private final String cmHandle; + private final Status status; + private RegistrationError registrationError; + private String errorText; + + /** + * Creates a failure response based on exception. + * + * @param cmHandle cmHandle + * @param exception exception + * @return CmHandleRegistrationResponse + */ + public static CmHandleRegistrationResponse createFailureResponse(final String cmHandle, final Exception exception) { + return CmHandleRegistrationResponse.builder() + .cmHandle(cmHandle) + .status(Status.FAILURE) + .registrationError(RegistrationError.UNKNOWN_ERROR) + .errorText(exception.getMessage()).build(); + } + + /** + * Creates a failure response based on registration error. + * + * @param cmHandle cmHandle + * @param registrationError registrationError + * @return CmHandleRegistrationResponse + */ + public static CmHandleRegistrationResponse createFailureResponse(final String cmHandle, + final RegistrationError registrationError) { + return CmHandleRegistrationResponse.builder().cmHandle(cmHandle) + .status(Status.FAILURE) + .registrationError(registrationError) + .errorText(registrationError.errorText) + .build(); + } + + public static CmHandleRegistrationResponse createSuccessResponse(final String cmHandle) { + return CmHandleRegistrationResponse.builder().cmHandle(cmHandle) + .status(Status.SUCCESS).build(); + } + + public enum Status { + SUCCESS, FAILURE; + } + + @RequiredArgsConstructor + public enum RegistrationError { + UNKNOWN_ERROR("00", "Unknown error"), + CM_HANDLE_ALREADY_EXIST("01", "cm-handle already exists"), + CM_HANDLE_DOES_NOT_EXIST("02", "cm-handle does not exist"); + + public final String errorCode; + public final String errorText; + + } +}
\ No newline at end of file |