patch operation for ncmp running 92/126592/3
authortragait <rahul.tyagi@est.tech>
Thu, 13 Jan 2022 13:15:14 +0000 (13:15 +0000)
committertragait <rahul.tyagi@est.tech>
Fri, 21 Jan 2022 10:08:44 +0000 (10:08 +0000)
Signed-off-by: tragait <rahul.tyagi@est.tech>
Change-Id: Ib136291963a5d7f115c8637708a1d5a64c62c9f2
Issue-ID: CPS-641

cps-ncmp-rest/docs/openapi/components.yaml
cps-ncmp-rest/docs/openapi/ncmp.yml
cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java
cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/NetworkCmProxyDataService.java
cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java
csit/data/bookstorePatchExample.json [new file with mode: 0644]
csit/tests/ncmp-passthrough/ncmp-passthrough.robot

index d9bd49a..e63f9c0 100644 (file)
@@ -151,6 +151,50 @@ components:
                 - authors:
                     - Philip Pullman
 
+    dataSamplePatchRequest:
+      summary: Sample patch request
+      description: Sample patch request body
+      value:
+        ietf-restconf:yang-patch:
+          patch-id: patch-1
+          edit:
+            - edit-id: edit1
+              operation: merge
+              target: /
+              value:
+                test:bookstore:
+                  bookstore-name: Chapters
+                  categories:
+                    - code: '01'
+                      name: Science
+                      books:
+                        - authors:
+                            - Author1
+                            - Author2
+                    - code: '02'
+                      name: Arts
+                      books:
+                        - authors:
+                            - Author3
+            - edit-id: edit2
+              operation: merge
+              target: /
+              value:
+                test:bookstore:
+                  bookstore-name: Novels
+                  categories:
+                    - code: '03'
+                      name: History
+                      books:
+                        - authors:
+                            - Iain M. Banks
+                            - Ursula K. Le Guin
+                    - code: '04'
+                      name: Fiction
+                      books:
+                        - authors:
+                            - Philip Pullman
+
     dataSampleResponse:
         summary: Sample response
         description: Sample response for selecting 'sample 1'.
index 7845a34..75a5295 100755 (executable)
@@ -340,12 +340,12 @@ resourceDataForPassthroughRunning:
     requestBody:
       required: true
       content:
-        application/json:
+        '*/*':
           schema:
             type: object
           examples:
             dataSampleRequest:
-              $ref: 'components.yaml#/components/examples/dataSampleRequest'
+              $ref: 'components.yaml#/components/examples/dataSamplePatchRequest'
     responses:
       200:
         $ref: 'components.yaml#/components/responses/Ok'
index e3c457e..a6b09e8 100755 (executable)
@@ -204,9 +204,9 @@ public class NetworkCmProxyController implements NetworkCmProxyApi {
     public ResponseEntity<Object> patchResourceDataRunningForCmHandle(final String resourceIdentifier,
         final String cmHandle,
         final Object requestBody, final String contentType) {
-        networkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle(cmHandle,
+        final Object responseObject = networkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle(cmHandle,
             resourceIdentifier, PATCH, GSON.toJson(requestBody), contentType);
-        return new ResponseEntity<>(HttpStatus.OK);
+        return ResponseEntity.ok(responseObject);
     }
 
     /**
index ec816ed..ea34f95 100644 (file)
@@ -147,8 +147,9 @@ public interface NetworkCmProxyDataService {
      * @param operation required operation
      * @param requestBody request body to create resource
      * @param contentType content type in body
+     * @return {@code Object} return data
      */
-    void writeResourceDataPassThroughRunningForCmHandle(String cmHandle,
+    Object writeResourceDataPassThroughRunningForCmHandle(String cmHandle,
                                                         String resourceIdentifier,
                                                         OperationEnum operation,
                                                         String requestBody,
index 7ded95f..0ea6f39 100755 (executable)
@@ -194,12 +194,12 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService
     }
 
     @Override
-    public void writeResourceDataPassThroughRunningForCmHandle(final String cmHandle,
+    public Object writeResourceDataPassThroughRunningForCmHandle(final String cmHandle,
                                                                final String resourceIdentifier,
                                                                final OperationEnum operation,
                                                                final String requestData,
                                                                final String dataType) {
-        handleResponse(
+        return handleResponse(
             dmiDataOperations.writeResourceDataPassThroughRunningFromDmi(
                 cmHandle, resourceIdentifier, operation, requestData, dataType),
             "Not able to " + operation + " resource data.");
diff --git a/csit/data/bookstorePatchExample.json b/csit/data/bookstorePatchExample.json
new file mode 100644 (file)
index 0000000..039ea4b
--- /dev/null
@@ -0,0 +1,59 @@
+{
+  "ietf-restconf:yang-patch":{
+    "patch-id":"patch-1",
+    "edit":[
+      {
+        "edit-id":"edit1",
+        "operation":"merge",
+        "target":"/",
+        "value":{
+          "bookstore": {
+            "categories": [
+              {
+                "code": "100",
+                "books": [
+                  {
+                    "title": "A new book in a new category",
+                    "pub_year": "2019",
+                    "authors": [
+                      "Rahul"
+                    ],
+                    "lang": "English",
+                    "price": "2011"
+                  }
+                ],
+                "name": "Category100"
+              }
+            ]
+          }
+        }
+      },
+      {
+        "edit-id":"edit2",
+        "operation":"merge",
+        "target":"/",
+        "value":{
+          "bookstore": {
+            "categories": [
+              {
+                "code": "02",
+                "name": "Horror",
+                "books": [
+                  {
+                    "title": "A New book in existing category",
+                    "lang": "English",
+                    "authors": [
+                      "Joe & Rahul"
+                    ],
+                    "pub_year": "2003",
+                    "price": "2000"
+                  }
+                ]
+              }
+            ]
+          }
+        }
+      }
+    ]
+  }
+}
\ No newline at end of file
index 36350ad..1d977b9 100644 (file)
@@ -116,3 +116,24 @@ Verify delete to bookstore using passthrough-running removed only category 01
             Should Be Equal As Strings              "${item['name']}"  "Horror"
         END
     END
+
+Patch will add new category with new book and add a new book to an existing category
+    ${uri}=              Set Variable       ${ncmpBasePath}/v1/ch/PNFDemo/data/ds/ncmp-datastore:passthrough-running?resourceIdentifier=stores:bookstore
+    ${headers}=          Create Dictionary  Content-Type=application/yang.patch+json   Authorization=${auth}
+    ${jsonData}=         Get Binary File    ${DATADIR}${/}bookstorePatchExample.json
+    ${response}=         PATCH On Session   CPS_URL   ${uri}   headers=${headers}   data=${jsonData}
+    Should Be Equal As Strings              ${response.status_code}   200
+    ${verifyUri}=       Set Variable        ${ncmpBasePath}/v1/ch/PNFDemo/data/ds/ncmp-datastore:passthrough-running?resourceIdentifier=stores:bookstore/categories=100
+    ${verifyHeaders}=    Create Dictionary  Authorization=${auth}
+    ${verifyResponse}=   Get On Session     CPS_URL   ${verifyUri}   headers=${verifyHeaders}
+    ${responseJson}=    Set Variable        ${verifyResponse.json()}
+    Should Be Equal As Strings              ${verifyResponse.status_code}   200
+    FOR   ${item}   IN  @{responseJson['stores:categories']}
+        IF   "${item['code']}" == "100"
+            Should Be Equal As Strings              "${item['name']}"  "Category100"
+        END
+    END
+    ${verifyUri}=       Set Variable       ${ncmpBasePath}/v1/ch/PNFDemo/data/ds/ncmp-datastore:passthrough-running?resourceIdentifier=stores:bookstore/categories=02/books=A%20New%20book%20in%20existing%20category
+    ${verifyResponse}=  Get On Session     CPS_URL   ${verifyUri}   headers=${verifyHeaders}
+    ${responseJson}=    Set Variable       ${verifyResponse.json()}
+    Should Be Equal As Strings             ${verifyResponse.status_code}   200
\ No newline at end of file