Update get yang resource response body 18/124718/4
authorniamhcore <niamh.core@est.tech>
Thu, 7 Oct 2021 09:38:50 +0000 (10:38 +0100)
committerniamhcore <niamh.core@est.tech>
Fri, 8 Oct 2021 10:43:13 +0000 (11:43 +0100)
Issue-ID: CPS-706
Signed-off-by: niamhcore <niamh.core@est.tech>
Change-Id: Ic7045e873421ee5ce69e6e0400eeaa7a1d36eaf8

cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java
cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplSpec.groovy

index 291b0bf..2395fb5 100755 (executable)
@@ -59,7 +59,6 @@ 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.HttpStatus;
-import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
@@ -349,13 +348,13 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService
             cmHandleJsonData, NO_TIMESTAMP);
 
         for (final PersistenceCmHandle persistenceCmHandle : persistenceCmHandlesList.getPersistenceCmHandles()) {
-            createAnchorAndSyncModel(persistenceCmHandle);
+            syncModulesAndCreateAnchor(persistenceCmHandle);
         }
     }
 
-    protected void createAnchorAndSyncModel(final PersistenceCmHandle persistenceCmHandle) {
-        createAnchor(persistenceCmHandle);
+    protected void syncModulesAndCreateAnchor(final PersistenceCmHandle persistenceCmHandle) {
         fetchAndSyncModules(persistenceCmHandle);
+        createAnchor(persistenceCmHandle);
     }
 
     private static PersistenceCmHandle toPersistenceCmHandle(final String dmiPluginService,
@@ -417,14 +416,13 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService
 
     private List<ModuleReference> fetchModuleReferencesFromDmi(final PersistenceCmHandle persistenceCmHandle,
                                                                final Map<String, String> cmHandlePropertiesAsMap) {
-        final GenericRequestBody requestBodyObject = GenericRequestBody.builder()
-                .operation(GenericRequestBody.OperationEnum.READ)
+        final GenericRequestBody genericRequestBody = GenericRequestBody.builder()
                 .cmHandleProperties(cmHandlePropertiesAsMap)
                 .build();
-        final String jsonBody = prepareOperationBody(requestBodyObject);
+        final String jsonBodyWithOnlyCmHandleProperties = prepareOperationBody(genericRequestBody);
         final ResponseEntity<String> dmiFetchModulesResponseEntity =
             dmiOperations.getResourceFromDmiWithJsonData(persistenceCmHandle.getDmiServiceName(),
-                    jsonBody, persistenceCmHandle.getId(), "modules");
+                    jsonBodyWithOnlyCmHandleProperties, persistenceCmHandle.getId(), "modules");
         return toModuleReferences(dmiFetchModulesResponseEntity);
     }
 
@@ -437,13 +435,11 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService
         final JsonArray moduleReferencesAsJson = getModuleReferencesAsJson(unknownModuleReferences);
         final JsonObject data = new JsonObject();
         data.add("modules", moduleReferencesAsJson);
-        final GenericRequestBody dmiRequestBodyObject = GenericRequestBody.builder()
-                .operation(GenericRequestBody.OperationEnum.READ)
-                .dataType(MediaType.APPLICATION_JSON_VALUE)
-                .data(data.toString())
-                .cmHandleProperties(cmHandlePropertiesAsMap)
-                .build();
-        return prepareOperationBody(dmiRequestBodyObject);
+        final JsonObject jsonRequestObject = new JsonObject();
+        jsonRequestObject.add("data", data);
+        final Gson gson = new Gson();
+        jsonRequestObject.add("cmHandleProperties", gson.toJsonTree(cmHandlePropertiesAsMap));
+        return jsonRequestObject.toString();
     }
 
     private static JsonArray getModuleReferencesAsJson(final List<ModuleReference> unknownModuleReferences) {
@@ -461,12 +457,12 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService
     private Map<String, String> getNewYangResourcesFromDmi(final PersistenceCmHandle persistenceCmHandle,
                                                            final List<ModuleReference> unknownModuleReferences,
                                                            final Map<String, String> cmHandlePropertiesAsMap) {
-        final String jsonData = getRequestBodyToFetchYangResourceFromDmi(
+        final String jsonDataWithDataAndCmHandleProperties = getRequestBodyToFetchYangResourceFromDmi(
                 unknownModuleReferences, cmHandlePropertiesAsMap);
 
         final ResponseEntity<String> moduleResourcesAsJsonString =  dmiOperations.getResourceFromDmiWithJsonData(
                 persistenceCmHandle.getDmiServiceName(),
-                jsonData,
+                jsonDataWithDataAndCmHandleProperties,
                 persistenceCmHandle.getId(),
                 "moduleResources");
 
index 2b376e9..e38386f 100644 (file)
@@ -419,7 +419,7 @@ class NetworkCmProxyDataServiceImplSpec extends Specification {
             }
         and: 'dmi operations returns some module references'
             def jsonData = TestUtils.getResourceFileContent('cmHandleModules.json')
-            def expectedJsonBody = '{"operation":"read","cmHandleProperties":' + expectedJsonForAdditionalProperties + '}'
+            def expectedJsonBody = '{"cmHandleProperties":' + expectedJsonForAdditionalProperties + '}'
             mockDmiProperties.getAuthUsername() >> 'someUser'
             mockDmiProperties.getAuthPassword() >> 'somePassword'
             def moduleReferencesFromCmHandleAsJson = new ResponseEntity<String>(jsonData, HttpStatus.OK)
@@ -428,10 +428,10 @@ class NetworkCmProxyDataServiceImplSpec extends Specification {
             mockCpsModuleService.getYangResourceModuleReferences(_) >> [knownModule1, knownOtherModule]
         and: 'DMI-Plugin returns resource(s) for "new" module(s)'
             def moduleResources = new ResponseEntity<String>(sdncReponseBody, HttpStatus.OK)
-            def jsonDataToFetchYangResource = '{"operation":"read","dataType":"application/json","data":"{\\"modules\\":[{\\"name\\":\\"module2\\",\\"revision\\":\\"1\\"}]}","cmHandleProperties":' + expectedJsonForAdditionalProperties + '}'
+            def jsonDataToFetchYangResource = '{"data":{"modules":[{"name":"module2","revision":"1"}]},"cmHandleProperties":' + expectedJsonForAdditionalProperties + '}'
             mockDmiOperations.getResourceFromDmiWithJsonData('some service name', jsonDataToFetchYangResource, 'some cm handle', 'moduleResources') >> moduleResources
         when: 'module Sync is triggered'
-            objectUnderTest.createAnchorAndSyncModel(cmHandleForModelSync)
+            objectUnderTest.syncModulesAndCreateAnchor(cmHandleForModelSync)
         then: 'the CPS module service is called once with the correct parameters'
             1 * mockCpsModuleService.createSchemaSetFromModules(expectedDataspaceName, cmHandleForModelSync.getId(), expectedYangResourceToContentMap, [knownModule1])
         and: 'admin service create anchor method has been called with correct parameters'
@@ -451,10 +451,22 @@ class NetworkCmProxyDataServiceImplSpec extends Specification {
             1 * mockCpsModuleService.getYangResourcesModuleReferences('NFP-Operational','some cm handle')
     }
 
+    def 'Create the request body to get yang resources from DMI.'() {
+        given: 'the expected json request'
+            def expectedRequestBody = '{"data":{"modules":[{"name":"module1","revision":"1"},{"name":"module2","revision":"2"}]},"cmHandleProperties":{"name1":"value1"}}'
+        and: 'module references and cm handle properties'
+            def moduleReferences = [new ModuleReference('module1', '1'),new ModuleReference('module2', '2')]
+            def cmHandleProperties = ['name1':'value1']
+        when: 'get request body to fetch yang resources from DMI is called'
+            def result = objectUnderTest.getRequestBodyToFetchYangResourceFromDmi(moduleReferences, cmHandleProperties)
+        then: 'the result is the same as the expected request body'
+            result == expectedRequestBody
+    }
+
     def getObjectUnderTestWithModelSyncDisabled() {
         def objectUnderTest = Spy(new NetworkCmProxyDataServiceImpl(mockDmiOperations, mockCpsModuleService,
                 mockCpsDataService, mockCpsQueryService, mockCpsAdminService, spyObjectMapper))
-        objectUnderTest.createAnchorAndSyncModel(_) >> null
+        objectUnderTest.syncModulesAndCreateAnchor(_) >> null
         return objectUnderTest
     }