This is an automated email from the ASF dual-hosted git repository.

onikolas pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new f648129fe2 Fix sagemaker experiments cleanup (#41287)
f648129fe2 is described below

commit f648129fe24958b35dbf3e8bedbeea0e99890675
Author: Niko Oliveira <[email protected]>
AuthorDate: Tue Aug 6 11:50:28 2024 -0700

    Fix sagemaker experiments cleanup (#41287)
    
    We had some experiment cleanup logic, for cleaning up the experiment
    created by the create experiment task, but more experiments are created
    as side-effects of other tasks (such as creating pipelines and tuning
    jobs). These changes clean up the remaining experiments.
---
 .../providers/amazon/aws/example_sagemaker.py      | 31 +++++++++++++---------
 .../amazon/aws/example_sagemaker_pipeline.py       |  2 ++
 2 files changed, 21 insertions(+), 12 deletions(-)

diff --git a/tests/system/providers/amazon/aws/example_sagemaker.py 
b/tests/system/providers/amazon/aws/example_sagemaker.py
index 8c41b9b543..cd291b7971 100644
--- a/tests/system/providers/amazon/aws/example_sagemaker.py
+++ b/tests/system/providers/amazon/aws/example_sagemaker.py
@@ -432,18 +432,19 @@ def delete_model_group(group_name, model_version_arn):
 
 
 @task(trigger_rule=TriggerRule.ALL_DONE)
-def delete_experiment(name):
+def delete_experiments(experiment_names):
     sgmk_client = boto3.client("sagemaker")
-    trials = sgmk_client.list_trials(ExperimentName=name)
-    trials_names = [s["TrialName"] for s in trials["TrialSummaries"]]
-    for trial in trials_names:
-        components = sgmk_client.list_trial_components(TrialName=trial)
-        components_names = [s["TrialComponentName"] for s in 
components["TrialComponentSummaries"]]
-        for component in components_names:
-            
sgmk_client.disassociate_trial_component(TrialComponentName=component, 
TrialName=trial)
-            sgmk_client.delete_trial_component(TrialComponentName=component)
-        sgmk_client.delete_trial(TrialName=trial)
-    sgmk_client.delete_experiment(ExperimentName=name)
+    for experiment in experiment_names:
+        trials = sgmk_client.list_trials(ExperimentName=experiment)
+        trials_names = [s["TrialName"] for s in trials["TrialSummaries"]]
+        for trial in trials_names:
+            components = sgmk_client.list_trial_components(TrialName=trial)
+            components_names = [s["TrialComponentName"] for s in 
components["TrialComponentSummaries"]]
+            for component in components_names:
+                
sgmk_client.disassociate_trial_component(TrialComponentName=component, 
TrialName=trial)
+                
sgmk_client.delete_trial_component(TrialComponentName=component)
+            sgmk_client.delete_trial(TrialName=trial)
+        sgmk_client.delete_experiment(ExperimentName=experiment)
 
 
 @task(trigger_rule=TriggerRule.ALL_DONE)
@@ -637,7 +638,13 @@ with DAG(
         delete_model_group(test_setup["model_package_group_name"], 
register_model.output),
         delete_model,
         delete_bucket,
-        delete_experiment(test_setup["experiment_name"]),
+        delete_experiments(
+            [
+                test_setup["experiment_name"],
+                f"{test_setup['auto_ml_job_name']}-aws-auto-ml-job",
+                f"{test_setup['tuning_job_name']}-aws-tuning-job",
+            ]
+        ),
         delete_docker_image(test_setup["docker_image"]),
         log_cleanup,
     )
diff --git a/tests/system/providers/amazon/aws/example_sagemaker_pipeline.py 
b/tests/system/providers/amazon/aws/example_sagemaker_pipeline.py
index 48bf92fa7f..3f32511702 100644
--- a/tests/system/providers/amazon/aws/example_sagemaker_pipeline.py
+++ b/tests/system/providers/amazon/aws/example_sagemaker_pipeline.py
@@ -31,6 +31,7 @@ from airflow.providers.amazon.aws.sensors.sagemaker import (
     SageMakerPipelineSensor,
 )
 from airflow.utils.trigger_rule import TriggerRule
+from tests.system.providers.amazon.aws.example_sagemaker import 
delete_experiments
 from tests.system.providers.amazon.aws.utils import ENV_ID_KEY, 
SystemTestContextBuilder
 
 DAG_ID = "example_sagemaker_pipeline"
@@ -112,6 +113,7 @@ with DAG(
         await_pipeline2,
         # TEST TEARDOWN
         delete_pipeline(pipeline_name),
+        delete_experiments([pipeline_name]),
     )
 
     from tests.system.utils.watcher import watcher

Reply via email to