From b79e526cfde9f7199dd99cbb34bf8326a076eb69 Mon Sep 17 00:00:00 2001 From: Paige Rubendall <64206430+paigerube14@users.noreply.github.com> Date: Fri, 29 Mar 2024 14:35:14 -0400 Subject: [PATCH] adding app outage not creating file (#605) Signed-off-by: Paige Rubendall --- kraken/application_outage/actions.py | 16 +++++++--------- requirements.txt | 2 +- run_kraken.py | 2 +- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/kraken/application_outage/actions.py b/kraken/application_outage/actions.py index dce72508..f3b344c8 100644 --- a/kraken/application_outage/actions.py +++ b/kraken/application_outage/actions.py @@ -4,6 +4,7 @@ import time import kraken.cerberus.setup as cerberus from jinja2 import Template import kraken.invoke.command as runcommand +from krkn_lib.k8s import KrknKubernetes from krkn_lib.telemetry.k8s import KrknTelemetryKubernetes from krkn_lib.models.telemetry import ScenarioTelemetry from krkn_lib.utils.functions import get_yaml_item_value, log_exception @@ -11,7 +12,7 @@ from krkn_lib.utils.functions import get_yaml_item_value, log_exception # Reads the scenario config, applies and deletes a network policy to # block the traffic for the specified duration -def run(scenarios_list, config, wait_duration, telemetry: KrknTelemetryKubernetes) -> (list[str], list[ScenarioTelemetry]): +def run(scenarios_list, config, wait_duration,kubecli: KrknKubernetes, telemetry: KrknTelemetryKubernetes) -> (list[str], list[ScenarioTelemetry]): failed_post_scenarios = "" scenario_telemetries: list[ScenarioTelemetry] = [] failed_scenarios = [] @@ -49,25 +50,22 @@ spec: podSelector: matchLabels: {{ pod_selector }} policyTypes: {{ traffic_type }} - """ +""" t = Template(network_policy_template) rendered_spec = t.render(pod_selector=pod_selector, traffic_type=traffic_type) - # Write the rendered template to a file - with open("kraken_network_policy.yaml", "w") as f: - f.write(rendered_spec) + yaml_spec = yaml.safe_load(rendered_spec) # Block the traffic by creating network policy logging.info("Creating the network policy") - runcommand.invoke( - "kubectl create -f %s -n %s --validate=false" % ("kraken_network_policy.yaml", namespace) - ) + kubecli.create_net_policy(yaml_spec, namespace) + # wait for the specified duration logging.info("Waiting for the specified duration in the config: %s" % (duration)) time.sleep(duration) # unblock the traffic by deleting the network policy logging.info("Deleting the network policy") - runcommand.invoke("kubectl delete -f %s -n %s" % ("kraken_network_policy.yaml", namespace)) + kubecli.delete_net_policy("kraken-deny", namespace) logging.info("End of scenario. Waiting for the specified duration: %s" % (wait_duration)) time.sleep(wait_duration) diff --git a/requirements.txt b/requirements.txt index b5267875..00d911c7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -15,7 +15,7 @@ google-api-python-client==2.116.0 ibm_cloud_sdk_core==3.18.0 ibm_vpc==0.20.0 jinja2==3.1.3 -krkn-lib==2.1.0 +krkn-lib==2.1.1 lxml==5.1.0 kubernetes==26.1.0 oauth2client==4.1.3 diff --git a/run_kraken.py b/run_kraken.py index aeff9a66..96fb3bd1 100644 --- a/run_kraken.py +++ b/run_kraken.py @@ -332,7 +332,7 @@ def main(cfg): elif scenario_type == "application_outages": logging.info("Injecting application outage") failed_post_scenarios, scenario_telemetries = application_outage.run( - scenarios_list, config, wait_duration, telemetry_k8s) + scenarios_list, config, wait_duration, kubecli, telemetry_k8s) chaos_telemetry.scenarios.extend(scenario_telemetries) # PVC scenarios