revert cps:634 postpone this bug to jakarta 20/124020/3
authortragait <rahul.tyagi@est.tech>
Fri, 10 Sep 2021 09:45:31 +0000 (10:45 +0100)
committertragait <rahul.tyagi@est.tech>
Fri, 10 Sep 2021 11:12:18 +0000 (12:12 +0100)
This commit also have fix in application yaml for
correct ncmp api path for registration url.

Issue-ID: CPS-634
Issue-ID: CPS-617
Signed-off-by: tragait <rahul.tyagi@est.tech>
Change-Id: I465991492a01092e28b97583f84ed959c54ffaa6

docs/openapi/components.yml
src/main/java/org/onap/cps/ncmp/dmi/service/DmiService.java
src/main/java/org/onap/cps/ncmp/dmi/service/DmiServiceImpl.java
src/main/java/org/onap/cps/ncmp/dmi/service/client/NcmpRestClient.java
src/main/java/org/onap/cps/ncmp/dmi/service/client/SdncRestconfClient.java
src/main/resources/application.yml
src/test/groovy/org/onap/cps/ncmp/dmi/rest/controller/DmiRestControllerSpec.groovy
src/test/groovy/org/onap/cps/ncmp/dmi/service/DmiServiceImplSpec.groovy
src/test/groovy/org/onap/cps/ncmp/dmi/service/client/NcmpRestClientSpec.groovy
src/test/groovy/org/onap/cps/ncmp/dmi/service/client/SdncRestconfClientSpec.groovy
src/test/resources/WriteDataForCmHandle.json

index 3866b83..bac5f9c 100644 (file)
@@ -78,7 +78,7 @@ components:
         dataType:
           type: string
         data:
-          type: string
+          type: object
         cmHandleProperties:
           type: object
           additionalProperties:
index 7f79a04..f144608 100644 (file)
@@ -106,5 +106,5 @@ public interface DmiService {
      * @return response from sdnc
      */
     String writeResourceDataPassthroughForCmHandle(String cmHandle, String resourceIdentifier, String dataType,
-        String data);
+        Object data);
 }
\ No newline at end of file
index e9ecc59..2512ce2 100644 (file)
@@ -211,14 +211,23 @@ public class DmiServiceImpl implements DmiService {
 
     @Override
     public String writeResourceDataPassthroughForCmHandle(final String cmHandle, final String resourceIdentifier,
-        final String dataType, final String data) {
+        final String dataType, final Object data) {
+        final String jsonData;
+        try {
+            jsonData = objectMapper.writeValueAsString(data);
+        } catch (final JsonProcessingException e) {
+            log.error("JSON exception occurred when processing pass through request data for the given cmHandle {}",
+                    cmHandle);
+            throw new DmiException("Unable to process incoming JSON from the request body.",
+                    "JSON exception occurred when writing data for the given cmHandle " + cmHandle, e);
+        }
         final ResponseEntity<String> responseEntity =
-            sdncOperations.writeResourceDataPassthroughRunning(cmHandle, resourceIdentifier, dataType, data);
+                sdncOperations.writeResourceDataPassthroughRunning(cmHandle, resourceIdentifier, dataType, jsonData);
         if (responseEntity.getStatusCode() == HttpStatus.CREATED) {
             return responseEntity.getBody();
         } else {
             throw new DmiException(cmHandle,
-                RESPONSE_CODE + responseEntity.getStatusCode() + MESSAGE + responseEntity.getBody());
+                    RESPONSE_CODE + responseEntity.getStatusCode() + MESSAGE + responseEntity.getBody());
         }
     }
 
index 4765134..94783f3 100644 (file)
@@ -23,6 +23,7 @@ package org.onap.cps.ncmp.dmi.service.client;
 import org.onap.cps.ncmp.dmi.config.DmiConfiguration.CpsProperties;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
 import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
@@ -51,7 +52,7 @@ public class NcmpRestClient {
         httpHeaders.setBasicAuth(cpsProperties.getAuthUsername(), cpsProperties.getAuthPassword());
         httpHeaders.set(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE);
         final var httpEntity = new HttpEntity<>(jsonData, httpHeaders);
-        return restTemplate.postForEntity(ncmpRegistrationUrl, httpEntity, String.class);
+        return restTemplate.exchange(ncmpRegistrationUrl, HttpMethod.POST, httpEntity, String.class);
     }
 
     private String buildNcmpRegistrationUrl() {
index bbc39da..b8e33df 100644 (file)
@@ -79,6 +79,6 @@ public class SdncRestconfClient {
         final var sdncRestconfUrl = sdncBaseUrl.concat(postResourceUrl);
         httpHeaders.setBasicAuth(sdncProperties.getAuthUsername(), sdncProperties.getAuthPassword());
         final var httpEntity = new HttpEntity<>(jsonData, httpHeaders);
-        return restTemplate.postForEntity(sdncRestconfUrl, httpEntity, String.class);
+        return restTemplate.exchange(sdncRestconfUrl, HttpMethod.POST, httpEntity, String.class);
     }
 }
\ No newline at end of file
index 10297e7..4383e79 100644 (file)
@@ -54,7 +54,7 @@ management:
 
 cps-core:
   baseUrl: http://${CPS_CORE_HOST}:${CPS_CORE_PORT}
-  dmiRegistrationUrl : /cps-ncmp/api/ncmp-dmi/v1/ch
+  dmiRegistrationUrl : /ncmp/v1/ch
   auth:
     username: ${CPS_CORE_USERNAME}
     password: ${CPS_CORE_PASSWORD}
index c32608c..e08870f 100644 (file)
@@ -212,7 +212,7 @@ class DmiRestControllerSpec extends Specification {
             def writeDataforCmHandlePassthroughRunning = "${basePathV1}/ch/some-cmHandle/data/ds/ncmp-datastore:passthrough-running/some-resourceIdentifier"
             def jsonData = TestUtils.getResourceFileContent('WriteDataForCmHandle.json')
         and: 'dmi service is called'
-            mockDmiService.writeResourceDataPassthroughForCmHandle('some-cmHandle', 'some-resourceIdentifier', 'application/json',  '{ some data }') >> '{some-json}'
+            mockDmiService.writeResourceDataPassthroughForCmHandle('some-cmHandle', 'some-resourceIdentifier', 'application/json',  ['some-data': 'some-value']) >> '{some-json}'
         when: 'write cmHandle passthrough running post api is invoked with json data'
             def response = mvc.perform(
                     post(writeDataforCmHandlePassthroughRunning).contentType(MediaType.APPLICATION_JSON)
index 7891450..1d2cf7f 100644 (file)
@@ -266,7 +266,7 @@ class DmiServiceImplSpec extends Specification {
             mockObjectMapper.writeValueAsString(_) >> jsonString
         when: 'write resource data for pass through method is invoked'
             objectUnderTest.writeResourceDataPassthroughForCmHandle('some-cmHandle',
-                    'some-resourceIdentifier', 'some-dataType', 'some-json-data')
+                    'some-resourceIdentifier', 'some-dataType', new Object())
         then: 'a dmi exception is thrown'
             thrown(DmiException.class)
         where: 'the following combinations are tested'
index f5c059c..32df97b 100644 (file)
@@ -21,6 +21,7 @@
 package org.onap.cps.ncmp.dmi.service.client
 
 import org.onap.cps.ncmp.dmi.config.DmiConfiguration
+import org.springframework.http.HttpMethod
 import org.springframework.http.ResponseEntity
 import org.springframework.web.client.RestTemplate
 import spock.lang.Specification
@@ -48,8 +49,8 @@ class NcmpRestClientSpec extends Specification {
         when: 'register cm-handle with ncmp is invoked'
             def result = objectUnderTest.registerCmHandlesWithNcmp(jsonData)
         then: 'the rest template is called with the correct uri and json in the body'
-            1 * mockRestTemplate.postForEntity({ it.toString() == 'http://some-uri/some-url' },
-                    { it.body.contains(jsonData) }, String.class) >> mockResponseEntity
+            1 * mockRestTemplate.exchange({ it.toString() == 'http://some-uri/some-url' },
+                    HttpMethod.POST, { it.body.contains(jsonData) }, String.class) >> mockResponseEntity
         and: 'the output of the method is equal to the output from the test template'
             result == mockResponseEntity
     }
index b550480..2184c7e 100644 (file)
@@ -61,8 +61,8 @@ class SdncRestconfClientSpec extends Specification {
         when: 'get module resources is invoked'
             def result = objectUnderTest.postOperationWithJsonData(getModuleResourceUrl, jsonData, new HttpHeaders())
         then: 'the rest template is called with the correct uri and json in the body'
-            1 * mockRestTemplate.postForEntity({ it.toString() == 'http://some-uri/getModuleResourceUrl' },
-                    { it.body.contains(jsonData) }, String.class) >> mockResponseEntity
+            1 * mockRestTemplate.exchange({ it.toString() == 'http://some-uri/getModuleResourceUrl' },
+                    HttpMethod.POST, { it.body.contains(jsonData) }, String.class) >> mockResponseEntity
         and: 'the output of the method is the same as the output from the test template'
             result == mockResponseEntity
     }
index 178421f..8eb1959 100644 (file)
@@ -1,7 +1,9 @@
 {
   "operation": "create",
   "dataType": "application/json",
-  "data": "{ some data }",
+  "data": {
+    "some-data": "some-value"
+  },
   "cmHandleProperties": {
     "some-property": "some-property-value"
   }