Skip to content
This repository was archived by the owner on Oct 9, 2023. It is now read-only.

Commit 114645a

Browse files
ByronHsubyhsu
andauthored
If primaryContainerName=="primary", container content will be duplicated (#326)
* If primaryContainerName=="primary", container content will be duplicated Signed-off-by: byhsu <byhsu@linkedin.com> * address comments Signed-off-by: byhsu <byhsu@linkedin.com> --------- Signed-off-by: byhsu <byhsu@linkedin.com> Co-authored-by: byhsu <byhsu@linkedin.com>
1 parent 1329476 commit 114645a

File tree

2 files changed

+20
-12
lines changed

2 files changed

+20
-12
lines changed

go/tasks/pluginmachinery/flytek8s/pod_helper.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -326,23 +326,24 @@ func mergePodSpecs(basePodSpec *v1.PodSpec, podSpec *v1.PodSpec, primaryContaine
326326
return nil, errors.New("neither the basePodSpec or the podSpec can be nil")
327327
}
328328

329+
// extract defaultContainerTemplate and primaryContainerTemplate
330+
var defaultContainerTemplate, primaryContainerTemplate *v1.Container
331+
for i := 0; i < len(basePodSpec.Containers); i++ {
332+
if basePodSpec.Containers[i].Name == defaultContainerTemplateName {
333+
defaultContainerTemplate = &basePodSpec.Containers[i]
334+
} else if basePodSpec.Containers[i].Name == primaryContainerTemplateName {
335+
primaryContainerTemplate = &basePodSpec.Containers[i]
336+
}
337+
}
338+
329339
// merge PodTemplate PodSpec with podSpec
330340
var mergedPodSpec *v1.PodSpec = basePodSpec.DeepCopy()
331341
if err := mergo.Merge(mergedPodSpec, podSpec, mergo.WithOverride, mergo.WithAppendSlice); err != nil {
332342
return nil, err
333343
}
334344

335-
// merge template Containers
345+
// merge PodTemplate containers
336346
var mergedContainers []v1.Container
337-
var defaultContainerTemplate, primaryContainerTemplate *v1.Container
338-
for i := 0; i < len(mergedPodSpec.Containers); i++ {
339-
if mergedPodSpec.Containers[i].Name == defaultContainerTemplateName {
340-
defaultContainerTemplate = &mergedPodSpec.Containers[i]
341-
} else if mergedPodSpec.Containers[i].Name == primaryContainerTemplateName {
342-
primaryContainerTemplate = &mergedPodSpec.Containers[i]
343-
}
344-
}
345-
346347
for _, container := range podSpec.Containers {
347348
// if applicable start with defaultContainerTemplate
348349
var mergedContainer *v1.Container

go/tasks/pluginmachinery/flytek8s/pod_helper_test.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1244,7 +1244,13 @@ func TestMergePodSpecs(t *testing.T) {
12441244
podSpec := v1.PodSpec{
12451245
Containers: []v1.Container{
12461246
v1.Container{
1247-
Name: "foo",
1247+
Name: "primary",
1248+
VolumeMounts: []v1.VolumeMount{
1249+
{
1250+
Name: "nccl",
1251+
MountPath: "abc",
1252+
},
1253+
},
12481254
},
12491255
v1.Container{
12501256
Name: "bar",
@@ -1292,7 +1298,7 @@ func TestMergePodSpecs(t *testing.T) {
12921298
},
12931299
}
12941300

1295-
mergedPodSpec, err := mergePodSpecs(&podTemplateSpec, &podSpec, "foo")
1301+
mergedPodSpec, err := mergePodSpecs(&podTemplateSpec, &podSpec, "primary")
12961302
assert.Nil(t, err)
12971303

12981304
// validate a PodTemplate-only field
@@ -1310,6 +1316,7 @@ func TestMergePodSpecs(t *testing.T) {
13101316
primaryContainer := mergedPodSpec.Containers[0]
13111317
assert.Equal(t, podSpec.Containers[0].Name, primaryContainer.Name)
13121318
assert.Equal(t, primaryContainerTemplate.TerminationMessagePath, primaryContainer.TerminationMessagePath)
1319+
assert.Equal(t, 1, len(primaryContainer.VolumeMounts))
13131320

13141321
// validate default container
13151322
defaultContainer := mergedPodSpec.Containers[1]

0 commit comments

Comments
 (0)