Feature 11022,11025: Advanced Cluster Management

Change-Id: I4168366f79b11de15f6808977fb15a3ff270f519
Signed-off-by: yshah <shahithya.y@tataelxsi.co.in>
diff --git a/osm_nbi/engine.py b/osm_nbi/engine.py
index e419e8a..bac0802 100644
--- a/osm_nbi/engine.py
+++ b/osm_nbi/engine.py
@@ -60,6 +60,8 @@
     AppTopic,
     ResourceTopic,
     K8saddTopic,
+    KsusTopic,
+    OkaTopic,
 )
 from osm_nbi.vnf_instance_topics import VnfInstances, VnfLcmOpTopic
 from osm_nbi.pmjobs_topics import PmJobsTopic
@@ -106,6 +108,8 @@
         "apps": AppTopic,
         "resources": ResourceTopic,
         "k8sops": K8saddTopic,
+        "ksus": KsusTopic,
+        "oka_packages": OkaTopic,
         # [NEW_TOPIC]: add an entry here
         # "pm_jobs": PmJobsTopic will be added manually because it needs other parameters
     }
@@ -319,6 +323,51 @@
                 session, _id, indata, kwargs, headers
             )
 
+    def clone(
+        self, rollback, session, topic, _id, indata=None, kwargs=None, headers=None
+    ):
+        if topic not in self.map_topic:
+            raise EngineException(
+                "Unknown topic {}!!!".format(topic), HTTPStatus.INTERNAL_SERVER_ERROR
+            )
+        with self.write_lock:
+            return self.map_topic[topic].clone(
+                rollback, session, _id, indata, kwargs, headers
+            )
+
+    def move_ksu(self, session, topic, _id, indata=None, kwargs=None):
+        if topic not in self.map_topic:
+            raise EngineException(
+                "Unknown topic {}!!!".format(topic), HTTPStatus.INTERNAL_SERVER_ERROR
+            )
+
+        with self.write_lock:
+            return self.map_topic[topic].move_ksu(session, _id, indata, kwargs)
+
+    def get_cluster_info(self, session, topic, _id, item):
+        if topic not in self.map_topic:
+            raise EngineException(
+                "Unknown topic {}!!!".format(topic), HTTPStatus.INTERNAL_SERVER_ERROR
+            )
+        return self.map_topic[topic].get_cluster_info(session, _id, item)
+
+    def update_cluster(self, session, topic, _id, item, indata):
+        if topic not in self.map_topic:
+            raise EngineException(
+                "Unknown topic {}!!!".format(topic), HTTPStatus.INTERNAL_SERVER_ERROR
+            )
+        return self.map_topic[topic].update_cluster(session, _id, item, indata)
+
+    def delete_ksu(self, session, topic, _id, indata):
+        if topic not in self.map_topic:
+            raise EngineException(
+                "Unknown topic {}!!!".format(topic), HTTPStatus.INTERNAL_SERVER_ERROR
+            )
+        with self.write_lock:
+            return self.map_topic[topic].delete_ksu(
+                session, _id, indata, not_send_msg=None
+            )
+
     def get_item_list(self, session, topic, filter_q=None, api_req=False):
         """
         Get a list of items