From d07ebc86b474e0eb8e8f2f2ba24db4ef46f13b79 Mon Sep 17 00:00:00 2001 From: Ruslan Kashapov Date: Tue, 20 Apr 2021 11:14:30 +0300 Subject: Create child data node (part 2): NCMP service + REST Issue-ID: CPS-337 Change-Id: Icf703f6f375e5f280058d58c781eac081f3dd161 Signed-off-by: Ruslan Kashapov --- .../cps/ncmp/api/NetworkCmProxyDataService.java | 11 +++++++++++ .../api/impl/NetworkCmProxyDataServiceImpl.java | 23 ++++++++++++++++++---- 2 files changed, 30 insertions(+), 4 deletions(-) (limited to 'cps-ncmp-service/src/main') diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/NetworkCmProxyDataService.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/NetworkCmProxyDataService.java index 158f20ef93..8176ea50fa 100644 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/NetworkCmProxyDataService.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/NetworkCmProxyDataService.java @@ -2,6 +2,7 @@ * ============LICENSE_START======================================================= * Copyright (C) 2021 highstreet technologies GmbH * Copyright (C) 2021 Nordix Foundation + * Modifications Copyright (C) 2021 Pantheon.tech * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -56,6 +57,16 @@ public interface NetworkCmProxyDataService { Collection queryDataNodes(@NonNull String cmHandle, @NonNull String cpsPath, @NonNull FetchDescendantsOption fetchDescendantsOption); + /** + * Creates data node with descendants at root level or under existing node (if parent node xpath is provided). + * + * @param cmHandle The identifier for a network function, network element, subnetwork or any other cm + * object managed by Network CM Proxy + * @param parentNodeXpath xpath to parent node or '/' for root level + * @param jsonData data as JSON string + */ + void createDataNode(@NonNull String cmHandle, @NonNull String parentNodeXpath, @NonNull String jsonData); + /** * Updates data node for given cm handle using xpath to parent node. * diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java index 9e013145da..56f4cf8dce 100755 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java @@ -2,6 +2,7 @@ * ============LICENSE_START======================================================= * Copyright (C) 2021 highstreet technologies GmbH * Copyright (C) 2021 Nordix Foundation + * Modifications Copyright (C) 2021 Pantheon.tech * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,6 +29,7 @@ import org.onap.cps.spi.FetchDescendantsOption; import org.onap.cps.spi.model.DataNode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; @Service public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService { @@ -40,25 +42,38 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService @Autowired private CpsQueryService cpsQueryService; + private String getDataspaceName() { + return NF_PROXY_DATASPACE_NAME; + } + @Override public DataNode getDataNode(final String cmHandle, final String xpath, final FetchDescendantsOption fetchDescendantsOption) { - return cpsDataService.getDataNode(NF_PROXY_DATASPACE_NAME, cmHandle, xpath, fetchDescendantsOption); + return cpsDataService.getDataNode(getDataspaceName(), cmHandle, xpath, fetchDescendantsOption); } @Override public Collection queryDataNodes(final String cmHandle, final String cpsPath, final FetchDescendantsOption fetchDescendantsOption) { - return cpsQueryService.queryDataNodes(NF_PROXY_DATASPACE_NAME, cmHandle, cpsPath, fetchDescendantsOption); + return cpsQueryService.queryDataNodes(getDataspaceName(), cmHandle, cpsPath, fetchDescendantsOption); + } + + @Override + public void createDataNode(final String cmHandle, final String parentNodeXpath, final String jsonData) { + if (StringUtils.isEmpty(parentNodeXpath) || "/".equals(parentNodeXpath)) { + cpsDataService.saveData(getDataspaceName(), cmHandle, jsonData); + } else { + cpsDataService.saveData(getDataspaceName(), cmHandle, parentNodeXpath, jsonData); + } } @Override public void updateNodeLeaves(final String cmHandle, final String parentNodeXpath, final String jsonData) { - cpsDataService.updateNodeLeaves(NF_PROXY_DATASPACE_NAME, cmHandle, parentNodeXpath, jsonData); + cpsDataService.updateNodeLeaves(getDataspaceName(), cmHandle, parentNodeXpath, jsonData); } @Override public void replaceNodeTree(final String cmHandle, final String parentNodeXpath, final String jsonData) { - cpsDataService.replaceNodeTree(NF_PROXY_DATASPACE_NAME, cmHandle, parentNodeXpath, jsonData); + cpsDataService.replaceNodeTree(getDataspaceName(), cmHandle, parentNodeXpath, jsonData); } } -- cgit 1.2.3-korg