Skip to content

Commit 7d9ca89

Browse files
committed
优化env和volumemout的merge
1 parent 293255a commit 7d9ca89

File tree

1 file changed

+30
-19
lines changed

1 file changed

+30
-19
lines changed

pkg/util/merge/merge.go

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -284,31 +284,31 @@ func mergeVolumeDevice(original, override corev1.VolumeDevice) corev1.VolumeDevi
284284
// identifier.
285285
func Envs(original, override []corev1.EnvVar) []corev1.EnvVar {
286286

287-
mergedEnvsMap := map[string]corev1.EnvVar{}
288-
289287
originalMap := createEnvMap(original)
290288
overrideMap := createEnvMap(override)
289+
var mergedEnvs []corev1.EnvVar
291290

292-
for k, v := range originalMap {
293-
mergedEnvsMap[k] = v
291+
for _, orig := range original {
292+
if v, ok := overrideMap[orig.Name]; ok {
293+
if v.Value != "" {
294+
orig.Value = v.Value
295+
}
296+
if v.ValueFrom != nil {
297+
orig.ValueFrom = v.ValueFrom
298+
}
299+
}
300+
mergedEnvs = append(mergedEnvs, orig)
294301
}
295-
296-
for k, v := range overrideMap {
297-
if orig, ok := originalMap[k]; ok {
298-
mergedEnvsMap[k] = mergeSingleEnv(orig, v)
299-
} else {
300-
mergedEnvsMap[k] = v
302+
var newEnvNames []string
303+
for k, _ := range overrideMap {
304+
if _, ok := originalMap[k]; !ok {
305+
newEnvNames = append(newEnvNames, k)
301306
}
302307
}
303-
304-
var mergedEnvs []corev1.EnvVar
305-
for _, v := range mergedEnvsMap {
306-
mergedEnvs = append(mergedEnvs, v)
308+
sort.Strings(newEnvNames)
309+
for _, envName := range newEnvNames {
310+
mergedEnvs = append(mergedEnvs, overrideMap[envName])
307311
}
308-
309-
sort.SliceStable(mergedEnvs, func(i, j int) bool {
310-
return mergedEnvs[i].Name < mergedEnvs[j].Name
311-
})
312312
return mergedEnvs
313313
}
314314

@@ -411,7 +411,7 @@ func createContainerPortMap(containerPorts []corev1.ContainerPort) map[string]co
411411
func VolumeMounts(original, override []corev1.VolumeMount) []corev1.VolumeMount {
412412

413413
overrideMap := createVolumeMountMap(override)
414-
414+
originalMap := createVolumeMountMap(original)
415415
var mergedMounts []corev1.VolumeMount
416416

417417
for _, orig := range original {
@@ -426,6 +426,17 @@ func VolumeMounts(original, override []corev1.VolumeMount) []corev1.VolumeMount
426426
mergedMounts = append(mergedMounts, orig)
427427
}
428428

429+
var newVolumeMounts []string
430+
for k, _ := range overrideMap {
431+
if _, ok := originalMap[k]; !ok {
432+
newVolumeMounts = append(newVolumeMounts, k)
433+
}
434+
}
435+
sort.Strings(newVolumeMounts)
436+
for _, volumeMount := range newVolumeMounts {
437+
mergedMounts = append(mergedMounts, overrideMap[volumeMount])
438+
}
439+
429440
return mergedMounts
430441
}
431442

0 commit comments

Comments
 (0)