mirror of
https://github.com/krkn-chaos/krkn.git
synced 2026-02-14 18:10:00 +00:00
Some checks failed
Functional & Unit Tests / Functional & Unit Tests (push) Failing after 9m18s
Functional & Unit Tests / Generate Coverage Badge (push) Has been skipped
* Add rollback config
* Inject rollback handler to scenario plugin
* Add Serializer
* Add decorator
* Add test with SimpleRollbackScenarioPlugin
* Add logger for verbose debug flow
* Resolve review comment
- remove additional rollback config in config.yaml
- set KUBECONFIG to ~/.kube/config in test_rollback
* Simplify set_rollback_context_decorator
* Fix integration of rollback_handler in __load_plugins
* Refactor rollback.config module
- make it singleton class with register method to construct
- RollbackContext ( <timestamp>-<run_uuid> )
- add get_rollback_versions_directory for moduling the directory
format
* Adapt new rollback.config
* Refactor serialization
- respect rollback_callable_name
- refactor _parse_rollback_callable_code
- refine VERSION_FILE_TEMPLATE
* Add get_scenario_rollback_versions_directory in RollbackConfig
* Add rollback in ApplicationOutageScenarioPlugin
* Add RollbackCallable and RollbackContent for type annotation
* Refactor rollback_handler with limited arguments
* Refactor the serialization for rollback
- limited arguments: callback and rollback_content just these two!
- always constuct lib_openshift and lib_telemetry in version file
- add _parse_rollback_content_definition for retrieving scenaio specific
rollback_content
- remove utils for formating variadic function
* Refactor applicaton outage scenario
* Fix test_rollback
* Make RollbackContent with static fields
* simplify serialization
- Remove all unused format dynamic arguments utils
- Add jinja template for version file
- Replace set_context for serialization with passing version to serialize_callable
* Add rollback for hogs scenario
* Fix version file full path based on feedback
- {versions_directory}/<timestamp(ns)>-<run_uuid>/{scenario_type}-<timestamp(ns)>-<random_hash>.py
* Fix scenario plugins after rebase
* Add rollback config
* Inject rollback handler to scenario plugin
* Add test with SimpleRollbackScenarioPlugin
* Resolve review comment
- remove additional rollback config in config.yaml
- set KUBECONFIG to ~/.kube/config in test_rollback
* Fix integration of rollback_handler in __load_plugins
* Refactor rollback.config module
- make it singleton class with register method to construct
- RollbackContext ( <timestamp>-<run_uuid> )
- add get_rollback_versions_directory for moduling the directory
format
* Adapt new rollback.config
* Add rollback in ApplicationOutageScenarioPlugin
* Add RollbackCallable and RollbackContent for type annotation
* Refactor applicaton outage scenario
* Fix test_rollback
* Make RollbackContent with static fields
* simplify serialization
- Remove all unused format dynamic arguments utils
- Add jinja template for version file
- Replace set_context for serialization with passing version to serialize_callable
* Add rollback for hogs scenario
* Fix version file full path based on feedback
- {versions_directory}/<timestamp(ns)>-<run_uuid>/{scenario_type}-<timestamp(ns)>-<random_hash>.py
* Fix scenario plugins after rebase
* Add execute rollback
* Add CLI for list and execute rollback
* Replace subprocess with importlib
* Fix error after rebase
* fixup! Fix docstring
- Add telemetry_ocp in execute_rollback docstring
- Remove rollback_config in create_plugin docstring
- Remove scenario_types in set_rollback_callable docsting
* fixup! Replace os.urandom with krkn_lib.utils.get_random_string
* fixup! Add missing telemetry_ocp for execute_rollback_version_files
* fixup! Remove redundant import
- Remove duplicate TYPE_CHECKING in handler module
- Remove cast in signal module
- Remove RollbackConfig in scenario_plugin_factory
* fixup! Replace sys.exit(1) with return
* fixup! Remove duplicate rollback_network_policy
* fixup! Decouple Serializer initialization
* fixup! Rename callback to rollback_callable
* fixup! Refine comment for constructing AbstractScenarioPlugin with
placeholder value
* fixup! Add version in docstring
* fixup! Remove uv.lock
64 lines
2.1 KiB
Python
64 lines
2.1 KiB
Python
import logging
|
|
|
|
from krkn_lib.telemetry.ocp import KrknTelemetryOpenshift
|
|
from krkn_lib.models.telemetry import ScenarioTelemetry
|
|
|
|
from krkn.scenario_plugins.abstract_scenario_plugin import AbstractScenarioPlugin
|
|
from krkn.rollback.config import RollbackContent
|
|
from krkn.rollback.handler import set_rollback_context_decorator
|
|
|
|
logger = logging.getLogger(__name__)
|
|
logger.setLevel(logging.DEBUG)
|
|
logger.addHandler(logging.StreamHandler())
|
|
|
|
|
|
class SimpleRollbackScenarioPlugin(AbstractScenarioPlugin):
|
|
"""
|
|
Mock implementation of RollbackScenarioPlugin for testing purposes.
|
|
This plugin does not perform any actual rollback operations.
|
|
"""
|
|
|
|
@set_rollback_context_decorator
|
|
def run(
|
|
self,
|
|
run_uuid: str,
|
|
scenario: str,
|
|
krkn_config: dict[str, any],
|
|
lib_telemetry: KrknTelemetryOpenshift,
|
|
scenario_telemetry: ScenarioTelemetry,
|
|
) -> int:
|
|
logger.info(
|
|
f"Setting rollback callable for run {run_uuid} with scenario {scenario}."
|
|
)
|
|
logger.debug(f"Krkn config: {krkn_config}")
|
|
self.rollback_handler.set_rollback_callable(
|
|
self.rollback_callable,
|
|
RollbackContent(
|
|
resource_identifier=run_uuid,
|
|
),
|
|
)
|
|
logger.info("Rollback callable set successfully.")
|
|
print("Rollback callable has been set for the scenario.")
|
|
return 0
|
|
|
|
def get_scenario_types(self) -> list[str]:
|
|
"""
|
|
Returns the scenario types that this plugin supports.
|
|
:return: a list of scenario types
|
|
"""
|
|
return ["simple_rollback_scenario"]
|
|
|
|
@staticmethod
|
|
def rollback_callable(
|
|
rollback_context: RollbackContent, lib_telemetry: KrknTelemetryOpenshift
|
|
):
|
|
"""
|
|
Simple rollback callable that simulates a rollback operation.
|
|
"""
|
|
run_uuid = rollback_context.resource_identifier
|
|
|
|
print(f"Rollback called for run {run_uuid}.")
|
|
# Simulate a rollback operation
|
|
# In a real scenario, this would contain logic to revert changes made during the scenario execution.
|
|
print("Rollback operation completed successfully.")
|