@@ -284,31 +284,31 @@ func mergeVolumeDevice(original, override corev1.VolumeDevice) corev1.VolumeDevi
284284// identifier.
285285func 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
411411func 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