diff --git a/CI/config/common_test_config.yaml b/CI/config/common_test_config.yaml index b657c743..544d0961 100644 --- a/CI/config/common_test_config.yaml +++ b/CI/config/common_test_config.yaml @@ -2,6 +2,8 @@ kraken: distribution: kubernetes # Distribution can be kubernetes or openshift. kubeconfig_path: ~/.kube/config # Path to kubeconfig. exit_on_failure: False # Exit when a post action scenario fails. + auto_rollback: True # Enable auto rollback for scenarios. + rollback_versions_directory: /tmp/kraken-rollback # Directory to store rollback version files. chaos_scenarios: # List of policies/chaos scenarios to load. - $scenario_type: # List of chaos pod scenarios to load. - $scenario_file diff --git a/krkn/rollback/config.py b/krkn/rollback/config.py index 76277f16..8fe7c0d0 100644 --- a/krkn/rollback/config.py +++ b/krkn/rollback/config.py @@ -122,10 +122,15 @@ class RollbackConfig(metaclass=SingletonMeta): rollback_context_directories = [ dirname for dirname in os.listdir(cls().versions_directory) if run_uuid in dirname ] - if len(rollback_context_directories) != 1: - raise ValueError( + if not rollback_context_directories: + logger.warning(f"No rollback context directories found for run UUID {run_uuid}") + return [] + + if len(rollback_context_directories) > 1: + logger.warning( f"Expected one directory for run UUID {run_uuid}, found: {rollback_context_directories}" ) + rollback_context_directory = rollback_context_directories[0] version_files = [] diff --git a/krkn/rollback/handler.py b/krkn/rollback/handler.py index 01dd1998..b2b5336d 100644 --- a/krkn/rollback/handler.py +++ b/krkn/rollback/handler.py @@ -128,7 +128,10 @@ def execute_rollback_version_files(telemetry_ocp: "KrknTelemetryOpenshift", run_ # Get the rollback versions directory version_files = RollbackConfig.search_rollback_version_files(run_uuid, scenario_type) - + if not version_files: + logger.warning(f"Skip execution for run_uuid={run_uuid}, scenario_type={scenario_type or '*'}") + return + # Execute all version files in the directory logger.info(f"Executing rollback version files for run_uuid={run_uuid}, scenario_type={scenario_type or '*'}") for version_file in version_files: @@ -159,6 +162,9 @@ def cleanup_rollback_version_files(run_uuid: str, scenario_type: str): # Get the rollback versions directory version_files = RollbackConfig.search_rollback_version_files(run_uuid, scenario_type) + if not version_files: + logger.warning(f"Skip cleanup for run_uuid={run_uuid}, scenario_type={scenario_type or '*'}") + return # Remove all version files in the directory logger.info(f"Cleaning up rollback version files for run_uuid={run_uuid}, scenario_type={scenario_type}")