Patch operation passthrough running 66/125866/3
authorniamhcore <niamh.core@est.tech>
Wed, 24 Nov 2021 10:53:51 +0000 (10:53 +0000)
committerniamhcore <niamh.core@est.tech>
Fri, 26 Nov 2021 10:12:41 +0000 (10:12 +0000)
Issue-ID: CPS-640
Signed-off-by: niamhcore <niamh.core@est.tech>
Change-Id: I6badf241bbec265800d6b316da7ab8ad7782eb17

cps-ncmp-rest/docs/openapi/ncmp.yml
cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java
cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy
cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiRequestBody.java

index 611e84e..fdad1f5 100755 (executable)
@@ -289,6 +289,34 @@ resourceDataForPassthroughRunning:
       404:
         $ref: 'components.yaml#/components/responses/NotFound'
 
+  patch:
+    tags:
+      - network-cm-proxy
+    summary: Patch resource data from pass-through running
+    description: Patch resource data from pass-through running for the given cm handle
+    operationId: patchResourceDataRunningForCmHandle
+    parameters:
+      - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
+      - $ref: 'components.yaml#/components/parameters/resourceIdentifierInQuery'
+      - $ref: 'components.yaml#/components/parameters/contentParamInHeader'
+    requestBody:
+      required: true
+      content:
+        application/json:
+          schema:
+            type: object
+    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'
+
 fetchModuleReferencesByCmHandle:
   get:
     description: fetch all module references (name and revision) for a given cm handle
index 222957c..f95d4a2 100755 (executable)
@@ -23,6 +23,7 @@
 package org.onap.cps.ncmp.rest.controller;
 
 import static org.onap.cps.ncmp.api.impl.operations.DmiRequestBody.OperationEnum.CREATE;
+import static org.onap.cps.ncmp.api.impl.operations.DmiRequestBody.OperationEnum.PATCH;
 import static org.onap.cps.ncmp.api.impl.operations.DmiRequestBody.OperationEnum.UPDATE;
 
 import com.google.gson.Gson;
@@ -189,6 +190,15 @@ public class NetworkCmProxyController implements NetworkCmProxyApi {
         return ResponseEntity.ok(responseObject);
     }
 
+    @Override
+    public ResponseEntity<Object> patchResourceDataRunningForCmHandle(final String resourceIdentifier,
+        final String cmHandle,
+        final Object requestBody, final String contentType) {
+        networkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle(cmHandle,
+            resourceIdentifier, PATCH, requestBody.toString(), contentType);
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
+
     /**
      * Create resource data in datastore pass through running for given cm-handle.
      *
index 436f22b..4186bcd 100644 (file)
@@ -25,6 +25,7 @@ package org.onap.cps.ncmp.rest.controller
 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.get
@@ -301,5 +302,21 @@ class NetworkCmProxyControllerSpec extends Specification {
             response.contentAsString == '{"cmHandles":[]}'
     }
 
+    def 'Patch resource data in passthrough-running datastore.' () {
+        given: 'patch resource data url'
+            def url = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-running" +
+                    "?resourceIdentifier=parent/child"
+        when: 'patch data resource request is performed'
+            def response = mvc.perform(
+                    patch(url)
+                            .contentType(MediaType.APPLICATION_JSON)
+                            .accept(MediaType.APPLICATION_JSON).content('{"some-key" : "some-value"}')
+            ).andReturn().response
+        then: 'ncmp service method to update resource is called'
+            1 * mockNetworkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle('testCmHandle',
+                    'parent/child', PATCH, '{some-key=some-value}', 'application/json;charset=UTF-8')
+        and: 'the response status is OK'
+            response.status == HttpStatus.OK.value()
+    }
 }
 
index 13cfdce..a635f0b 100644 (file)
@@ -37,7 +37,8 @@ public class DmiRequestBody {
     public enum OperationEnum {
         READ("read"),
         CREATE("create"),
-        UPDATE("update");
+        UPDATE("update"),
+        PATCH("patch");
         private String value;
 
         OperationEnum(final String value) {