Feature 10910: Migration of Openstack based VM instances

Added feature support for Migration of Openstack based VM instances
from OSM

Change-Id: I7db836401c5b9fee71f032884064593135fb88d9
Signed-off-by: elumalai <deepika.e@tataelxsi.co.in>
diff --git a/osm_nbi/instance_topics.py b/osm_nbi/instance_topics.py
index 74815ca..787f6e1 100644
--- a/osm_nbi/instance_topics.py
+++ b/osm_nbi/instance_topics.py
@@ -28,6 +28,7 @@
     ns_scale,
     ns_update,
     nsi_instantiate,
+    ns_migrate,
 )
 from osm_nbi.base_topic import (
     BaseTopic,
@@ -1158,6 +1159,7 @@
         "update": ns_update,
         "scale": ns_scale,
         "terminate": ns_terminate,
+        "migrate": ns_migrate,
     }
 
     def __init__(self, db, fs, msg, auth):
diff --git a/osm_nbi/nbi.py b/osm_nbi/nbi.py
index ff2f6de..f57258f 100644
--- a/osm_nbi/nbi.py
+++ b/osm_nbi/nbi.py
@@ -85,6 +85,7 @@
                     terminate                                           O5
                     action                                              O
                     scale                                               O5
+                    migrate                                             O
                     heal                                                5
                     update                                              05
             /ns_lcm_op_occs                                     5       5
@@ -444,6 +445,10 @@
                         "METHODS": ("POST",),
                         "ROLE_PERMISSION": "ns_instances:id:instantiate:",
                     },
+                    "migrate": {
+                        "METHODS": ("POST",),
+                        "ROLE_PERMISSION": "ns_instances:id:migrate:",
+                    },
                     "action": {
                         "METHODS": ("POST",),
                         "ROLE_PERMISSION": "ns_instances:id:action:",
diff --git a/osm_nbi/resources_to_operations.yml b/osm_nbi/resources_to_operations.yml
index 1f75a5b..3c5ba3d 100644
--- a/osm_nbi/resources_to_operations.yml
+++ b/osm_nbi/resources_to_operations.yml
@@ -135,6 +135,8 @@
 
   "POST /nslcm/v1/ns_instances/<nsInstanceId>/scale": "ns_instances:id:scale:post"
 
+  "POST /nslcm/v1/ns_instances/<nsInstanceId>/migrate": "ns_instances:id:migrate:post"
+
   "GET /nslcm/v1/ns_lcm_op_occs": "ns_instances:opps:get"
 
   "GET /nslcm/v1/ns_lcm_op_occs/<nsLcmOpOccId>": "ns_instances:opps:id:get"
diff --git a/osm_nbi/validation.py b/osm_nbi/validation.py
index 5c75522..3373b84 100644
--- a/osm_nbi/validation.py
+++ b/osm_nbi/validation.py
@@ -526,6 +526,28 @@
     "additionalProperties": False,
 }
 
+ns_migrate = {
+    "title": "ns migrate input schema",
+    "$schema": "http://json-schema.org/draft-04/schema#",
+    "type": "object",
+    "properties": {
+        "lcmOperationType": string_schema,
+        "nsInstanceId": id_schema,
+        "vnfInstanceId": id_schema,
+        "migrateToHost": string_schema,
+        "vdu": {
+            "type": "object",
+                "properties": {
+                    "vduId": name_schema,
+                    "vduCountIndex": integer0_schema,
+                },
+                "required": ["vduId"],
+                "additionalProperties": False,
+        },
+    },
+    "required": ["vnfInstanceId"],
+    "additionalProperties": False
+}
 
 schema_version = {"type": "string", "enum": ["1.0"]}
 schema_type = {"type": "string"}