summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorputhuparambil.aditya <aditya.puthuparambil@bell.ca>2022-03-29 11:22:31 +0100
committerputhuparambil.aditya <aditya.puthuparambil@bell.ca>2022-04-04 12:06:34 +0100
commit39450c583c097c3b083ca79a39c5f99a218f6cdc (patch)
treea975b082dbf11e6536c6fc5bee09215d830a3224
parent15bbf1487764bbfeaffcaa6a4a4beaea69f50d1e (diff)
[dmi-plugin] Fix getResourceDataForPassthroughOperational endpoint
Get endpoint only accepts application/json. Issue-ID: CPS-957 Change-Id: I7b9dd00f293f183dc76623c8e32699e8e90fd17c Signed-off-by: puthuparambil.aditya <aditya.puthuparambil@bell.ca>
-rw-r--r--docs/api/swagger/openapi.yaml18
-rw-r--r--openapi/components.yml27
-rw-r--r--openapi/openapi.yml3
-rw-r--r--src/main/java/org/onap/cps/ncmp/dmi/rest/controller/DmiRestController.java6
-rw-r--r--src/main/java/org/onap/cps/ncmp/dmi/service/DmiService.java3
-rw-r--r--src/main/java/org/onap/cps/ncmp/dmi/service/DmiServiceImpl.java4
-rw-r--r--src/main/java/org/onap/cps/ncmp/dmi/service/operation/SdncOperations.java13
-rw-r--r--src/test/groovy/org/onap/cps/ncmp/dmi/rest/controller/DmiRestControllerSpec.groovy13
-rw-r--r--src/test/groovy/org/onap/cps/ncmp/dmi/service/DmiServiceImplSpec.groovy20
-rw-r--r--src/test/groovy/org/onap/cps/ncmp/dmi/service/operation/SdncOperationsSpec.groovy15
10 files changed, 42 insertions, 80 deletions
diff --git a/docs/api/swagger/openapi.yaml b/docs/api/swagger/openapi.yaml
index 59e1021d..f41e5132 100644
--- a/docs/api/swagger/openapi.yaml
+++ b/docs/api/swagger/openapi.yaml
@@ -177,15 +177,6 @@ paths:
schema:
type: string
example: my-schema:my-node
- - name: accept
- in: header
- description: Accept parameter for response, if accept parameter is null, that
- means client can accept any format.
- schema:
- type: string
- enum:
- - application/json
- - application/yang-data+json
- name: options
in: query
description: options parameter in query, it is mandatory to wrap key(s)=value(s)
@@ -268,15 +259,6 @@ paths:
schema:
type: string
example: my-schema:my-node
- - name: accept
- in: header
- description: Accept parameter for response, if accept parameter is null, that
- means client can accept any format.
- schema:
- type: string
- enum:
- - application/json
- - application/yang-data+json
- name: options
in: query
description: options parameter in query, it is mandatory to wrap key(s)=value(s)
diff --git a/openapi/components.yml b/openapi/components.yml
index bf91cd23..c317ba76 100644
--- a/openapi/components.yml
+++ b/openapi/components.yml
@@ -1,3 +1,22 @@
+# ============LICENSE_START=======================================================
+# Copyright (C) 2021 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.
+# 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=========================================================
+
components:
schemas:
ErrorMessage:
@@ -158,14 +177,6 @@ components:
type: string
example: my-schema:my-node
- acceptParamInHeader:
- name: accept
- in: header
- description: Accept parameter for response, if accept parameter is null, that means client can accept any format.
- schema:
- type: string
- enum: [ application/json, application/yang-data+json ]
-
optionsParamInQuery:
name: options
in: query
diff --git a/openapi/openapi.yml b/openapi/openapi.yml
index e9772620..bae76394 100644
--- a/openapi/openapi.yml
+++ b/openapi/openapi.yml
@@ -1,5 +1,6 @@
# ============LICENSE_START=======================================================
# Copyright (C) 2021 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.
@@ -124,7 +125,6 @@ paths:
parameters:
- $ref: 'components.yml#/components/parameters/cmHandleInPath'
- $ref: 'components.yml#/components/parameters/resourceIdentifierInQuery'
- - $ref: 'components.yml#/components/parameters/acceptParamInHeader'
- $ref: 'components.yml#/components/parameters/optionsParamInQuery'
requestBody:
description: Operational body
@@ -158,7 +158,6 @@ paths:
parameters:
- $ref: 'components.yml#/components/parameters/cmHandleInPath'
- $ref: 'components.yml#/components/parameters/resourceIdentifierInQuery'
- - $ref: 'components.yml#/components/parameters/acceptParamInHeader'
- $ref: 'components.yml#/components/parameters/optionsParamInQuery'
requestBody:
content:
diff --git a/src/main/java/org/onap/cps/ncmp/dmi/rest/controller/DmiRestController.java b/src/main/java/org/onap/cps/ncmp/dmi/rest/controller/DmiRestController.java
index ed7c75b9..5544aeb3 100644
--- a/src/main/java/org/onap/cps/ncmp/dmi/rest/controller/DmiRestController.java
+++ b/src/main/java/org/onap/cps/ncmp/dmi/rest/controller/DmiRestController.java
@@ -1,6 +1,7 @@
/*
* ============LICENSE_START=======================================================
* Copyright (C) 2021 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.
@@ -93,7 +94,6 @@ public class DmiRestController implements DmiPluginApi, DmiPluginInternalApi {
* @param resourceIdentifier resource identifier to fetch data
* @param cmHandle cm handle identifier
* @param dataAccessRequest data Access Request
- * @param acceptParamInHeader accept header parameter
* @param optionsParamInQuery options query parameter
* @return {@code ResponseEntity} response entity
*/
@@ -102,12 +102,10 @@ public class DmiRestController implements DmiPluginApi, DmiPluginInternalApi {
final String cmHandle,
final @Valid DataAccessRequest
dataAccessRequest,
- final String acceptParamInHeader,
final @Valid String optionsParamInQuery) {
if (isReadOperation(dataAccessRequest)) {
final String resourceDataAsJson = dmiService.getResourceData(cmHandle,
resourceIdentifier,
- acceptParamInHeader,
optionsParamInQuery,
DmiService.RESTCONF_CONTENT_PASSTHROUGH_OPERATIONAL_QUERY_PARAM);
return ResponseEntity.ok(resourceDataAsJson);
@@ -120,13 +118,11 @@ public class DmiRestController implements DmiPluginApi, DmiPluginInternalApi {
final String cmHandle,
final @Valid DataAccessRequest
dataAccessRequest,
- final String acceptParamInHeader,
final @Valid String optionsParamInQuery) {
final String sdncResponse;
if (isReadOperation(dataAccessRequest)) {
sdncResponse = dmiService.getResourceData(cmHandle,
resourceIdentifier,
- acceptParamInHeader,
optionsParamInQuery,
DmiService.RESTCONF_CONTENT_PASSTHROUGH_RUNNING_QUERY_PARAM);
} else {
diff --git a/src/main/java/org/onap/cps/ncmp/dmi/service/DmiService.java b/src/main/java/org/onap/cps/ncmp/dmi/service/DmiService.java
index 0f3fcc0c..e5b08d9a 100644
--- a/src/main/java/org/onap/cps/ncmp/dmi/service/DmiService.java
+++ b/src/main/java/org/onap/cps/ncmp/dmi/service/DmiService.java
@@ -1,6 +1,7 @@
/*
* ============LICENSE_START=======================================================
* Copyright (C) 2021 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.
@@ -70,14 +71,12 @@ public interface DmiService {
*
* @param cmHandle cm handle identifier
* @param resourceIdentifier resource identifier
- * @param acceptParamInHeader accept header parameter
* @param optionsParamInQuery options query parameter
* @param restconfContentQueryParam restconf content i.e. datastore to use
* @return {@code Object} response from network function
*/
String getResourceData(@NotNull String cmHandle,
@NotNull String resourceIdentifier,
- String acceptParamInHeader,
String optionsParamInQuery,
String restconfContentQueryParam);
diff --git a/src/main/java/org/onap/cps/ncmp/dmi/service/DmiServiceImpl.java b/src/main/java/org/onap/cps/ncmp/dmi/service/DmiServiceImpl.java
index 38b044db..22d47442 100644
--- a/src/main/java/org/onap/cps/ncmp/dmi/service/DmiServiceImpl.java
+++ b/src/main/java/org/onap/cps/ncmp/dmi/service/DmiServiceImpl.java
@@ -1,7 +1,7 @@
/*
* ============LICENSE_START=======================================================
* Copyright (C) 2021 Nordix Foundation
- * Modifications Copyright (C) 2021 Bell Canada
+ * Modifications Copyright (C) 2021-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.
@@ -150,13 +150,11 @@ public class DmiServiceImpl implements DmiService {
@Override
public String getResourceData(final String cmHandle,
final String resourceIdentifier,
- final String acceptParamInHeader,
final String optionsParamInQuery,
final String restconfContentQueryParam) {
final ResponseEntity<String> responseEntity = sdncOperations.getResouceDataForOperationalAndRunning(cmHandle,
resourceIdentifier,
optionsParamInQuery,
- acceptParamInHeader,
restconfContentQueryParam);
return prepareAndSendResponse(responseEntity, cmHandle);
}
diff --git a/src/main/java/org/onap/cps/ncmp/dmi/service/operation/SdncOperations.java b/src/main/java/org/onap/cps/ncmp/dmi/service/operation/SdncOperations.java
index c6e221e3..7e2443e5 100644
--- a/src/main/java/org/onap/cps/ncmp/dmi/service/operation/SdncOperations.java
+++ b/src/main/java/org/onap/cps/ncmp/dmi/service/operation/SdncOperations.java
@@ -1,7 +1,7 @@
/*
* ============LICENSE_START=======================================================
* Copyright (C) 2021-2022 Nordix Foundation
- * Modifications Copyright (C) 2021 Bell Canada
+ * Modifications Copyright (C) 2021-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.
@@ -127,23 +127,16 @@ public class SdncOperations {
* @param nodeId network resource identifier
* @param resourceId resource identifier
* @param optionsParamInQuery fields query
- * @param acceptParamInHeader accept parameter
* @param restConfContentQueryParam restConf content query param
* @return {@code ResponseEntity} response entity
*/
public ResponseEntity<String> getResouceDataForOperationalAndRunning(final String nodeId,
final String resourceId,
final String optionsParamInQuery,
- final String acceptParamInHeader,
final String restConfContentQueryParam) {
final String getResourceDataUrl = prepareResourceDataUrl(nodeId,
- resourceId,
- buildQueryParamMap(optionsParamInQuery, restConfContentQueryParam));
- final HttpHeaders httpHeaders = new HttpHeaders();
- if (acceptParamInHeader != null && !acceptParamInHeader.isBlank()) {
- httpHeaders.set(HttpHeaders.ACCEPT, acceptParamInHeader);
- }
- return sdncRestconfClient.getOperation(getResourceDataUrl, httpHeaders);
+ resourceId, buildQueryParamMap(optionsParamInQuery, restConfContentQueryParam));
+ return sdncRestconfClient.getOperation(getResourceDataUrl);
}
/**
diff --git a/src/test/groovy/org/onap/cps/ncmp/dmi/rest/controller/DmiRestControllerSpec.groovy b/src/test/groovy/org/onap/cps/ncmp/dmi/rest/controller/DmiRestControllerSpec.groovy
index ac632bb2..b42eb4d2 100644
--- a/src/test/groovy/org/onap/cps/ncmp/dmi/rest/controller/DmiRestControllerSpec.groovy
+++ b/src/test/groovy/org/onap/cps/ncmp/dmi/rest/controller/DmiRestControllerSpec.groovy
@@ -1,7 +1,7 @@
/*
* ============LICENSE_START=======================================================
* Copyright (C) 2021 Nordix Foundation
- * Modifications Copyright (C) 2021 Bell Canada
+ * Modifications Copyright (C) 2021-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.
@@ -183,15 +183,13 @@ class DmiRestControllerSpec extends Specification {
def json = '{"cmHandleProperties" : { "prop1" : "value1", "prop2" : "value2"}}'
when: 'get resource data POST api is invoked'
def response = mvc.perform(
- post(getResourceDataForCmHandleUrl).contentType(MediaType.APPLICATION_JSON)
- .accept(MediaType.APPLICATION_JSON).content(json)
+ post(getResourceDataForCmHandleUrl).contentType(MediaType.APPLICATION_JSON).content(json)
).andReturn().response
then: 'response status is ok'
response.status == OK.value()
and: 'dmi service called with get resource data'
1 * mockDmiService.getResourceData('some-cmHandle',
'parent/child',
- 'application/json',
'(fields=myfields,depth=5)',
'content=all')
}
@@ -203,8 +201,7 @@ class DmiRestControllerSpec extends Specification {
def jsonData = TestUtils.getResourceFileContent('createDataWithNormalChar.json')
when: 'get resource data POST api is invoked'
def response = mvc.perform(
- post(getResourceDataForCmHandleUrl).contentType(MediaType.APPLICATION_JSON)
- .accept(MediaType.APPLICATION_JSON).content(jsonData)
+ post(getResourceDataForCmHandleUrl).contentType(MediaType.APPLICATION_JSON).content(jsonData)
).andReturn().response
then: 'response status is bad request'
response.status == BAD_REQUEST.value()
@@ -265,15 +262,13 @@ class DmiRestControllerSpec extends Specification {
def json = '{"cmHandleProperties" : { "prop1" : "value1", "prop2" : "value2"}}'
when: 'get resource data POST api is invoked'
def response = mvc.perform(
- post(getResourceDataForCmHandleUrl).contentType(MediaType.APPLICATION_JSON)
- .accept(MediaType.APPLICATION_JSON).content(json)
+ post(getResourceDataForCmHandleUrl).contentType(MediaType.APPLICATION_JSON).content(json)
).andReturn().response
then: 'response status is ok'
response.status == OK.value()
and: 'dmi service called with get resource data for a cm handle'
1 * mockDmiService.getResourceData('some-cmHandle',
resourceIdentifier,
- 'application/json',
'(fields=myfields,depth=5)',
'content=config')
where: 'tokens are used in the resource identifier parameter'
diff --git a/src/test/groovy/org/onap/cps/ncmp/dmi/service/DmiServiceImplSpec.groovy b/src/test/groovy/org/onap/cps/ncmp/dmi/service/DmiServiceImplSpec.groovy
index edf1a80a..e38d5c37 100644
--- a/src/test/groovy/org/onap/cps/ncmp/dmi/service/DmiServiceImplSpec.groovy
+++ b/src/test/groovy/org/onap/cps/ncmp/dmi/service/DmiServiceImplSpec.groovy
@@ -1,7 +1,7 @@
/*
* ============LICENSE_START=======================================================
* Copyright (C) 2021 Nordix Foundation
- * Modifications Copyright (C) 2021 Bell Canada
+ * Modifications Copyright (C) 2021-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.
@@ -198,15 +198,13 @@ class DmiServiceImplSpec extends Specification {
given: 'cm-handle, passthrough parameter, resourceId, accept header, fields, depth'
def cmHandle = 'testCmHandle'
def resourceId = 'testResourceId'
- def acceptHeaderParam = 'testAcceptParam'
def optionsParam = '(fields=x/y/z,depth=10,test=abc)'
def contentQuery = 'content=all'
and: 'sdnc operation returns OK response'
- mockSdncOperations.getResouceDataForOperationalAndRunning(cmHandle, resourceId, optionsParam, acceptHeaderParam, contentQuery) >> new ResponseEntity<>('response json', HttpStatus.OK)
+ mockSdncOperations.getResouceDataForOperationalAndRunning(cmHandle, resourceId, optionsParam, contentQuery) >> new ResponseEntity<>('response json', HttpStatus.OK)
when: 'get resource data from cm handles service method invoked'
def response = objectUnderTest.getResourceData(cmHandle,
- resourceId, acceptHeaderParam,
- optionsParam, contentQuery)
+ resourceId, optionsParam, contentQuery)
then: 'response have expected json'
response == 'response json'
}
@@ -215,15 +213,13 @@ class DmiServiceImplSpec extends Specification {
given: 'cm-handle, passthrough parameter, resourceId, accept header, fields, depth, query param'
def cmHandle = 'testCmHandle'
def resourceId = 'testResourceId'
- def acceptHeaderParam = 'testAcceptParam'
def optionsParam = '(fields=x/y/z,depth=10,test=abc)'
def restConfQueryParam = 'content=config'
and: 'sdnc operation returns "NOT_FOUND" response'
- mockSdncOperations.getResouceDataForOperationalAndRunning(cmHandle, resourceId, optionsParam, acceptHeaderParam, _ as String) >> new ResponseEntity<>(HttpStatus.NOT_FOUND)
+ mockSdncOperations.getResouceDataForOperationalAndRunning(cmHandle, resourceId, optionsParam, _ as String) >> new ResponseEntity<>(HttpStatus.NOT_FOUND)
when: 'get resource data from cm handles service method invoked'
objectUnderTest.getResourceData(cmHandle,
- resourceId, acceptHeaderParam,
- optionsParam, restConfQueryParam)
+ resourceId, optionsParam, restConfQueryParam)
then: 'resource data not found'
thrown(ResourceDataNotFound.class)
}
@@ -232,16 +228,14 @@ class DmiServiceImplSpec extends Specification {
given: 'cm-handle, passthrough parameter, resourceId, accept header, fields, depth'
def cmHandle = 'testCmHandle'
def resourceId = 'testResourceId'
- def acceptHeaderParam = 'testAcceptParam'
def optionsParam = '(fields=x/y/z,depth=10,test=abc)'
def contentQuery = 'content=config'
and: 'sdnc operation returns OK response'
mockSdncOperations.getResouceDataForOperationalAndRunning(cmHandle, resourceId, optionsParam,
- acceptHeaderParam, contentQuery) >> new ResponseEntity<>('response json', HttpStatus.OK)
+ contentQuery) >> new ResponseEntity<>('response json', HttpStatus.OK)
when: 'get resource data from cm handles service method invoked'
def response = objectUnderTest.getResourceData(cmHandle,
- resourceId, acceptHeaderParam,
- optionsParam, contentQuery)
+ resourceId, optionsParam, contentQuery)
then: 'response have expected json'
response == 'response json'
}
diff --git a/src/test/groovy/org/onap/cps/ncmp/dmi/service/operation/SdncOperationsSpec.groovy b/src/test/groovy/org/onap/cps/ncmp/dmi/service/operation/SdncOperationsSpec.groovy
index c71f6d92..724d2d4e 100644
--- a/src/test/groovy/org/onap/cps/ncmp/dmi/service/operation/SdncOperationsSpec.groovy
+++ b/src/test/groovy/org/onap/cps/ncmp/dmi/service/operation/SdncOperationsSpec.groovy
@@ -1,7 +1,7 @@
/*
* ============LICENSE_START=======================================================
* Copyright (C) 2021-2022 Nordix Foundation
- * Modifications Copyright (C) 2021 Bell Canada
+ * Modifications Copyright (C) 2021-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.
@@ -117,19 +117,14 @@ class SdncOperationsSpec extends Specification {
1 * mockSdncRestClient.httpOperationWithJsonData(HttpMethod.POST, expectedUrl, 'some-json-data', _ as HttpHeaders)
}
- def 'Get resource data from node to SDNC. with#scenario accept header'() {
+ def 'Get resource data from node to SDNC.'() {
given: 'expected url, topology-id, sdncOperation object'
def expectedUrl = '/rests/data/network-topology:network-topology/topology=test-topology/node=node1/yang-ext:mount/testResourceId?a=1&b=2&content=testContent'
when: 'called get modules from node'
objectUnderTest.getResouceDataForOperationalAndRunning('node1', 'testResourceId',
- '(a=1,b=2)', acceptParamInHeader, 'content=testContent')
- then: 'the get operation is executed with the correct URL and Http headers'
- 1 * mockSdncRestClient.getOperation(expectedUrl, expectedHttpHeaders)
- where:
- scenario | acceptParamInHeader || expectedHttpHeaders
- 'test' | 'test' || new HttpHeaders([Accept:'test'])
- 'empty' | '' || new HttpHeaders()
- 'null' | null || new HttpHeaders()
+ '(a=1,b=2)', 'content=testContent')
+ then: 'the get operation is executed with the correct URL'
+ 1 * mockSdncRestClient.getOperation(expectedUrl)
}
def 'Write resource data with #scenario operation to SDNC.'() {