aboutsummaryrefslogtreecommitdiffstats
path: root/cps-ncmp-rest
diff options
context:
space:
mode:
authorniamhcore <niamh.core@est.tech>2021-09-29 16:43:35 +0100
committerniamhcore <niamh.core@est.tech>2021-10-06 10:03:15 +0100
commitfd2e6ddde2c2260951e2dfd5e3fd7f4bd04976e1 (patch)
tree1ba737d69631d3ab620c90e99964b68d72fd1317 /cps-ncmp-rest
parentfdcb36fa9db642df3c47637d32f4e7ac5dd347e8 (diff)
Changing resource identifier to a query param
*Update dmi operations to build dmi url using query param Issue-ID: CPS-679 Signed-off-by: niamhcore <niamh.core@est.tech> Change-Id: I2292507c5057837932f8e21f1a8e80721066b336
Diffstat (limited to 'cps-ncmp-rest')
-rw-r--r--cps-ncmp-rest/docs/openapi/components.yaml20
-rwxr-xr-xcps-ncmp-rest/docs/openapi/ncmproxy.yml6
-rwxr-xr-xcps-ncmp-rest/docs/openapi/openapi.yml4
-rwxr-xr-xcps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java15
-rw-r--r--cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy28
5 files changed, 47 insertions, 26 deletions
diff --git a/cps-ncmp-rest/docs/openapi/components.yaml b/cps-ncmp-rest/docs/openapi/components.yaml
index ffb8dde11..560c945dd 100644
--- a/cps-ncmp-rest/docs/openapi/components.yaml
+++ b/cps-ncmp-rest/docs/openapi/components.yaml
@@ -104,13 +104,27 @@ components:
schema:
type: string
default: /
- resourceIdentifierInPath:
+ resourceIdentifierInQuery:
name: resourceIdentifier
- in: path
- description: Resource identifier to get/set the resource data
+ in: query
+ description: The format of resource identifier depend on the associated DMI Plugin implementation. For ONAP DMI Plugin it will be RESTConf paths but it can really be anything.
required: true
+ allowReserved: true
schema:
type: string
+ examples:
+ sample1:
+ value:
+ resourceIdentifier: \parent\child
+ sample2:
+ value:
+ resourceIdentifier: \parent\listElement[key=value]
+ sample3:
+ value:
+ resourceIdentifier: \parent\listElement[key=value]\grandChild
+ sample4:
+ value:
+ resourceIdentifier: parent=1,child=abc
acceptParamInHeader:
name: Accept
in: header
diff --git a/cps-ncmp-rest/docs/openapi/ncmproxy.yml b/cps-ncmp-rest/docs/openapi/ncmproxy.yml
index 2e5eba754..263c76c13 100755
--- a/cps-ncmp-rest/docs/openapi/ncmproxy.yml
+++ b/cps-ncmp-rest/docs/openapi/ncmproxy.yml
@@ -211,7 +211,7 @@ getResourceDataForPassthroughOperational:
operationId: getResourceDataOperationalForCmHandle
parameters:
- $ref: 'components.yaml#/components/parameters/cmHandleInPath'
- - $ref: 'components.yaml#/components/parameters/resourceIdentifierInPath'
+ - $ref: 'components.yaml#/components/parameters/resourceIdentifierInQuery'
- $ref: 'components.yaml#/components/parameters/acceptParamInHeader'
- $ref: 'components.yaml#/components/parameters/fieldsParamInQuery'
- $ref: 'components.yaml#/components/parameters/depthParamInQuery'
@@ -236,7 +236,7 @@ resourceDataForPassthroughRunning:
operationId: getResourceDataRunningForCmHandle
parameters:
- $ref: 'components.yaml#/components/parameters/cmHandleInPath'
- - $ref: 'components.yaml#/components/parameters/resourceIdentifierInPath'
+ - $ref: 'components.yaml#/components/parameters/resourceIdentifierInQuery'
- $ref: 'components.yaml#/components/parameters/acceptParamInHeader'
- $ref: 'components.yaml#/components/parameters/fieldsParamInQuery'
- $ref: 'components.yaml#/components/parameters/depthParamInQuery'
@@ -259,7 +259,7 @@ resourceDataForPassthroughRunning:
operationId: createResourceDataRunningForCmHandle
parameters:
- $ref: 'components.yaml#/components/parameters/cmHandleInPath'
- - $ref: 'components.yaml#/components/parameters/resourceIdentifierInPath'
+ - $ref: 'components.yaml#/components/parameters/resourceIdentifierInQuery'
- $ref: 'components.yaml#/components/parameters/contentParamInHeader'
requestBody:
required: true
diff --git a/cps-ncmp-rest/docs/openapi/openapi.yml b/cps-ncmp-rest/docs/openapi/openapi.yml
index 12356b588..1620eba2f 100755
--- a/cps-ncmp-rest/docs/openapi/openapi.yml
+++ b/cps-ncmp-rest/docs/openapi/openapi.yml
@@ -41,10 +41,10 @@ paths:
/v1/ch:
$ref: 'ncmproxy.yml#/updateDmiRegistration'
- /v1/ch/{cm-handle}/data/ds/ncmp-datastore:passthrough-operational/{resourceIdentifier}:
+ /v1/ch/{cm-handle}/data/ds/ncmp-datastore:passthrough-operational:
$ref: 'ncmproxy.yml#/getResourceDataForPassthroughOperational'
- /v1/ch/{cm-handle}/data/ds/ncmp-datastore:passthrough-running/{resourceIdentifier}:
+ /v1/ch/{cm-handle}/data/ds/ncmp-datastore:passthrough-running:
$ref: 'ncmproxy.yml#/resourceDataForPassthroughRunning'
/v1/ch/{cm-handle}/modules:
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 a4d94cebf..0a1a6419e 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
@@ -27,7 +27,6 @@ import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.util.Collection;
import javax.validation.Valid;
-import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import org.onap.cps.ncmp.api.NetworkCmProxyDataService;
import org.onap.cps.ncmp.api.models.DmiPluginRegistration;
@@ -167,8 +166,8 @@ public class NetworkCmProxyController implements NetworkCmProxyApi {
public ResponseEntity<Object> getResourceDataOperationalForCmHandle(final String cmHandle,
final String resourceIdentifier,
final String accept,
- final @Valid String fields,
- final @Min(1) @Valid Integer depth) {
+ final String fields,
+ final Integer depth) {
final Object responseObject = networkCmProxyDataService.getResourceDataOperationalForCmHandle(cmHandle,
resourceIdentifier,
accept,
@@ -191,8 +190,8 @@ public class NetworkCmProxyController implements NetworkCmProxyApi {
public ResponseEntity<Object> getResourceDataRunningForCmHandle(final String cmHandle,
final String resourceIdentifier,
final String accept,
- final @Valid String fields,
- final @Min(1) @Valid Integer depth) {
+ final String fields,
+ final Integer depth) {
final Object responseObject = networkCmProxyDataService.getResourceDataPassThroughRunningForCmHandle(cmHandle,
resourceIdentifier,
accept,
@@ -205,15 +204,15 @@ public class NetworkCmProxyController implements NetworkCmProxyApi {
* Create resource data in datastore pass through running
* for given cm-handle.
*
- * @param cmHandle cm handle identifier
* @param resourceIdentifier resource identifier
+ * @param cmHandle cm handle identifier
* @param requestBody requestBody
* @param contentType content type of body
* @return {@code ResponseEntity} response from dmi plugi
*/
@Override
- public ResponseEntity<Void> createResourceDataRunningForCmHandle(final String cmHandle,
- final String resourceIdentifier,
+ public ResponseEntity<Void> createResourceDataRunningForCmHandle(final String resourceIdentifier,
+ final String cmHandle,
final String requestBody,
final String contentType) {
networkCmProxyDataService.createResourceDataPassThroughRunningForCmHandle(cmHandle,
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 9f2b4e19a..d62ae93b0 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
@@ -193,7 +193,7 @@ class NetworkCmProxyControllerSpec extends Specification {
def 'Get Resource Data from pass-through operational.' () {
given: 'resource data url'
def getUrl = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-operational" +
- "/testResourceIdentifier?fields=testFields&depth=5"
+ "?resourceIdentifier=parent/child&fields=testFields&depth=5"
when: 'get data resource request is performed'
def response = mvc.perform(
get(getUrl)
@@ -202,7 +202,7 @@ class NetworkCmProxyControllerSpec extends Specification {
).andReturn().response
then: 'the NCMP data service is called with getResourceDataOperationalForCmHandle'
1 * mockNetworkCmProxyDataService.getResourceDataOperationalForCmHandle('testCmHandle',
- 'testResourceIdentifier',
+ 'parent/child',
'application/json',
'testFields',
5)
@@ -210,16 +210,16 @@ class NetworkCmProxyControllerSpec extends Specification {
response.status == HttpStatus.OK.value()
}
- def 'Get Resource Data from pass-through running.' () {
+ def 'Get Resource Data from pass-through running with #scenario value in resource identifier param.' () {
given: 'resource data url'
def getUrl = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-running" +
- "/testResourceIdentifier?fields=testFields&depth=5"
+ "?resourceIdentifier=" + resourceIdentifier + "&fields=testFields&depth=5"
and: 'ncmp service returns json object'
mockNetworkCmProxyDataService.getResourceDataPassThroughRunningForCmHandle('testCmHandle',
- 'testResourceIdentifier',
- 'application/json',
- 'testFields',
- 5) >> '{valid-json}'
+ resourceIdentifier,
+ 'application/json',
+ 'testFields',
+ 5) >> '{valid-json}'
when: 'get data resource request is performed'
def response = mvc.perform(
get(getUrl)
@@ -230,12 +230,20 @@ class NetworkCmProxyControllerSpec extends Specification {
response.status == HttpStatus.OK.value()
and: 'response contains valid object body'
response.getContentAsString() == '{valid-json}'
+ where: 'tokens are used in the resource identifier parameter'
+ scenario | resourceIdentifier
+ '/' | 'id/with/slashes'
+ '?' | 'idWith?'
+ ',' | 'idWith,'
+ '=' | 'idWith='
+ '[]' | 'idWith[]'
+ '? needs to be encoded as %3F' | 'idWith%3F'
}
def 'Create Resource Data from pass-through running with #scenario.' () {
given: 'resource data url'
def getUrl = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-running" +
- "/testResourceIdentifier"
+ "?resourceIdentifier=parent/child"
when: 'get data resource request is performed'
def response = mvc.perform(
post(getUrl)
@@ -244,7 +252,7 @@ class NetworkCmProxyControllerSpec extends Specification {
).andReturn().response
then: 'ncmp service method to create resource called'
1 * mockNetworkCmProxyDataService.createResourceDataPassThroughRunningForCmHandle('testCmHandle',
- 'testResourceIdentifier', requestBody, 'application/json;charset=UTF-8')
+ 'parent/child', requestBody, 'application/json;charset=UTF-8')
and: 'resource is created'
response.status == HttpStatus.CREATED.value()
where: 'given request body'