Implement DMI Registration (NCMP-Side)

Implementing registration of CM-Handles to NCMP from DMI

CM Handles are Written to fragment tables

Moved NetworkCmProxyDataServiceImplSpec.groovy as it was not in the same
package as the class it was testing. Meaning it didn't cover this when
it came to code coverage

Have included Json structure validation also within open api

Deprecating old API's along with old API Methods

Issue-ID: CPS-442

Change-Id: I819b9bf65280b1d968d3b75ca5ef2f9eb5617579
Signed-off-by: DylanB95EST <dylan.byrne@est.tech>
diff --git a/cps-ncmp-rest/docs/openapi/components.yaml b/cps-ncmp-rest/docs/openapi/components.yaml
index 26d55bf..9921041 100644
--- a/cps-ncmp-rest/docs/openapi/components.yaml
+++ b/cps-ncmp-rest/docs/openapi/components.yaml
@@ -29,14 +29,33 @@
           type: string
         details:
           type: string
-    MultipartFile:
-      required:
-        - file
+
+    RestDmiPluginRegistration:
+      type: object
       properties:
-        multipartFile:
+        dmiPlugin:
           type: string
-          description: multipartFile
-          format: binary
+          example: onap-dmi-plugin
+        createdCmHandles:
+          type: array
+          items:
+            $ref: '#/components/schemas/RestCmHandle'
+
+    RestCmHandle:
+      required:
+        - cmHandle
+      type: object
+      properties:
+        cmHandle:
+          type: string
+          example: cmHandle123
+        cmHandleProperties:
+            $ref: '#/components/schemas/RestCmHandleAdditionalProperties'
+    RestCmHandleAdditionalProperties:
+        type: object
+        additionalProperties:
+            type: string
+            example: system-001
 
   parameters:
     cmHandleInPath:
@@ -124,10 +143,7 @@
             type: object
     Created:
       description: Created
-      content:
-        text/plain:
-          schema:
-            type: string
+      content: {}
     NoContent:
       description: No Content
       content: {}
diff --git a/cps-ncmp-rest/docs/openapi/ncmproxy.yml b/cps-ncmp-rest/docs/openapi/ncmproxy.yml
index 6ed4f02..3ec7bfd 100755
--- a/cps-ncmp-rest/docs/openapi/ncmproxy.yml
+++ b/cps-ncmp-rest/docs/openapi/ncmproxy.yml
@@ -20,6 +20,7 @@
 nodeByCmHandleAndXpath:
   get:
     description: Get a node with an option to retrieve all the children for a given cm Handle
+    deprecated: true
     tags:
       - network-cm-proxy
     summary: Get a node given a cm Handle and xpath
@@ -43,6 +44,7 @@
 nodesByCmHandleAndCpsPath:
   get:
     description: Query nodes for the given cps path and cm Handle
+    deprecated: true
     tags:
       - network-cm-proxy
     summary: Query data nodes
@@ -66,6 +68,7 @@
 nodesByCmHandleAndXpath:
   post:
     description: Create a node with descendants for the given CM Handle; top level or under existing node (requires xpath)
+    deprecated: true
     tags:
       - network-cm-proxy
     summary: Create a node with descendants
@@ -93,6 +96,7 @@
 
   patch:
     description: Update node leaves for the given cps path and cm Handle
+    deprecated: true
     tags:
       - network-cm-proxy
     summary: Update node leaves
@@ -120,6 +124,7 @@
 
   put:
     description: Replace a node with descendants for the given cps path and cm Handle
+    deprecated: true
     tags:
       - network-cm-proxy
     summary: Replace a node with descendants
@@ -148,6 +153,7 @@
 listNodeByCmHandleAndXpath:
   post:
     description: Add one or more list-node child elements under existing node for the given CM Handle
+    deprecated: true
     tags:
       - network-cm-proxy
     summary: Add list-node child element(s)
@@ -172,3 +178,26 @@
         $ref: 'components.yaml#/components/responses/Forbidden'
       404:
         $ref: 'components.yaml#/components/responses/NotFound'
+
+updateDmiRegistration:
+  post:
+    description: Register a DMI Plugin with any new CM Handles.
+    tags:
+      - network-cm-proxy
+    summary: DMI notifies NCMP of new CM Handles
+    operationId: updateDmiPluginRegistration
+    requestBody:
+      required: true
+      content:
+        application/json:
+          schema:
+            $ref: 'components.yaml#/components/schemas/RestDmiPluginRegistration'
+    responses:
+      201:
+        $ref: 'components.yaml#/components/responses/Created'
+      400:
+        $ref: 'components.yaml#/components/responses/BadRequest'
+      401:
+        $ref: 'components.yaml#/components/responses/Unauthorized'
+      403:
+        $ref: 'components.yaml#/components/responses/Forbidden'
\ No newline at end of file
diff --git a/cps-ncmp-rest/docs/openapi/openapi.yml b/cps-ncmp-rest/docs/openapi/openapi.yml
index c77f9a7..64de922 100755
--- a/cps-ncmp-rest/docs/openapi/openapi.yml
+++ b/cps-ncmp-rest/docs/openapi/openapi.yml
@@ -36,3 +36,6 @@
 
   /v1/cm-handles/{cm-handle}/nodes:
     $ref: 'ncmproxy.yml#/nodesByCmHandleAndXpath'
+
+  /ncmp-dmi/v1/ch:
+    $ref: 'ncmproxy.yml#/updateDmiRegistration'
\ No newline at end of file