From fcd517410a809648e887e0422b1badc8222a14d5 Mon Sep 17 00:00:00 2001 From: Electronic-Waste <2690692950@qq.com> Date: Wed, 15 Jan 2025 06:18:06 +0000 Subject: [PATCH 1/2] chore(webhook): add KATIB_EXPERIMENT_NAME to pod env. Signed-off-by: Electronic-Waste <2690692950@qq.com> --- pkg/controller.v1beta1/consts/const.go | 2 ++ pkg/webhook/v1beta1/pod/utils.go | 12 ++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/pkg/controller.v1beta1/consts/const.go b/pkg/controller.v1beta1/consts/const.go index 2cffe30cde3..350a74eded0 100644 --- a/pkg/controller.v1beta1/consts/const.go +++ b/pkg/controller.v1beta1/consts/const.go @@ -62,6 +62,8 @@ const ( // EnvTrialName is the env variable of Trial name EnvTrialName = "KATIB_TRIAL_NAME" + // EnvExperimentName is the env variable of Experiment name + EnvExperimentName = "KATIB_EXPERIMENT_NAME" // LabelExperimentName is the label of experiment name. LabelExperimentName = "katib.kubeflow.org/experiment" diff --git a/pkg/webhook/v1beta1/pod/utils.go b/pkg/webhook/v1beta1/pod/utils.go index a3dc66e1cc8..2b8a7313f21 100644 --- a/pkg/webhook/v1beta1/pod/utils.go +++ b/pkg/webhook/v1beta1/pod/utils.go @@ -291,7 +291,7 @@ func mutatePodEnv(pod *v1.Pod, trial *trialsv1beta1.Trial) error { pod.Spec.Containers[index].Env = []v1.EnvVar{} } - // Pass env variable KATIB_TRIAL_NAME to the primary container using fieldPath + // Pass env variable KATIB_TRIAL_NAME and KATIB_EXPERIMENT_NAME to the primary container using fieldPath pod.Spec.Containers[index].Env = append( pod.Spec.Containers[index].Env, v1.EnvVar{ @@ -302,10 +302,18 @@ func mutatePodEnv(pod *v1.Pod, trial *trialsv1beta1.Trial) error { }, }, }, + v1.EnvVar{ + Name: consts.EnvExperimentName, + ValueFrom: &v1.EnvVarSource{ + FieldRef: &v1.ObjectFieldSelector{ + FieldPath: fmt.Sprintf("metadata.labels['%s']", consts.LabelExperimentName), + }, + }, + }, ) return nil } else { - return fmt.Errorf("Unable to find primary container %v in mutated pod containers %v", + return fmt.Errorf("unable to find primary container %v in mutated pod containers %v", trial.Spec.PrimaryContainerName, pod.Spec.Containers) } } From 51c61ac2a2718de47c7d12bb50b7092f533f41af Mon Sep 17 00:00:00 2001 From: Electronic-Waste <2690692950@qq.com> Date: Wed, 15 Jan 2025 06:34:54 +0000 Subject: [PATCH 2/2] fix(test): update inject webhook test. Signed-off-by: Electronic-Waste <2690692950@qq.com> --- pkg/webhook/v1beta1/pod/inject_webhook_test.go | 8 ++++++++ pkg/webhook/v1beta1/pod/utils.go | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/pkg/webhook/v1beta1/pod/inject_webhook_test.go b/pkg/webhook/v1beta1/pod/inject_webhook_test.go index 8350264cfaa..f39aff5ddbd 100644 --- a/pkg/webhook/v1beta1/pod/inject_webhook_test.go +++ b/pkg/webhook/v1beta1/pod/inject_webhook_test.go @@ -1094,6 +1094,14 @@ func TestMutatePodEnv(t *testing.T) { }, }, }, + { + Name: consts.EnvExperimentName, + ValueFrom: &v1.EnvVarSource{ + FieldRef: &v1.ObjectFieldSelector{ + FieldPath: fmt.Sprintf("metadata.labels['%s']", consts.LabelExperimentName), + }, + }, + }, }, }, }, diff --git a/pkg/webhook/v1beta1/pod/utils.go b/pkg/webhook/v1beta1/pod/utils.go index 2b8a7313f21..d8c2b01bf07 100644 --- a/pkg/webhook/v1beta1/pod/utils.go +++ b/pkg/webhook/v1beta1/pod/utils.go @@ -313,7 +313,7 @@ func mutatePodEnv(pod *v1.Pod, trial *trialsv1beta1.Trial) error { ) return nil } else { - return fmt.Errorf("unable to find primary container %v in mutated pod containers %v", + return fmt.Errorf("Unable to find primary container %v in mutated pod containers %v", trial.Spec.PrimaryContainerName, pod.Spec.Containers) } }