Run method fixes (#1202)

* kubevirt plugin fixes

Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com>

* managed_cluster plugin fixes

Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com>

* unit tests fix

Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com>

---------

Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com>
This commit is contained in:
Tullio Sebastiani
2026-03-27 14:31:19 +01:00
committed by GitHub
parent 62f500fb2e
commit 4d5aea146d
3 changed files with 11 additions and 14 deletions
@@ -1,8 +1,7 @@
import logging
import time
from typing import Dict, Any, Optional
from typing import Dict, Any
import random
import re
import yaml
from kubernetes.client.rest import ApiException
from krkn_lib.k8s import KrknKubernetes
@@ -35,7 +34,6 @@ class KubevirtVmOutageScenarioPlugin(AbstractScenarioPlugin):
self,
run_uuid: str,
scenario: str,
krkn_config: dict[str, any],
lib_telemetry: KrknTelemetryOpenshift,
scenario_telemetry: ScenarioTelemetry,
) -> int:
@@ -60,7 +58,7 @@ class KubevirtVmOutageScenarioPlugin(AbstractScenarioPlugin):
return 0
except Exception as e:
logging.error(f"KubeVirt VM Outage scenario failed: {e}")
log_exception(e)
log_exception(str(e))
return 1
def init_clients(self, k8s_client: KrknKubernetes):
@@ -143,7 +141,7 @@ class KubevirtVmOutageScenarioPlugin(AbstractScenarioPlugin):
except Exception as e:
logging.error(f"Error executing KubeVirt VM outage scenario: {e}")
log_exception(e)
log_exception(str(e))
return self.pods_status
def validate_environment(self, vm_name: str, namespace: str) -> bool:
@@ -243,7 +241,7 @@ class KubevirtVmOutageScenarioPlugin(AbstractScenarioPlugin):
except Exception as e:
logging.error(f"Error deleting VMI {vm_name}: {e}")
log_exception(e)
log_exception(str(e))
self.pods_status.unrecovered.append(self.affected_pod)
return 1
@@ -304,7 +302,7 @@ class KubevirtVmOutageScenarioPlugin(AbstractScenarioPlugin):
except Exception as e:
logging.error(f"Error recreating VMI {vm_name}: {e}")
log_exception(e)
log_exception(str(e))
return 1
else:
logging.error(f"Failed to recover VMI {vm_name}: No original state captured and auto-recovery did not occur")
@@ -312,5 +310,5 @@ class KubevirtVmOutageScenarioPlugin(AbstractScenarioPlugin):
except Exception as e:
logging.error(f"Unexpected error recovering VMI {vm_name}: {e}")
log_exception(e)
log_exception(str(e))
return 1
@@ -1,5 +1,4 @@
import logging
import time
import yaml
from krkn_lib.k8s import KrknKubernetes
@@ -28,7 +27,6 @@ class ManagedClusterScenarioPlugin(AbstractScenarioPlugin):
)
if managedcluster_scenario["actions"]:
for action in managedcluster_scenario["actions"]:
start_time = int(time.time())
try:
self.inject_managedcluster_scenario(
action,
@@ -44,6 +42,7 @@ class ManagedClusterScenarioPlugin(AbstractScenarioPlugin):
return 1
else:
return 0
return 0
def inject_managedcluster_scenario(
self,
+4 -4
View File
@@ -176,7 +176,7 @@ class TestKubevirtVmOutageScenarioPlugin(unittest.TestCase):
self.k8s_client.delete_vmi.return_value = None
with patch("builtins.open", unittest.mock.mock_open(read_data=yaml.dump(self.config))):
result = self.plugin.run("test-uuid", self.scenario_file, {}, self.telemetry, self.scenario_telemetry)
result = self.plugin.run("test-uuid", self.scenario_file, self.telemetry, self.scenario_telemetry)
self.assertEqual(result, 0)
self.k8s_client.delete_vmi.assert_called_once_with("test-vm", "default")
@@ -196,7 +196,7 @@ class TestKubevirtVmOutageScenarioPlugin(unittest.TestCase):
self.k8s_client.delete_vmi.side_effect = ApiException(status=500)
with patch("builtins.open", unittest.mock.mock_open(read_data=yaml.dump(self.config))):
result = self.plugin.run("test-uuid", self.scenario_file, {}, self.telemetry, self.scenario_telemetry)
result = self.plugin.run("test-uuid", self.scenario_file, self.telemetry, self.scenario_telemetry)
self.assertEqual(result, 1)
self.k8s_client.delete_vmi.assert_called_once_with("test-vm", "default")
@@ -234,7 +234,7 @@ class TestKubevirtVmOutageScenarioPlugin(unittest.TestCase):
self.k8s_client.delete_vmi.return_value = None
with patch("builtins.open", unittest.mock.mock_open(read_data=yaml.dump(self.config))):
result = self.plugin.run("test-uuid", self.scenario_file, {}, self.telemetry, self.scenario_telemetry)
result = self.plugin.run("test-uuid", self.scenario_file, self.telemetry, self.scenario_telemetry)
self.assertEqual(result, 0)
# Verify patch_vm was called to disable auto-restart
@@ -278,7 +278,7 @@ class TestKubevirtVmOutageScenarioPlugin(unittest.TestCase):
self.k8s_client.get_vmi.return_value = None
with patch("builtins.open", unittest.mock.mock_open(read_data=yaml.dump(self.config))):
result = self.plugin.run("test-uuid", self.scenario_file, {}, self.telemetry, self.scenario_telemetry)
result = self.plugin.run("test-uuid", self.scenario_file, self.telemetry, self.scenario_telemetry)
# When validation fails, run() returns 1 due to exception handling
self.assertEqual(result, 1)