aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xcps-ncmp-rest/docs/openapi/ncmp.yml177
-rwxr-xr-xcps-ncmp-rest/docs/openapi/openapi.yml14
-rwxr-xr-xcps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java88
-rw-r--r--cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy113
-rw-r--r--cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/exceptions/NetworkCmProxyRestExceptionHandlerSpec.groovy18
-rw-r--r--cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/NetworkCmProxyDataService.java71
-rwxr-xr-xcps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java54
-rw-r--r--cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplModelSyncSpec.groovy2
-rw-r--r--cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplRegistrationSpec.groovy2
-rw-r--r--cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplSpec.groovy79
-rw-r--r--csit/tests/cps-model-sync/cps-model-sync.robot32
-rw-r--r--docs/api/swagger/ncmp/openapi.yaml356
12 files changed, 32 insertions, 974 deletions
diff --git a/cps-ncmp-rest/docs/openapi/ncmp.yml b/cps-ncmp-rest/docs/openapi/ncmp.yml
index 75a5295042..d80ec6508e 100755
--- a/cps-ncmp-rest/docs/openapi/ncmp.yml
+++ b/cps-ncmp-rest/docs/openapi/ncmp.yml
@@ -1,5 +1,5 @@
# ============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
# ================================================================================
@@ -17,181 +17,6 @@
#
# SPDX-License-Identifier: Apache-2.0
# ============LICENSE_END=========================================================
-
-nodeByCmHandleAndXpath:
- get:
- description: Get a node with an option to retrieve all the children for a given cm Handle
- deprecated: true
- tags:
- - network-cm-proxy
- summary: Get a node given a cm Handle and xpath
- operationId: getNodeByCmHandleAndXpath
- parameters:
- - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
- - $ref: 'components.yaml#/components/parameters/xpathInQuery'
- - $ref: 'components.yaml#/components/parameters/includeDescendantsOptionInQuery'
- responses:
- 200:
- $ref: 'components.yaml#/components/responses/Ok'
- 400:
- $ref: 'components.yaml#/components/responses/BadRequest'
- 401:
- $ref: 'components.yaml#/components/responses/Unauthorized'
- 403:
- $ref: 'components.yaml#/components/responses/Forbidden'
- 404:
- $ref: 'components.yaml#/components/responses/NotFound'
-
-nodesByCmHandleAndCpsPath:
- get:
- description: Query nodes for the given cps path and cm Handle
- deprecated: true
- tags:
- - network-cm-proxy
- summary: Query data nodes
- operationId: queryNodesByCmHandleAndCpsPath
- parameters:
- - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
- - $ref: 'components.yaml#/components/parameters/cpsPathInQuery'
- - $ref: 'components.yaml#/components/parameters/includeDescendantsOptionInQuery'
- responses:
- 200:
- $ref: 'components.yaml#/components/responses/Ok'
- 400:
- $ref: 'components.yaml#/components/responses/BadRequest'
- 401:
- $ref: 'components.yaml#/components/responses/Unauthorized'
- 403:
- $ref: 'components.yaml#/components/responses/Forbidden'
- 404:
- $ref: 'components.yaml#/components/responses/NotFound'
-
-nodesByCmHandleAndXpath:
- post:
- description: Create a node with descendants for the given CM Handle; top level or under existing node (requires xpath)
- deprecated: true
- tags:
- - network-cm-proxy
- summary: Create a node with descendants
- operationId: createNode
- parameters:
- - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
- - $ref: 'components.yaml#/components/parameters/xpathInQuery'
- requestBody:
- required: true
- content:
- application/json:
- schema:
- type: object
- examples:
- dataSampleRequest:
- $ref: 'components.yaml#/components/examples/dataSampleRequest'
- responses:
- 201:
- $ref: 'components.yaml#/components/responses/Created'
- 400:
- $ref: 'components.yaml#/components/responses/BadRequest'
- 401:
- $ref: 'components.yaml#/components/responses/Unauthorized'
- 403:
- $ref: 'components.yaml#/components/responses/Forbidden'
- 404:
- $ref: 'components.yaml#/components/responses/NotFound'
-
- patch:
- description: Update node leaves for the given cps path and cm Handle
- deprecated: true
- tags:
- - network-cm-proxy
- summary: Update node leaves
- operationId: updateNodeLeaves
- parameters:
- - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
- - $ref: 'components.yaml#/components/parameters/xpathInQuery'
- requestBody:
- required: true
- content:
- application/json:
- schema:
- type: object
- examples:
- dataSampleRequest:
- $ref: 'components.yaml#/components/examples/dataSampleRequest'
- responses:
- 200:
- $ref: 'components.yaml#/components/responses/Ok'
- 400:
- $ref: 'components.yaml#/components/responses/BadRequest'
- 401:
- $ref: 'components.yaml#/components/responses/Unauthorized'
- 403:
- $ref: 'components.yaml#/components/responses/Forbidden'
- 404:
- $ref: 'components.yaml#/components/responses/NotFound'
-
- put:
- description: Replace a node with descendants for the given cps path and cm Handle
- deprecated: true
- tags:
- - network-cm-proxy
- summary: Replace a node with descendants
- operationId: replaceNode
- parameters:
- - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
- - $ref: 'components.yaml#/components/parameters/xpathInQuery'
- requestBody:
- required: true
- content:
- application/json:
- schema:
- type: object
- examples:
- dataSampleRequest:
- $ref: 'components.yaml#/components/examples/dataSampleRequest'
- responses:
- 200:
- $ref: 'components.yaml#/components/responses/Ok'
- 400:
- $ref: 'components.yaml#/components/responses/BadRequest'
- 401:
- $ref: 'components.yaml#/components/responses/Unauthorized'
- 403:
- $ref: 'components.yaml#/components/responses/Forbidden'
- 404:
- $ref: 'components.yaml#/components/responses/NotFound'
-
-listNodeByCmHandleAndXpath:
- post:
- description: Add one or more list-node child elements under existing node for the given CM Handle
- deprecated: true
- tags:
- - network-cm-proxy
- summary: Add list-node child element(s)
- operationId: addListNodeElements
- parameters:
- - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
- - $ref: 'components.yaml#/components/parameters/requiredXpathInQuery'
- requestBody:
- required: true
- content:
- application/json:
- schema:
- type: object
- examples:
- dataSampleRequest:
- $ref: 'components.yaml#/components/examples/dataSampleRequest'
- responses:
- 201:
- $ref: 'components.yaml#/components/responses/Created'
- 400:
- $ref: 'components.yaml#/components/responses/BadRequest'
- 401:
- $ref: 'components.yaml#/components/responses/Unauthorized'
- 403:
- $ref: 'components.yaml#/components/responses/Forbidden'
- 404:
- $ref: 'components.yaml#/components/responses/NotFound'
-
getResourceDataForPassthroughOperational:
get:
tags:
diff --git a/cps-ncmp-rest/docs/openapi/openapi.yml b/cps-ncmp-rest/docs/openapi/openapi.yml
index 64a74c5933..838a0d08ed 100755
--- a/cps-ncmp-rest/docs/openapi/openapi.yml
+++ b/cps-ncmp-rest/docs/openapi/openapi.yml
@@ -1,5 +1,5 @@
# ============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
# ================================================================================
@@ -26,18 +26,6 @@ info:
servers:
- url: /ncmp
paths:
- /v1/cm-handles/{cm-handle}/node:
- $ref: 'ncmp.yml#/nodeByCmHandleAndXpath'
-
- /v1/cm-handles/{cm-handle}/list-node:
- $ref: 'ncmp.yml#/listNodeByCmHandleAndXpath'
-
- /v1/cm-handles/{cm-handle}/nodes/query:
- $ref: 'ncmp.yml#/nodesByCmHandleAndCpsPath'
-
- /v1/cm-handles/{cm-handle}/nodes:
- $ref: 'ncmp.yml#/nodesByCmHandleAndXpath'
-
/v1/ch/{cm-handle}/data/ds/ncmp-datastore:passthrough-operational:
$ref: 'ncmp.yml#/getResourceDataForPassthroughOperational'
diff --git a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java
index a6b09e845c..f2f43c9897 100755
--- a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java
+++ b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java
@@ -1,7 +1,7 @@
/*
* ============LICENSE_START=======================================================
* Copyright (C) 2021 Pantheon.tech
- * Modifications (C) 2021 Nordix Foundation
+ * Modifications (C) 2021-2022 Nordix Foundation
* Modification Copyright (C) 2021 highstreet technologies GmbH
* Modifications (C) 2021 Bell Canada
* ================================================================================
@@ -48,9 +48,6 @@ import org.onap.cps.ncmp.rest.model.Conditions;
import org.onap.cps.ncmp.rest.model.ModuleNameAsJsonObject;
import org.onap.cps.ncmp.rest.model.ModuleNamesAsJsonArray;
import org.onap.cps.ncmp.rest.model.ModuleReference;
-import org.onap.cps.spi.FetchDescendantsOption;
-import org.onap.cps.spi.model.DataNode;
-import org.onap.cps.utils.DataMapUtils;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -76,89 +73,6 @@ public class NetworkCmProxyController implements NetworkCmProxyApi {
}
/**
- * Create Node.
- * @deprecated This Method is no longer used as part of NCMP.
- */
- // All deprecated APIs methods will be address into https://jira.onap.org/browse/CPS-642
- @Override
- @Deprecated(forRemoval = false)
- public ResponseEntity<Void> createNode(final String cmHandle, @Valid final Object jsonData,
- @Valid final String parentNodeXpath) {
- networkCmProxyDataService.createDataNode(cmHandle, parentNodeXpath, GSON.toJson(jsonData));
- return new ResponseEntity<>(HttpStatus.CREATED);
- }
-
- /**
- * Add List-node Child Element.
- * @deprecated This Method is no longer used as part of NCMP.
- */
- // All deprecated APIs methods will be address into https://jira.onap.org/browse/CPS-642
- @Override
- @Deprecated(forRemoval = false)
- public ResponseEntity<Void> addListNodeElements(@NotNull @Valid final String parentNodeXpath,
- final String cmHandle, @Valid final Object jsonData) {
- networkCmProxyDataService.addListNodeElements(cmHandle, parentNodeXpath, GSON.toJson(jsonData));
- return new ResponseEntity<>(HttpStatus.CREATED);
- }
-
- /**
- * Get Node By CM Handle and X-Path.
- * @deprecated This Method is no longer used as part of NCMP.
- */
- // All deprecated APIs methods will be address into https://jira.onap.org/browse/CPS-642
- @Override
- @Deprecated(forRemoval = false)
- public ResponseEntity<Object> getNodeByCmHandleAndXpath(final String cmHandle, @Valid final String xpath,
- @Valid final Boolean includeDescendants) {
- final FetchDescendantsOption fetchDescendantsOption = Boolean.TRUE.equals(includeDescendants)
- ? FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS : FetchDescendantsOption.OMIT_DESCENDANTS;
- final var dataNode = networkCmProxyDataService.getDataNode(cmHandle, xpath, fetchDescendantsOption);
- return new ResponseEntity<>(DataMapUtils.toDataMap(dataNode), HttpStatus.OK);
- }
-
- /**
- * Query Data Nodes.
- * @deprecated This Method is no longer used as part of NCMP.
- */
- // All deprecated APIs methods will be address into https://jira.onap.org/browse/CPS-642
- @Override
- @Deprecated(forRemoval = false)
- public ResponseEntity<Object> queryNodesByCmHandleAndCpsPath(final String cmHandle, @Valid final String cpsPath,
- @Valid final Boolean includeDescendants) {
- final FetchDescendantsOption fetchDescendantsOption = Boolean.TRUE.equals(includeDescendants)
- ? FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS : FetchDescendantsOption.OMIT_DESCENDANTS;
- final Collection<DataNode> dataNodes =
- networkCmProxyDataService.queryDataNodes(cmHandle, cpsPath, fetchDescendantsOption);
- return new ResponseEntity<>(GSON.toJson(dataNodes), HttpStatus.OK);
- }
-
- /**
- * Replace Node With Descendants.
- * @deprecated This Method is no longer used as part of NCMP.
- */
- // All deprecated APIs methods will be address into https://jira.onap.org/browse/CPS-642
- @Override
- @Deprecated(forRemoval = false)
- public ResponseEntity<Object> replaceNode(final String cmHandle, @Valid final Object jsonData,
- @Valid final String parentNodeXpath) {
- networkCmProxyDataService.replaceNodeTree(cmHandle, parentNodeXpath, GSON.toJson(jsonData));
- return new ResponseEntity<>(HttpStatus.OK);
- }
-
- /**
- * Update Node Leaves.
- * @deprecated This Method is no longer used as part of NCMP.
- */
- // All deprecated APIs methods will be address into https://jira.onap.org/browse/CPS-642
- @Override
- @Deprecated(forRemoval = false)
- public ResponseEntity<Object> updateNodeLeaves(final String cmHandle, @Valid final Object jsonData,
- @Valid final String parentNodeXpath) {
- networkCmProxyDataService.updateNodeLeaves(cmHandle, parentNodeXpath, GSON.toJson(jsonData));
- return new ResponseEntity<>(HttpStatus.OK);
- }
-
- /**
* Get resource data from operational datastore.
*
* @param cmHandle cm handle identifier
diff --git a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy
index a3d8afaf24..b5dc2eabbb 100644
--- a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy
+++ b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2021 Pantheon.tech
* Modification Copyright (C) 2021 highstreet technologies GmbH
- * Modification Copyright (C) 2021 Nordix Foundation
+ * Modification Copyright (C) 2021-2022 Nordix Foundation
* Modification Copyright (C) 2021 Bell Canada.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -26,8 +26,6 @@ import org.onap.cps.TestUtils
import org.onap.cps.spi.model.ModuleReference
import static org.onap.cps.ncmp.api.impl.operations.DmiRequestBody.OperationEnum.PATCH
-import static org.onap.cps.spi.FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS
-import static org.onap.cps.spi.FetchDescendantsOption.OMIT_DESCENDANTS
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.patch
@@ -37,9 +35,7 @@ import static org.onap.cps.ncmp.api.impl.operations.DmiRequestBody.OperationEnum
import static org.onap.cps.ncmp.api.impl.operations.DmiRequestBody.OperationEnum.UPDATE
import static org.onap.cps.ncmp.api.impl.operations.DmiRequestBody.OperationEnum.DELETE
-import com.google.gson.Gson
import org.onap.cps.ncmp.api.NetworkCmProxyDataService
-import org.onap.cps.spi.model.DataNodeBuilder
import org.spockframework.spring.SpringBean
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.beans.factory.annotation.Value
@@ -61,115 +57,8 @@ class NetworkCmProxyControllerSpec extends Specification {
@Value('${rest.api.ncmp-base-path}/v1')
def ncmpBasePathV1
- def cmHandle = 'some handle'
- def xpath = 'some xpath'
def jsonString = '{"some-key":"some-value"}'
- def 'Query data node by cps path for the given cm handle with #scenario.'() {
- given: 'service method returns a list containing a data node'
- def dataNode = new DataNodeBuilder().withXpath('/xpath').build()
- def cpsPath = 'some cps-path'
- mockNetworkCmProxyDataService.queryDataNodes(cmHandle, cpsPath, expectedCpsDataServiceOption) >> [dataNode]
- and: 'the query endpoint'
- def dataNodeEndpoint = "$ncmpBasePathV1/cm-handles/$cmHandle/nodes/query"
- when: 'query data nodes API is invoked'
- def response = mvc.perform(get(dataNodeEndpoint)
- .param('cps-path', cpsPath)
- .param('include-descendants', includeDescendantsOption))
- .andReturn().response
- then: 'the response contains the the datanode in json format'
- response.status == HttpStatus.OK.value()
- def expectedJsonContent = new Gson().toJson(dataNode)
- response.getContentAsString().contains(expectedJsonContent)
- where: 'the following options for include descendants are provided in the request'
- scenario | includeDescendantsOption || expectedCpsDataServiceOption
- 'no descendants by default' | '' || OMIT_DESCENDANTS
- 'no descendant explicitly' | 'false' || OMIT_DESCENDANTS
- 'descendants' | 'true' || INCLUDE_ALL_DESCENDANTS
- }
-
- def 'Create data node: #scenario.'() {
- when: 'post request is performed'
- def response = mvc.perform(
- post("$ncmpBasePathV1/cm-handles/$cmHandle/nodes")
- .contentType(MediaType.APPLICATION_JSON)
- .content(jsonString)
- .param('xpath', reqXpath)
- ).andReturn().response
- then: 'the service method is invoked once with expected parameters'
- 1 * mockNetworkCmProxyDataService.createDataNode(cmHandle, usedXpath, jsonString)
- and: 'response status indicates success'
- response.status == HttpStatus.CREATED.value()
- where: 'following parameters were used'
- scenario | reqXpath || usedXpath
- 'no xpath parameter' | '' || '/'
- 'root xpath' | '/' || '/'
- 'parent node xpath' | '/xpath' || '/xpath'
- }
-
- def 'Add list-node elements.'() {
- given: ' parent node xpath'
- def parentNodeXpath = 'parent node xpath'
- when: 'post request is performed'
- def response = mvc.perform(
- post("$ncmpBasePathV1/cm-handles/$cmHandle/list-node")
- .contentType(MediaType.APPLICATION_JSON)
- .content(jsonString)
- .param('xpath', parentNodeXpath)
- ).andReturn().response
- then: 'the service method is invoked once with expected parameters'
- 1 * mockNetworkCmProxyDataService.addListNodeElements(cmHandle, parentNodeXpath, jsonString)
- and: 'response status indicates success'
- response.status == HttpStatus.CREATED.value()
- }
-
- def 'Update data node leaves.'() {
- given: 'the query endpoint'
- def endpoint = "$ncmpBasePathV1/cm-handles/$cmHandle/nodes"
- when: 'patch request is performed'
- def response = mvc.perform(
- patch(endpoint)
- .contentType(MediaType.APPLICATION_JSON)
- .content(jsonString)
- .param('xpath', xpath)
- ).andReturn().response
- then: 'the service method is invoked once with expected parameters'
- 1 * mockNetworkCmProxyDataService.updateNodeLeaves(cmHandle, xpath, jsonString)
- and: 'response status indicates success'
- response.status == HttpStatus.OK.value()
- }
-
- def 'Replace data node tree.'() {
- given: 'the query endpoint'
- def endpoint = "$ncmpBasePathV1/cm-handles/$cmHandle/nodes"
- when: 'put request is performed'
- def response = mvc.perform(
- put(endpoint)
- .contentType(MediaType.APPLICATION_JSON)
- .content(jsonString)
- .param('xpath', xpath)
- ).andReturn().response
- then: 'the service method is invoked once with expected parameters'
- 1 * mockNetworkCmProxyDataService.replaceNodeTree(cmHandle, xpath, jsonString)
- and: 'response status indicates success'
- response.status == HttpStatus.OK.value()
- }
-
- def 'Get data node.'() {
- given: 'the service returns a data node'
- def xpath = 'some xpath'
- def dataNode = new DataNodeBuilder().withXpath(xpath).withLeaves(["leaf": "value"]).build()
- mockNetworkCmProxyDataService.getDataNode(cmHandle, xpath, OMIT_DESCENDANTS) >> dataNode
- and: 'the query endpoint'
- def endpoint = "$ncmpBasePathV1/cm-handles/$cmHandle/node"
- when: 'get request is performed through REST API'
- def response = mvc.perform(get(endpoint).param('xpath', xpath)).andReturn().response
- then: 'a success response is returned'
- response.status == HttpStatus.OK.value()
- and: 'response contains expected leaf and value'
- response.contentAsString.contains('"leaf":"value"')
- }
-
def 'Get Resource Data from pass-through operational.' () {
given: 'resource data url'
def getUrl = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-operational" +
diff --git a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/exceptions/NetworkCmProxyRestExceptionHandlerSpec.groovy b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/exceptions/NetworkCmProxyRestExceptionHandlerSpec.groovy
index 3fcf818aff..f36a706937 100644
--- a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/exceptions/NetworkCmProxyRestExceptionHandlerSpec.groovy
+++ b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/exceptions/NetworkCmProxyRestExceptionHandlerSpec.groovy
@@ -1,7 +1,7 @@
/*
* ============LICENSE_START=======================================================
* Copyright (C) 2021 highstreet technologies GmbH
- * Modification Copyright (C) 2021 Nordix Foundation
+ * Modification Copyright (C) 2021-2022 Nordix Foundation
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -23,7 +23,6 @@ package org.onap.cps.ncmp.rest.exceptions
import groovy.json.JsonSlurper
import org.onap.cps.ncmp.api.NetworkCmProxyDataService
import org.onap.cps.ncmp.api.impl.exception.NcmpException
-import org.onap.cps.spi.FetchDescendantsOption
import org.onap.cps.spi.exceptions.CpsException
import org.spockframework.spring.SpringBean
import org.springframework.beans.factory.annotation.Autowired
@@ -55,9 +54,6 @@ class NetworkCmProxyRestExceptionHandlerSpec extends Specification {
@Shared
def errorDetails = 'some error details'
- def cmHandle = 'some handle'
- def xpath = 'some xpath'
-
def setup() {
dataNodeBaseEndpoint = "$basePath/v1"
}
@@ -75,18 +71,16 @@ class NetworkCmProxyRestExceptionHandlerSpec extends Specification {
'other' | new IllegalStateException(errorMessage) || null
}
- def setupTestException(exception) {
- mockNetworkCmProxyDataService.getDataNode(cmHandle, xpath, FetchDescendantsOption.OMIT_DESCENDANTS) >>
+ def setupTestException(exception){
+ mockNetworkCmProxyDataService.getYangResourcesModuleReferences('testCmHandle')>>
{ throw exception}
}
- def performTestRequest() {
- return mvc.perform(get("$dataNodeBaseEndpoint/cm-handles/$cmHandle/node").param('xpath', xpath))
- .andReturn().response
+ def performTestRequest(){
+ return mvc.perform(get("$dataNodeBaseEndpoint/ch/testCmHandle/modules")).andReturn().response
}
- static void assertTestResponse(response, expectedStatus,expectedErrorMessage,
- expectedErrorDetails) {
+ static void assertTestResponse(response, expectedStatus , expectedErrorMessage , expectedErrorDetails) {
assert response.status == expectedStatus.value()
def content = new JsonSlurper().parseText(response.contentAsString)
assert content['status'] == expectedStatus.toString()
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 ea34f957f8..5d2ab53394 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 0ea6f39645..240d6b5ca9 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']
diff --git a/csit/tests/cps-model-sync/cps-model-sync.robot b/csit/tests/cps-model-sync/cps-model-sync.robot
index 31931c16bf..0b9928bef8 100644
--- a/csit/tests/cps-model-sync/cps-model-sync.robot
+++ b/csit/tests/cps-model-sync/cps-model-sync.robot
@@ -1,6 +1,6 @@
/*
* ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation
+ * Copyright (C) 2021-2022 Nordix Foundation
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,38 +19,38 @@
*/
*** Settings ***
-Documentation NCMP-DMI - Registration & Model Sync
+Documentation NCMP
Library Collections
Library OperatingSystem
Library RequestsLibrary
Library BuiltIn
-Suite Setup Create Session DMI_URL http://${DMI_HOST}:${DMI_PORT}
+Suite Setup Create Session CPS_URL http://${CPS_CORE_HOST}:${CPS_CORE_PORT}
*** Variables ***
-${auth} Basic Y3BzdXNlcjpjcHNyMGNrcyE=
-${basePath} /dmi
+${auth} Basic Y3BzdXNlcjpjcHNyMGNrcyE=
+${ncmpInventoryBasePath} /ncmpInventory
+${ncmpBasePath} /ncmp
+${dmiUrl} http://${DMI_HOST}:${DMI_PORT}
+${jsonData} {"dmiPlugin":"${dmiUrl}","dmiDataPlugin":null,"dmiModelPlugin":null,"createdCmHandles":[{"cmHandle":"PNFDemo","cmHandleProperties":{"Book1":"Sci-Fi Book"},"publicCmHandleProperties":{"Contact":"storeemail@bookstore.com"}}],"updatedCmHandles":[{"cmHandle":"PNFDemo","cmHandleProperties":{"Book1":"Romance Book"},"publicCmHandleProperties":{"Contact":"newemailforstore@bookstore.com"}}]}
*** Test Cases ***
-Register node & sync models
- ${uri}= Set Variable ${basePath}/v1/inventory/cmHandles
+Register node, update data node and sync modules.
+ ${uri}= Set Variable ${ncmpInventoryBasePath}/v1/ch
${headers}= Create Dictionary Content-Type=application/json Authorization=${auth}
- ${jsonData}= Get Binary File ${DATADIR}${/}cmHandleRegistration.json
- ${response}= POST On Session DMI_URL ${uri} headers=${headers} data=${jsonData}
+ ${response}= POST On Session CPS_URL ${uri} headers=${headers} data=${jsonData}
Should Be Equal As Strings ${response.status_code} 201
-Verify Sync
- ${uri}= Set Variable ${basePath}/v1/ch/PNFDemo/modules
- ${headers}= Create Dictionary Content-Type=application/json Authorization=${auth}
- ${jsonData}= Get Binary File ${DATADIR}${/}postModuleRequestBody.json
- ${response}= POST On Session DMI_URL ${uri} headers=${headers} data=${jsonData}
+Get modules for registered data node
+ ${uri}= Set Variable ${ncmpBasePath}/v1/ch/PNFDemo/modules
+ ${headers}= Create Dictionary Authorization=${auth}
+ ${response}= GET On Session CPS_URL ${uri} headers=${headers}
${responseJson}= Set Variable ${response.json()}
Should Be Equal As Strings ${response.status_code} 200
- FOR ${item} IN @{responseJson['schemas']}
+ FOR ${item} IN @{responseJson}
IF "${item['moduleName']}" == "stores"
Should Be Equal As Strings "${item['revision']}" "2020-09-15"
- Should Be Equal As Strings "${item['namespace']}" "org:onap:ccsdk:sample"
END
END
diff --git a/docs/api/swagger/ncmp/openapi.yaml b/docs/api/swagger/ncmp/openapi.yaml
index 509adf469e..a3b9dc7501 100644
--- a/docs/api/swagger/ncmp/openapi.yaml
+++ b/docs/api/swagger/ncmp/openapi.yaml
@@ -6,362 +6,6 @@ info:
servers:
- url: /ncmp
paths:
- /v1/cm-handles/{cm-handle}/node:
- get:
- tags:
- - network-cm-proxy
- summary: Get a node given a cm Handle and xpath
- description: Get a node with an option to retrieve all the children for a given
- cm Handle
- operationId: getNodeByCmHandleAndXpath
- parameters:
- - name: cm-handle
- in: path
- description: "The identifier for a network function, network element, subnetwork\
- \ or any other cm object by managed Network CM Proxy"
- required: true
- schema:
- type: string
- - name: xpath
- in: query
- description: xpath
- required: false
- schema:
- type: string
- default: /
- - name: include-descendants
- in: query
- description: include-descendants
- required: false
- schema:
- type: boolean
- default: false
- responses:
- "200":
- description: OK
- content:
- application/json:
- schema:
- type: object
- "400":
- description: Bad Request
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorMessage'
- "401":
- description: Unauthorized
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorMessage'
- "403":
- description: Forbidden
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorMessage'
- "404":
- description: The specified resource was not found
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorMessage'
- deprecated: true
- /v1/cm-handles/{cm-handle}/list-node:
- post:
- tags:
- - network-cm-proxy
- summary: Add list-node child element(s)
- description: Add one or more list-node child elements under existing node for
- the given CM Handle
- operationId: addListNodeElements
- parameters:
- - name: cm-handle
- in: path
- description: "The identifier for a network function, network element, subnetwork\
- \ or any other cm object by managed Network CM Proxy"
- required: true
- schema:
- type: string
- - name: xpath
- in: query
- description: xpath
- required: true
- schema:
- type: string
- requestBody:
- content:
- application/json:
- schema:
- type: string
- required: true
- responses:
- "201":
- description: Created
- content: {}
- "400":
- description: Bad Request
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorMessage'
- "401":
- description: Unauthorized
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorMessage'
- "403":
- description: Forbidden
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorMessage'
- "404":
- description: The specified resource was not found
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorMessage'
- deprecated: true
- /v1/cm-handles/{cm-handle}/nodes/query:
- get:
- tags:
- - network-cm-proxy
- summary: Query data nodes
- description: Query nodes for the given cps path and cm Handle
- operationId: queryNodesByCmHandleAndCpsPath
- parameters:
- - name: cm-handle
- in: path
- description: "The identifier for a network function, network element, subnetwork\
- \ or any other cm object by managed Network CM Proxy"
- required: true
- schema:
- type: string
- - name: cps-path
- in: query
- description: cps-path
- required: false
- schema:
- type: string
- default: /
- - name: include-descendants
- in: query
- description: include-descendants
- required: false
- schema:
- type: boolean
- default: false
- responses:
- "200":
- description: OK
- content:
- application/json:
- schema:
- type: object
- "400":
- description: Bad Request
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorMessage'
- "401":
- description: Unauthorized
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorMessage'
- "403":
- description: Forbidden
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorMessage'
- "404":
- description: The specified resource was not found
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorMessage'
- deprecated: true
- /v1/cm-handles/{cm-handle}/nodes:
- put:
- tags:
- - network-cm-proxy
- summary: Replace a node with descendants
- description: Replace a node with descendants for the given cps path and cm Handle
- operationId: replaceNode
- parameters:
- - name: cm-handle
- in: path
- description: "The identifier for a network function, network element, subnetwork\
- \ or any other cm object by managed Network CM Proxy"
- required: true
- schema:
- type: string
- - name: xpath
- in: query
- description: xpath
- required: false
- schema:
- type: string
- default: /
- requestBody:
- content:
- application/json:
- schema:
- type: string
- required: true
- responses:
- "200":
- description: OK
- content:
- application/json:
- schema:
- type: object
- "400":
- description: Bad Request
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorMessage'
- "401":
- description: Unauthorized
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorMessage'
- "403":
- description: Forbidden
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorMessage'
- "404":
- description: The specified resource was not found
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorMessage'
- deprecated: true
- post:
- tags:
- - network-cm-proxy
- summary: Create a node with descendants
- description: Create a node with descendants for the given CM Handle; top level
- or under existing node (requires xpath)
- operationId: createNode
- parameters:
- - name: cm-handle
- in: path
- description: "The identifier for a network function, network element, subnetwork\
- \ or any other cm object by managed Network CM Proxy"
- required: true
- schema:
- type: string
- - name: xpath
- in: query
- description: xpath
- required: false
- schema:
- type: string
- default: /
- requestBody:
- content:
- application/json:
- schema:
- type: string
- required: true
- responses:
- "201":
- description: Created
- content: {}
- "400":
- description: Bad Request
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorMessage'
- "401":
- description: Unauthorized
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorMessage'
- "403":
- description: Forbidden
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorMessage'
- "404":
- description: The specified resource was not found
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorMessage'
- deprecated: true
- patch:
- tags:
- - network-cm-proxy
- summary: Update node leaves
- description: Update node leaves for the given cps path and cm Handle
- operationId: updateNodeLeaves
- parameters:
- - name: cm-handle
- in: path
- description: "The identifier for a network function, network element, subnetwork\
- \ or any other cm object by managed Network CM Proxy"
- required: true
- schema:
- type: string
- - name: xpath
- in: query
- description: xpath
- required: false
- schema:
- type: string
- default: /
- requestBody:
- content:
- application/json:
- schema:
- type: string
- required: true
- responses:
- "200":
- description: OK
- content:
- application/json:
- schema:
- type: object
- "400":
- description: Bad Request
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorMessage'
- "401":
- description: Unauthorized
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorMessage'
- "403":
- description: Forbidden
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorMessage'
- "404":
- description: The specified resource was not found
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ErrorMessage'
- deprecated: true
/v1/ch/{cm-handle}/data/ds/ncmp-datastore:passthrough-operational:
get:
tags: