diff --git a/krkn/cerberus/setup.py b/krkn/cerberus/setup.py index cb9c8ab0..f29997d2 100644 --- a/krkn/cerberus/setup.py +++ b/krkn/cerberus/setup.py @@ -91,34 +91,34 @@ def get_status(start_time, end_time): return cerberus_status -def publish_kraken_status( start_time, end_time): +def publish_kraken_status(start_time, end_time): """ - Publish kraken status to cerberus + Check cerberus health status after a scenario run and act on exit_on_failure. """ + if not cerberus_enabled: + return + cerberus_status = get_status(start_time, end_time) if not cerberus_status: if exit_on_failure: - logging.info( - "Cerberus status is not healthy and post action scenarios " - "are still failing, exiting kraken run" + logging.error( + "Cerberus reports cluster is NOT healthy, exiting kraken run" ) sys.exit(1) else: - logging.info( - "Cerberus status is not healthy and post action scenarios " - "are still failing" + logging.warning( + "Cerberus reports cluster is NOT healthy" ) else: if exit_on_failure: - logging.info( - "Cerberus status is healthy but post action scenarios " - "are still failing, exiting kraken run" + logging.warning( + "Cerberus reports cluster is healthy, " + "but exit_on_failure is set — exiting kraken run" ) sys.exit(1) else: logging.info( - "Cerberus status is healthy but post action scenarios " - "are still failing" + "Cerberus reports cluster is healthy" ) diff --git a/krkn/rollback/config.py b/krkn/rollback/config.py index c29eb0a0..f7b573de 100644 --- a/krkn/rollback/config.py +++ b/krkn/rollback/config.py @@ -221,14 +221,19 @@ class RollbackConfig(metaclass=SingletonMeta): return [] rollback_context_directories = [] + skipped_count = 0 for dir in os.listdir(cls().versions_directory): if cls.is_rollback_context_directory_format(dir, run_uuid): rollback_context_directories.append(dir) else: - logger.warning(f"Directory {dir} does not match expected pattern of -") + skipped_count += 1 + logger.debug(f"Directory {dir} does not match expected pattern of -") + + if skipped_count > 0: + logger.info(f"Skipped {skipped_count} non-matching entries in rollback versions directory") if not rollback_context_directories: - logger.warning(f"No rollback context directories found for run UUID {run_uuid}") + logger.debug(f"No rollback context directories found for run UUID {run_uuid}") return [] diff --git a/krkn/rollback/handler.py b/krkn/rollback/handler.py index 8881978f..32756db0 100644 --- a/krkn/rollback/handler.py +++ b/krkn/rollback/handler.py @@ -155,7 +155,7 @@ def execute_rollback_version_files( # 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 or '*'}, scenario_type={scenario_type or '*'}") + logger.debug(f"Skip execution for run_uuid={run_uuid or '*'}, scenario_type={scenario_type or '*'}") return # Execute all version files in the directory @@ -206,7 +206,7 @@ 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 '*'}") + logger.debug(f"Skip cleanup for run_uuid={run_uuid}, scenario_type={scenario_type or '*'}") return # Remove all version files in the directory diff --git a/run_kraken.py b/run_kraken.py index c0c59fe8..1c7b07e5 100644 --- a/run_kraken.py +++ b/run_kraken.py @@ -268,7 +268,7 @@ def main(options, command: Optional[str], out: Optional[dict] = None) -> int: distribution = "kubernetes" if ocpcli.is_openshift(): distribution = "openshift" - logging.info("Detected distribution %s" % (distribution)) + logging.info("Detected cluster platform: %s" % (distribution)) # find node kraken might be running on kubecli.find_kraken_node() @@ -599,7 +599,7 @@ def main(options, command: Optional[str], out: Optional[dict] = None) -> int: # through OCP specific APIs if distribution == "openshift": logging.info( - "collecting OCP cluster metadata, this may take few minutes...." + "Collecting OCP cluster metadata (nodes, resources, network plugins)..." ) telemetry_ocp.collect_cluster_metadata(chaos_telemetry) else: @@ -611,7 +611,7 @@ def main(options, command: Optional[str], out: Optional[dict] = None) -> int: logging.info(f"Collected {len(error_logs)} error logs for telemetry") chaos_telemetry.error_logs = error_logs else: - logging.info("No error logs collected during chaos run") + logging.debug("No error logs collected during chaos run") chaos_telemetry.error_logs = [] if resiliency_obj and hist_window is None: try: diff --git a/tests/test_cerberus_setup.py b/tests/test_cerberus_setup.py index 053d0bb7..2f94ae2f 100644 --- a/tests/test_cerberus_setup.py +++ b/tests/test_cerberus_setup.py @@ -160,9 +160,19 @@ class TestCerberusSetup(unittest.TestCase): self.assertEqual(cm.exception.code, 1) + @patch('krkn.cerberus.setup.get_status') + def test_publish_kraken_status_cerberus_disabled_skips(self, mock_get_status): + """Test publish_kraken_status returns immediately when cerberus is disabled""" + cerberus_setup.cerberus_enabled = False + + cerberus_setup.publish_kraken_status(0, 100) + + mock_get_status.assert_not_called() + @patch('krkn.cerberus.setup.get_status') def test_publish_kraken_status_healthy_exit_on_failure_false(self, mock_get_status): """Test publish_kraken_status when cluster is healthy and exit_on_failure is False""" + cerberus_setup.cerberus_enabled = True cerberus_setup.exit_on_failure = False mock_get_status.return_value = True @@ -173,6 +183,7 @@ class TestCerberusSetup(unittest.TestCase): @patch('krkn.cerberus.setup.get_status') def test_publish_kraken_status_healthy_exit_on_failure_true(self, mock_get_status): """Test publish_kraken_status when cluster is healthy and exit_on_failure is True""" + cerberus_setup.cerberus_enabled = True cerberus_setup.exit_on_failure = True mock_get_status.return_value = True @@ -185,6 +196,7 @@ class TestCerberusSetup(unittest.TestCase): @patch('krkn.cerberus.setup.get_status') def test_publish_kraken_status_unhealthy_exit_on_failure_false(self, mock_get_status): """Test publish_kraken_status when cluster is unhealthy and exit_on_failure is False""" + cerberus_setup.cerberus_enabled = True cerberus_setup.exit_on_failure = False mock_get_status.return_value = False @@ -195,6 +207,7 @@ class TestCerberusSetup(unittest.TestCase): @patch('krkn.cerberus.setup.get_status') def test_publish_kraken_status_unhealthy_exit_on_failure_true(self, mock_get_status): """Test publish_kraken_status when cluster is unhealthy and exit_on_failure is True""" + cerberus_setup.cerberus_enabled = True cerberus_setup.exit_on_failure = True mock_get_status.return_value = False