Check force delete option and delete from DB

Change-Id: I74fb2d7bf600b732900f6757862595e49b4ee023
Signed-off-by: yshah <shahithya.y@tataelxsi.co.in>
diff --git a/osm_lcm/k8s.py b/osm_lcm/k8s.py
index 58337ac..104515b 100644
--- a/osm_lcm/k8s.py
+++ b/osm_lcm/k8s.py
@@ -267,6 +267,17 @@
         else:
             return await self.check_dummy_operation(op_id, op_params, content)
 
+    def check_force_delete_and_delete_from_db(
+        self, _id, workflow_status, resource_status, force
+    ):
+        self.logger.info(
+            f" Force: {force} Workflow status: {workflow_status} Resource Status: {resource_status}"
+        )
+        if force and (not workflow_status or not resource_status):
+            self.db.del_one(self.db_collection, {"_id": _id})
+            return True
+        return False
+
     def decrypted_copy(self, content, fields=["age_pubkey", "age_privkey"]):
         # This deep copy is intended to be passed to ODU workflows.
         content_copy = copy.deepcopy(content)
@@ -658,6 +669,14 @@
         db_cluster["current_operation"] = None
         self.db.set_one("clusters", {"_id": db_cluster["_id"]}, db_cluster)
 
+        force = params.get("force", False)
+        if force:
+            force_delete_status = self.check_force_delete_and_delete_from_db(
+                cluster_id, workflow_status, resource_status, force
+            )
+            if force_delete_status:
+                return
+
         # To delete it from DB
         if db_cluster["state"] == "DELETED":
             self.delete_cluster(db_cluster)
@@ -1533,6 +1552,15 @@
                 "delete_profile", op_id, op_params, content
             )
 
+        force = params.get("force", False)
+        if force:
+            force_delete_status = self.check_force_delete_and_delete_from_db(
+                profile_id, workflow_status, resource_status, force
+            )
+            if force_delete_status:
+                return
+
+        self.logger.info(f"Resource status: {resource_status}")
         if resource_status:
             content["state"] = "DELETED"
             profile_type = self.profile_type_mapping[content["profile_type"]]
@@ -1613,6 +1641,14 @@
                 "delete_profile", op_id, op_params, content
             )
 
+        force = params.get("force", False)
+        if force:
+            force_delete_status = self.check_force_delete_and_delete_from_db(
+                profile_id, workflow_status, resource_status, force
+            )
+            if force_delete_status:
+                return
+
         if resource_status:
             content["state"] = "DELETED"
             profile_type = self.profile_type_mapping[content["profile_type"]]
@@ -1695,6 +1731,14 @@
                 "delete_profile", op_id, op_params, content
             )
 
+        force = params.get("force", False)
+        if force:
+            force_delete_status = self.check_force_delete_and_delete_from_db(
+                profile_id, workflow_status, resource_status, force
+            )
+            if force_delete_status:
+                return
+
         if resource_status:
             content["state"] = "DELETED"
             profile_type = self.profile_type_mapping[content["profile_type"]]
@@ -1777,6 +1821,14 @@
                 "delete_profile", op_id, op_params, content
             )
 
+        force = params.get("force", False)
+        if force:
+            force_delete_status = self.check_force_delete_and_delete_from_db(
+                profile_id, workflow_status, resource_status, force
+            )
+            if force_delete_status:
+                return
+
         if resource_status:
             content["state"] = "DELETED"
             profile_type = self.profile_type_mapping[content["profile_type"]]
@@ -1883,6 +1935,14 @@
                 "delete_oka", op_id, op_params, db_content
             )
 
+        force = params.get("force", False)
+        if force:
+            force_delete_status = self.check_force_delete_and_delete_from_db(
+                oka_id, workflow_status, resource_status, force
+            )
+            if force_delete_status:
+                return
+
         if resource_status:
             db_content["state"] == "DELETED"
             self.db.set_one(self.db_collection, {"_id": db_content["_id"]}, db_content)
@@ -2098,6 +2158,14 @@
                     "delete_ksus", op_id, ksu_params, db_ksu
                 )
 
+            force = params.get("force", False)
+            if force:
+                force_delete_status = self.check_force_delete_and_delete_from_db(
+                    db_ksu["_id"], workflow_status, resource_status, force
+                )
+                if force_delete_status:
+                    return
+
             if resource_status:
                 db_ksu["state"] == "DELETED"
                 self.db.set_one(self.db_collection, {"_id": db_ksu["_id"]}, db_ksu)