diff options
Diffstat (limited to 'cps-ncmp-service')
5 files changed, 6 insertions, 202 deletions
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 ec816ed730..dddf089107 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 @@ -1,7 +1,7 @@ /* * ============LICENSE_START======================================================= * Copyright (C) 2021 highstreet technologies GmbH - * Modifications Copyright (C) 2021 Nordix Foundation + * Modifications Copyright (C) 2021-2022 Nordix Foundation * Modifications Copyright (C) 2021 Pantheon.tech * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -25,10 +25,7 @@ package org.onap.cps.ncmp.api; import static org.onap.cps.ncmp.api.impl.operations.DmiRequestBody.OperationEnum; import java.util.Collection; -import org.checkerframework.checker.nullness.qual.NonNull; import org.onap.cps.ncmp.api.models.DmiPluginRegistration; -import org.onap.cps.spi.FetchDescendantsOption; -import org.onap.cps.spi.model.DataNode; import org.onap.cps.spi.model.ModuleReference; /* @@ -37,72 +34,6 @@ import org.onap.cps.spi.model.ModuleReference; public interface NetworkCmProxyDataService { /** - * Retrieves datanode by XPath for a given cm handle. - * - * @param cmHandle The identifier for a network function, network element, subnetwork or any other cm - * object by managed Network CM Proxy - * @param xpath xpath - * @param fetchDescendantsOption defines the scope of data to fetch: either single node or all the descendant nodes - * (recursively) as well - * @return data node object - */ - DataNode getDataNode(@NonNull String cmHandle, @NonNull String xpath, - @NonNull FetchDescendantsOption fetchDescendantsOption); - - /** - * Get datanodes for the given cm handle by cps path. - * - * @param cmHandle The identifier for a network function, network element, subnetwork or any other cm - * object by managed Network CM Proxy - * @param cpsPath cps path - * @param fetchDescendantsOption defines whether the descendants of the node(s) found by the query should be - * included in the output - * @return a collection of datanodes - */ - Collection<DataNode> 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); - - /** - * Creates one or more child node elements with descendants under existing node from list-node data fragment. - * - * @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 - * @param jsonData data as JSON string - */ - void addListNodeElements(@NonNull String cmHandle, @NonNull String parentNodeXpath, @NonNull String jsonData); - - /** - * Updates data node for given cm handle using xpath to parent node. - * - * @param cmHandle The identifier for a network function, network element, subnetwork or any other cm object - * by managed Network CM Proxy - * @param parentNodeXpath xpath to parent node - * @param jsonData json data - */ - void updateNodeLeaves(@NonNull String cmHandle, @NonNull String parentNodeXpath, @NonNull String jsonData); - - /** - * Replaces existing data node content including descendants. - * - * @param cmHandle The identifier for a network function, network element, subnetwork or any other cm object - * by managed Network CM Proxy - * @param parentNodeXpath xpath to parent node - * @param jsonData json data - */ - void replaceNodeTree(@NonNull String cmHandle, @NonNull String parentNodeXpath, @NonNull String jsonData); - - /** * Registration of New CM Handles. * * @param dmiPluginRegistration Dmi Plugin Registration 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 7ded95fa06..eeb004ad51 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 @@ -1,7 +1,7 @@ /* * ============LICENSE_START======================================================= * Copyright (C) 2021 highstreet technologies GmbH - * Modifications Copyright (C) 2021 Nordix Foundation + * Modifications Copyright (C) 2021-2022 Nordix Foundation * Modifications Copyright (C) 2021 Pantheon.tech * Modifications Copyright (C) 2021 Bell Canada * ================================================================================ @@ -38,7 +38,6 @@ import lombok.extern.slf4j.Slf4j; import org.onap.cps.api.CpsAdminService; import org.onap.cps.api.CpsDataService; import org.onap.cps.api.CpsModuleService; -import org.onap.cps.api.CpsQueryService; import org.onap.cps.ncmp.api.NetworkCmProxyDataService; import org.onap.cps.ncmp.api.impl.exception.NcmpException; import org.onap.cps.ncmp.api.impl.operations.DmiDataOperations; @@ -48,14 +47,11 @@ import org.onap.cps.ncmp.api.models.CmHandle; import org.onap.cps.ncmp.api.models.DmiPluginRegistration; import org.onap.cps.ncmp.api.models.PersistenceCmHandle; import org.onap.cps.ncmp.api.models.PersistenceCmHandlesList; -import org.onap.cps.spi.FetchDescendantsOption; import org.onap.cps.spi.exceptions.DataNodeNotFoundException; import org.onap.cps.spi.exceptions.DataValidationException; -import org.onap.cps.spi.model.DataNode; import org.onap.cps.spi.model.ModuleReference; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; -import org.springframework.util.StringUtils; @Slf4j @Service @@ -73,8 +69,6 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService private ObjectMapper objectMapper; - private CpsQueryService cpsQueryService; - private DmiDataOperations dmiDataOperations; private DmiModelOperations dmiModelOperations; @@ -87,69 +81,23 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService * Constructor Injection for Dependencies. * @param dmiDataOperations DMI operation * @param cpsDataService Data Service Interface - * @param cpsQueryService Query Service Interface * @param objectMapper Object Mapper */ public NetworkCmProxyDataServiceImpl(final DmiDataOperations dmiDataOperations, final DmiModelOperations dmiModelOperations, final CpsModuleService cpsModuleService, final CpsDataService cpsDataService, - final CpsQueryService cpsQueryService, final CpsAdminService cpsAdminService, final ObjectMapper objectMapper) { this.dmiDataOperations = dmiDataOperations; this.dmiModelOperations = dmiModelOperations; this.cpsModuleService = cpsModuleService; this.cpsDataService = cpsDataService; - this.cpsQueryService = cpsQueryService; this.cpsAdminService = cpsAdminService; this.objectMapper = objectMapper; } @Override - public DataNode getDataNode(final String cmHandle, final String xpath, - final FetchDescendantsOption fetchDescendantsOption) { - return cpsDataService - .getDataNode(NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME, cmHandle, xpath, fetchDescendantsOption); - } - - @Override - public Collection<DataNode> queryDataNodes(final String cmHandle, final String cpsPath, - final FetchDescendantsOption fetchDescendantsOption) { - return cpsQueryService - .queryDataNodes(NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME, cmHandle, cpsPath, fetchDescendantsOption); - } - - @Override - public void createDataNode(final String cmHandle, final String parentNodeXpath, final String jsonData) { - if (!StringUtils.hasText(parentNodeXpath) || "/".equals(parentNodeXpath)) { - cpsDataService.saveData(NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME, cmHandle, jsonData, NO_TIMESTAMP); - } else { - cpsDataService - .saveData(NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME, cmHandle, parentNodeXpath, jsonData, NO_TIMESTAMP); - } - } - - @Override - public void addListNodeElements(final String cmHandle, final String parentNodeXpath, final String jsonData) { - cpsDataService.saveListElements(NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME, cmHandle, parentNodeXpath, jsonData, - NO_TIMESTAMP); - } - - @Override - public void updateNodeLeaves(final String cmHandle, final String parentNodeXpath, final String jsonData) { - cpsDataService - .updateNodeLeaves(NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME, cmHandle, parentNodeXpath, jsonData, - NO_TIMESTAMP); - } - - @Override - public void replaceNodeTree(final String cmHandle, final String parentNodeXpath, final String jsonData) { - cpsDataService.replaceNodeTree(NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME, cmHandle, parentNodeXpath, jsonData, - NO_TIMESTAMP); - } - - @Override public void updateDmiRegistrationAndSyncModule(final DmiPluginRegistration dmiPluginRegistration) { dmiPluginRegistration.validateDmiPluginRegistration(); try { diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplModelSyncSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplModelSyncSpec.groovy index de60a01930..b7f059a7ce 100644 --- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplModelSyncSpec.groovy +++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplModelSyncSpec.groovy @@ -35,7 +35,7 @@ class NetworkCmProxyDataServiceImplModelSyncSpec extends Specification { def mockDmiModelOperations = Mock(DmiModelOperations) def objectUnderTest = new NetworkCmProxyDataServiceImpl(null, mockDmiModelOperations, - mockCpsModuleService, null, null, mockCpsAdminService, new ObjectMapper()) + mockCpsModuleService, null, mockCpsAdminService, new ObjectMapper()) def expectedDataspaceName = 'NFP-Operational' diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplRegistrationSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplRegistrationSpec.groovy index 304c08ae8d..90fcbfc612 100644 --- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplRegistrationSpec.groovy +++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplRegistrationSpec.groovy @@ -183,7 +183,7 @@ class NetworkCmProxyDataServiceImplRegistrationSpec extends Specification { def getObjectUnderTestWithModelSyncDisabled() { def objectUnderTest = Spy(new NetworkCmProxyDataServiceImpl(null, null, mockCpsModuleService, - mockCpsDataService, null, null, spyObjectMapper)) + mockCpsDataService, null, spyObjectMapper)) objectUnderTest.syncModulesAndCreateAnchor(*_) >> null return objectUnderTest } diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplSpec.groovy index 62492710e0..5753d7b675 100644 --- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplSpec.groovy +++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplSpec.groovy @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * Copyright (C) 2021 Nordix Foundation + * Copyright (C) 2021-2022 Nordix Foundation * Modifications Copyright (C) 2021 Pantheon.tech * Modifications Copyright (C) 2021 Bell Canada * ================================================================================ @@ -33,7 +33,6 @@ import com.fasterxml.jackson.databind.ObjectMapper import org.onap.cps.api.CpsAdminService import org.onap.cps.api.CpsDataService import org.onap.cps.api.CpsModuleService -import org.onap.cps.api.CpsQueryService import org.onap.cps.ncmp.api.impl.exception.NcmpException import org.onap.cps.ncmp.api.impl.operations.DmiDataOperations import org.onap.cps.spi.FetchDescendantsOption @@ -45,52 +44,16 @@ import spock.lang.Specification class NetworkCmProxyDataServiceImplSpec extends Specification { def mockCpsDataService = Mock(CpsDataService) - def mockCpsQueryService = Mock(CpsQueryService) def mockCpsModuleService = Mock(CpsModuleService) def mockCpsAdminService = Mock(CpsAdminService) def spyObjectMapper = Spy(ObjectMapper) def mockDmiDataOperations = Mock(DmiDataOperations) def objectUnderTest = new NetworkCmProxyDataServiceImpl(mockDmiDataOperations, null, - mockCpsModuleService, mockCpsDataService, mockCpsQueryService, mockCpsAdminService, spyObjectMapper) + mockCpsModuleService, mockCpsDataService, mockCpsAdminService, spyObjectMapper) - def cmHandle = 'some handle' - def noTimestamp = null def cmHandleXPath = "/dmi-registry/cm-handles[@id='testCmHandle']" - def expectedDataspaceName = 'NFP-Operational' - def 'Create full data node: #scenario.'() { - given: 'json data' - def jsonData = 'some json' - when: 'createDataNode is invoked' - objectUnderTest.createDataNode(cmHandle, xpath, jsonData) - then: 'save data is invoked once with the expected parameters' - 1 * mockCpsDataService.saveData(expectedDataspaceName, cmHandle, jsonData, noTimestamp) - where: 'following parameters were used' - scenario | xpath - 'no xpath' | '' - 'root level xpath' | '/' - } - - def 'Create child data node.'() { - given: 'json data and xpath' - def jsonData = 'some json' - def xpath = '/test-node' - when: 'create data node is invoked' - objectUnderTest.createDataNode(cmHandle, xpath, jsonData) - then: 'save data is invoked once with the expected parameters' - 1 * mockCpsDataService.saveData(expectedDataspaceName, cmHandle, xpath, jsonData, noTimestamp) - } - - def 'Add list-node elements.'() { - given: 'json data and xpath' - def jsonData = 'some json' - def xpath = '/test-node' - when: 'add list node element is invoked' - objectUnderTest.addListNodeElements(cmHandle, xpath, jsonData) - then: 'the save list elements is invoked once with the expected parameters' - 1 * mockCpsDataService.saveListElements(expectedDataspaceName, cmHandle, xpath, jsonData, noTimestamp) - } def 'Write resource data for pass-through running from dmi using POST #scenario cm handle properties.'() { given: 'a data node' @@ -133,14 +96,6 @@ class NetworkCmProxyDataServiceImplSpec extends Specification { exceptionThrown.details.contains('404') } - def 'Get data node.'() { - when: 'get data node is invoked' - objectUnderTest.getDataNode(cmHandle, 'some xpath', fetchDescendantsOption) - then: 'the persistence data service is called once with the correct parameters' - 1 * mockCpsDataService.getDataNode(expectedDataspaceName, cmHandle, 'some xpath', fetchDescendantsOption) - where: 'all fetch descendants options are supported' - fetchDescendantsOption << FetchDescendantsOption.values() - } def 'Get resource data for pass-through operational from dmi.'() { given: 'a data node' @@ -270,25 +225,6 @@ class NetworkCmProxyDataServiceImplSpec extends Specification { 1 * mockCpsAdminService.queryAnchorNames('NFP-Operational', ['some-module-name']) } - def 'Update data node leaves.'() { - given: 'json data and xpath' - def jsonData = 'some json' - def xpath = '/xpath' - when: 'update node leaves is invoked' - objectUnderTest.updateNodeLeaves(cmHandle, xpath, jsonData) - then: 'the persistence service is called once with the correct parameters' - 1 * mockCpsDataService.updateNodeLeaves(expectedDataspaceName, cmHandle, xpath, jsonData, noTimestamp) - } - - def 'Replace data node tree.'() { - given: 'json data and xpath' - def jsonData = 'some json' - def xpath = '/xpath' - when: 'replace node tree is invoked' - objectUnderTest.replaceNodeTree(cmHandle, xpath, jsonData) - then: 'the persistence service is called once with the correct parameters' - 1 * mockCpsDataService.replaceNodeTree(expectedDataspaceName, cmHandle, xpath, jsonData, noTimestamp) - } def 'Update resource data for pass-through running from dmi using POST #scenario cm handle properties.'() { given: 'a data node' @@ -331,17 +267,6 @@ class NetworkCmProxyDataServiceImplSpec extends Specification { 'UPDATE' | UPDATE || 'Not able to update resource data.' } - def 'Query data nodes by cps path with #fetchDescendantsOption.'() { - given: 'a cps path' - def cpsPath = '/cps-path' - when: 'query data nodes is invoked' - objectUnderTest.queryDataNodes(cmHandle, cpsPath, fetchDescendantsOption) - then: 'the persistence query service is called once with the correct parameters' - 1 * mockCpsQueryService.queryDataNodes(expectedDataspaceName, cmHandle, cpsPath, fetchDescendantsOption) - where: 'all fetch descendants options are supported' - fetchDescendantsOption << FetchDescendantsOption.values() - } - def getDataNode(boolean includeCmHandleProperties) { def dataNode = new DataNode() dataNode.leaves = ['dmi-service-name': 'testDmiService'] |