mirror of
https://github.com/krkn-chaos/krkn.git
synced 2026-04-15 06:57:28 +00:00
* relocated shared libraries from `kraken` to `krkn` folder Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * AbstractScenarioPlugin and ScenarioPluginFactory Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * application_outage porting Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * arcaflow_scenarios porting Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * managedcluster_scenarios porting Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * network_chaos porting Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * node_actions porting Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * plugin_scenarios porting Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * pvc_scenarios porting Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * service_disruption porting Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * service_hijacking porting Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * cluster_shut_down_scenarios porting Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * syn_flood porting Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * time_scenarios porting Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * zone_outages porting Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * ScenarioPluginFactory tests Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * unit tests update Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * pod_scenarios and post actions deprecated Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> scenarios post_actions Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * funtests and config update Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * run_krkn.py update Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * utils porting Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * API Documentation Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * container_scenarios porting Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> fix Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * funtest fix Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * document gif update Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * Documentation + tests update Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * removed example plugin Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * global renaming Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> test fix Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> test fix Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * config.yaml typos Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> typos Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * removed `plugin_scenarios` from NativScenarioPlugin class Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * pod_network_scenarios type added Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * documentation update Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * krkn-lib update Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> typo Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> --------- Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com>
57 lines
2.4 KiB
Python
57 lines
2.4 KiB
Python
from krkn_lib.models.telemetry import ScenarioTelemetry
|
|
from krkn_lib.telemetry.ocp import KrknTelemetryOpenshift
|
|
from krkn.scenario_plugins.abstract_scenario_plugin import AbstractScenarioPlugin
|
|
|
|
|
|
# Each plugin must extend the AbstractScenarioPlugin abstract class
|
|
# and implement its methods. Also the naming conventions must be respected
|
|
# you can refer to the documentation for the details:
|
|
# https://github.com/krkn-chaos/krkn/blob/main/docs/scenario_plugin_api.md
|
|
class ExampleScenarioPlugin(AbstractScenarioPlugin):
|
|
|
|
def run(
|
|
self,
|
|
run_uuid: str,
|
|
scenario: str,
|
|
krkn_config: dict[str, any],
|
|
lib_telemetry: KrknTelemetryOpenshift,
|
|
scenario_telemetry: ScenarioTelemetry,
|
|
) -> int:
|
|
"""
|
|
:param run_uuid: the uuid of the chaos run generated by krkn for every single run
|
|
:param scenario: the config file of the scenario that is currently executed
|
|
:param krkn_config: the full dictionary representation of the `config.yaml`
|
|
:param lib_telemetry: it is a composite object of all the
|
|
[krkn-lib](https://krkn-chaos.github.io/krkn-lib-docs/modules.html)
|
|
objects and methods needed by a krkn plugin to run.
|
|
:param scenario_telemetry: the `ScenarioTelemetry` object of the scenario that is currently executed
|
|
"""
|
|
|
|
pass
|
|
|
|
try:
|
|
# The scenario logic for each scenario must be placed
|
|
# here. A try-except it is needed to catch exceptions
|
|
# that may occur in this section and they shouldn't
|
|
# be propagated outside (only int return value is admitted).
|
|
|
|
# krkn-lib KrknKubernetes object containing all the kubernetes primitives
|
|
# can be retrieved by the KrknTelemetryOpenshift object
|
|
krkn_kubernetes = lib_telemetry.get_lib_kubernetes()
|
|
|
|
# krkn-lib KrknOpenshift object containing all the OCP primitives
|
|
# can be retrieved by the KrknTelemetryOpenshift object
|
|
krkn_openshift = lib_telemetry.get_lib_ocp()
|
|
|
|
# if the scenario succeeds the telemetry exit status is 0
|
|
return 0
|
|
except Exception as e:
|
|
# if the scenario fails the telemetry exit status is 1
|
|
return 1
|
|
|
|
# Reflects the scenario type defined in the config.yaml
|
|
# in the chaos_scenarios section and to which each class
|
|
# responds.
|
|
def get_scenario_types(self) -> list[str]:
|
|
return ["example_scenarios"]
|