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_workflows.py b/osm_lcm/odu_workflows.py
index c992f17..cb59d6b 100644
--- a/osm_lcm/odu_workflows.py
+++ b/osm_lcm/odu_workflows.py
@@ -45,10 +45,12 @@
self._workflows = {
"create_cluster": {
"workflow_function": self.create_cluster,
+ "clean_function": self.clean_items_cluster_create,
"check_resource_function": self.check_create_cluster,
},
"update_cluster": {
"workflow_function": self.update_cluster,
+ "clean_function": self.clean_items_cluster_update,
"check_resource_function": self.check_update_cluster,
},
"delete_cluster": {
@@ -113,10 +115,12 @@
},
"create_cloud_credentials": {
"workflow_function": self.create_cloud_credentials,
+ "clean_function": self.clean_items_cloud_credentials_create,
"check_resource_function": self.check_create_cloud_credentials,
},
"update_cloud_credentials": {
"workflow_function": self.update_cloud_credentials,
+ "clean_function": self.clean_items_cloud_credentials_update,
"check_resource_function": self.check_update_cloud_credentials,
},
"delete_cloud_credentials": {
@@ -140,6 +144,8 @@
create_cloud_credentials,
update_cloud_credentials,
delete_cloud_credentials,
+ clean_items_cloud_credentials_create,
+ clean_items_cloud_credentials_update,
check_create_cloud_credentials,
check_update_cloud_credentials,
check_delete_cloud_credentials,
@@ -150,6 +156,8 @@
delete_cluster,
register_cluster,
deregister_cluster,
+ clean_items_cluster_create,
+ clean_items_cluster_update,
check_create_cluster,
check_update_cluster,
check_delete_cluster,
@@ -194,7 +202,10 @@
render_jinja_template,
render_yaml_template,
)
- from osm_lcm.odu_libs.common import create_secret
+ from osm_lcm.odu_libs.common import (
+ create_secret,
+ delete_secret,
+ )
async def launch_workflow(self, key, op_id, op_params, content):
self.logger.info(
@@ -204,6 +215,14 @@
self.logger.info("workflow function : {}".format(workflow_function))
return await workflow_function(op_id, op_params, content)
+ async def clean_items_workflow(self, key, op_id, op_params, content):
+ self.logger.info(
+ f"Cleaning items created during workflow launch. Key: {key}. Operation: {op_id}. Params: {op_params}. Content: {content}"
+ )
+ clean_items_function = self._workflows[key]["clean_function"]
+ self.logger.info("clean items function : {}".format(clean_items_function))
+ return await clean_items_function(op_id, op_params, content)
+
async def dummy_operation(self, op_id, op_params, content):
self.logger.info("Empty operation status Enter")
self.logger.info(f"Operation {op_id}. Params: {op_params}. Content: {content}")
@@ -220,3 +239,17 @@
async def check_dummy_operation(self, op_id, op_params, content):
self.logger.info(f"Operation {op_id}. Params: {op_params}. Content: {content}")
return True, "OK"
+
+ async def clean_items(self, items):
+ # Delete secrets
+ for secret in items.get("secrets", []):
+ name = secret["name"]
+ namespace = secret["namespace"]
+ self.logger.info(f"Deleting secret {name} in namespace {namespace}")
+ self.delete_secret(name, namespace)
+ # Delete pvcs
+ for pvc in items.get("pvcs", []):
+ name = pvc["name"]
+ namespace = pvc["namespace"]
+ self.logger.info(f"Deleting pvc {name} in namespace {namespace}")
+ await self._kubectl.delete_pvc(name, namespace)