Clean-up of resources created in ODU workflows

Change-Id: Ib2051d5844841d6469a4dc3e854ff2ef88a36a87
Signed-off-by: garciadeblas <gerardo.garciadeblas@telefonica.com>
diff --git a/osm_lcm/odu_libs/cluster_mgmt.py b/osm_lcm/odu_libs/cluster_mgmt.py
index 8caed34..719c7a8 100644
--- a/osm_lcm/odu_libs/cluster_mgmt.py
+++ b/osm_lcm/odu_libs/cluster_mgmt.py
@@ -136,27 +136,6 @@
     )
     return workflow_name
 
-    # self.logger.info(f"Deleting secret {secret_name} in namespace {secret_namespace} ...")
-    # self._kubectl.delete_secret(name=secret_name, namespace=secret_namespace)
-    # self.logger.info("DONE")
-
-    # self.logger.info(f"Listing secrets in namespace {secret_namespace} ...")
-    # secret_list = self._kubectl.get_secrets(secret_namespace)
-    # # print(secret_list)
-    # for item in secret_list:
-    #     print(item.metadata.name)
-    # self.logger.info("DONE")
-
-    # self.logger.info(f"Deleting secrets in namespace {secret_namespace} ...")
-    # for item in secret_list:
-    #     print(f"Deleting {item.metadata.name} ...")
-    #     self._kubectl.delete_secret(
-    #         name=item.metadata.name,
-    #         namespace=secret_namespace,
-    #     )
-    #     self.logger.info("DELETED")
-    # self.logger.info("DONE")
-
 
 async def update_cluster(self, op_id, op_params, content):
     self.logger.info("Update cluster eks workflow Enter")
@@ -338,6 +317,30 @@
         return False, message
 
 
+async def clean_items_cluster_create(self, op_id, op_params, content):
+    self.logger.info("Clean items cluster_create Enter")
+    self.logger.info(f"Operation {op_id}. Params: {op_params}. Content: {content}")
+    items = {
+        "secrets": [
+            {
+                "name": f"secret-age-{content['cluster']['git_name'].lower()}",
+                "namespace": "osm-workflows",
+            }
+        ]
+    }
+    try:
+        await self.clean_items(items)
+        return True, "OK"
+    except Exception as e:
+        return False, f"Error while cleaning items: {e}"
+
+
+async def clean_items_cluster_update(self, op_id, op_params, content):
+    self.logger.info("Clean items cluster_update Enter")
+    self.logger.info(f"Operation {op_id}. Params: {op_params}. Content: {content}")
+    return await self.clean_items_cluster_create(op_id, op_params, content)
+
+
 async def check_create_cluster(self, op_id, op_params, content):
     self.logger.info(f"Operation {op_id}. Params: {op_params}. Content: {content}")
     return True, "OK"
diff --git a/osm_lcm/odu_libs/common.py b/osm_lcm/odu_libs/common.py
index 179135e..a435aa8 100644
--- a/osm_lcm/odu_libs/common.py
+++ b/osm_lcm/odu_libs/common.py
@@ -35,17 +35,16 @@
         self.logger.debug(f"secret_data_original={secret_value}")
         self.logger.debug(f"secret_data_received={returned_secret_value}")
         self.logger.info(
-            f"Result of secret comparison: {secret_value==returned_secret_value} ..."
+            f"Result of secret comparison: {secret_value==returned_secret_value}"
         )
 
     self.logger.info(
         f"Creating secret {secret_name} in namespace {secret_namespace} ..."
     )
     secret_data = {secret_key: base64.b64encode(secret_value.encode()).decode("utf-8")}
-    self.logger.info(f"Secret name: {secret_name}")
-    self.logger.info(f"Secret data {secret_data}")
-    self.logger.info(f"Namespace: {secret_namespace}")
-    self.logger.info("Calling N2VC kubectl to create secret...")
+    self.logger.info(
+        f"Calling N2VC kubectl to create secret. Namespace: {secret_namespace}. Secret name: {secret_name}. Secret data:{secret_data}."
+    )
     await self._kubectl.create_secret(
         name=secret_name,
         data=secret_data,
@@ -55,3 +54,15 @@
     self.logger.info(f"Secret {secret_name} CREATED")
 
     await check_secret(secret_name, secret_namespace, secret_key, secret_value)
+
+
+def delete_secret(self, secret_name, secret_namespace):
+    try:
+        self._kubectl.delete_secret(name=secret_name, namespace=secret_namespace)
+        self.logger.info(
+            f"Deleted secret {secret_name} in namespace {secret_namespace}"
+        )
+    except Exception as e:
+        self.logger.error(
+            f"Could not delete secret {secret_name} in namespace {secret_namespace}: {e}"
+        )
diff --git a/osm_lcm/odu_libs/vim_mgmt.py b/osm_lcm/odu_libs/vim_mgmt.py
index e82bc34..8014f0c 100644
--- a/osm_lcm/odu_libs/vim_mgmt.py
+++ b/osm_lcm/odu_libs/vim_mgmt.py
@@ -164,6 +164,7 @@
         secret_key,
         secret_value,
     )
+
     # Additional params for the workflow
     providerconfig_name = f"{vim_name}-config"
     provider_type = content["vim_type"]
@@ -203,6 +204,29 @@
     return workflow_name
 
 
+async def clean_items_cloud_credentials_create(self, op_id, op_params, content):
+    self.logger.info("Clean items cloud_credentials_create Enter")
+    items = {
+        "secrets": [
+            {
+                "name": f"create-providerconfig-{content['_id']}",
+                "namespace": "osm-workflows",
+            }
+        ]
+    }
+    try:
+        await self.clean_items(items)
+        return True, "OK"
+    except Exception as e:
+        return False, f"Error while cleaning items: {e}"
+
+
+async def clean_items_cloud_credentials_update(self, op_id, op_params, content):
+    self.logger.info("Clean items cloud_credentials_update Enter")
+    self.logger.info(f"Operation {op_id}. Params: {op_params}. Content: {content}")
+    return await self.clean_items_cloud_credentials_create(op_id, op_params, content)
+
+
 async def check_create_cloud_credentials(self, op_id, op_params, content):
     self.logger.info(f"Operation {op_id}. Params: {op_params}. Content: {content}")
     return True, "OK"