Skip to content

Commit 8d76221

Browse files
author
bigfish.zhang
authored
merge the env vars and use the vars set by user if key equals (#491)
1 parent edcfe90 commit 8d76221

File tree

1 file changed

+56
-12
lines changed

1 file changed

+56
-12
lines changed

pkg/factory/risingwave_object_factory.go

Lines changed: 56 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1045,7 +1045,15 @@ func (f *RisingWaveObjectFactory) setupMetaContainer(container *corev1.Container
10451045
container.Name = "meta"
10461046
container.Args = []string{"meta-node"}
10471047
container.Ports = f.portsForMetaContainer()
1048-
container.Env = append(container.Env, f.envsForMetaArgs()...)
1048+
1049+
// merge the vars, and use the container env vars(set in template) to replace the generated default vars, if key equals.
1050+
mergedVars := f.envsForMetaArgs()
1051+
for _, env := range container.Env {
1052+
mergedVars = mergeListWhenKeyEquals(mergedVars, env, func(a, b *corev1.EnvVar) bool {
1053+
return a.Name == b.Name
1054+
})
1055+
}
1056+
container.Env = mergedVars
10491057

10501058
for _, env := range f.envsForStateStore() {
10511059
container.Env = mergeListWhenKeyEquals(container.Env, env, func(a, b *corev1.EnvVar) bool {
@@ -1364,7 +1372,15 @@ func (f *RisingWaveObjectFactory) portsForFrontendContainer() []corev1.Container
13641372
func (f *RisingWaveObjectFactory) setupFrontendContainer(container *corev1.Container) {
13651373
container.Name = "frontend"
13661374
container.Args = []string{"frontend-node"}
1367-
container.Env = append(container.Env, f.envsForFrontendArgs()...)
1375+
1376+
// merge the vars, and use the container env vars(set in template) to replace the generated default vars, if key equals.
1377+
mergedVars := f.envsForFrontendArgs()
1378+
for _, env := range container.Env {
1379+
mergedVars = mergeListWhenKeyEquals(mergedVars, env, func(a, b *corev1.EnvVar) bool {
1380+
return a.Name == b.Name
1381+
})
1382+
}
1383+
container.Env = mergedVars
13681384
container.Ports = f.portsForFrontendContainer()
13691385

13701386
container.VolumeMounts = mergeListWhenKeyEquals(container.VolumeMounts, f.volumeMountForConfig(), func(a, b *corev1.VolumeMount) bool {
@@ -1393,7 +1409,15 @@ func (f *RisingWaveObjectFactory) setupComputeContainer(container *corev1.Contai
13931409

13941410
cpuLimit := int64(math.Ceil(container.Resources.Limits.Cpu().AsApproximateFloat64()))
13951411
memLimit, _ := container.Resources.Limits.Memory().AsInt64()
1396-
container.Env = append(container.Env, f.envsForComputeArgs(cpuLimit, memLimit)...)
1412+
1413+
// merge the vars, and use the container env vars(set in template) to replace the generated default vars, if key equals.
1414+
mergedVars := f.envsForComputeArgs(cpuLimit, memLimit)
1415+
for _, env := range container.Env {
1416+
mergedVars = mergeListWhenKeyEquals(mergedVars, env, func(a, b *corev1.EnvVar) bool {
1417+
return a.Name == b.Name
1418+
})
1419+
}
1420+
container.Env = mergedVars
13971421
container.Ports = f.portsForComputeContainer()
13981422

13991423
for _, env := range f.envsForStateStore() {
@@ -1425,7 +1449,15 @@ func (f *RisingWaveObjectFactory) portsForCompactorContainer() []corev1.Containe
14251449
func (f *RisingWaveObjectFactory) setupCompactorContainer(container *corev1.Container) {
14261450
container.Name = "compactor"
14271451
container.Args = []string{"compactor-node"}
1428-
container.Env = append(container.Env, f.envsForCompactorArgs()...)
1452+
1453+
// merge the vars, and use the container env vars(set in template) to replace the generated default vars, if key equals.
1454+
mergedVars := f.envsForCompactorArgs()
1455+
for _, env := range container.Env {
1456+
mergedVars = mergeListWhenKeyEquals(mergedVars, env, func(a, b *corev1.EnvVar) bool {
1457+
return a.Name == b.Name
1458+
})
1459+
}
1460+
container.Env = mergedVars
14291461
container.Ports = f.portsForCompactorContainer()
14301462

14311463
for _, env := range f.envsForStateStore() {
@@ -1468,14 +1500,26 @@ func (f *RisingWaveObjectFactory) setupConnectorContainer(container *corev1.Cont
14681500

14691501
memLimits := container.Resources.Limits.Memory().Value()
14701502
if memLimits != 0 {
1471-
container.Env = append(container.Env, corev1.EnvVar{
1472-
Name: envs.JavaOpts,
1473-
Value: fmt.Sprintf("-Xmx%d", memLimits),
1474-
})
1475-
container.Env = append(container.Env, corev1.EnvVar{
1476-
Name: envs.RWConnectorNodePrometheusPort,
1477-
Value: fmt.Sprintf("%d", consts.ConnectorMetricsPort),
1478-
})
1503+
1504+
var mergedVars = []corev1.EnvVar{
1505+
{
1506+
Name: envs.JavaOpts,
1507+
Value: fmt.Sprintf("-Xmx%d", memLimits),
1508+
},
1509+
{
1510+
Name: envs.RWConnectorNodePrometheusPort,
1511+
Value: fmt.Sprintf("%d", consts.ConnectorMetricsPort),
1512+
},
1513+
}
1514+
1515+
// ensure the container env not override by generated env.
1516+
for _, env := range container.Env {
1517+
mergedVars = mergeListWhenKeyEquals(mergedVars, env, func(a, b *corev1.EnvVar) bool {
1518+
return a.Name == b.Name
1519+
})
1520+
}
1521+
1522+
container.Env = mergedVars
14791523
}
14801524

14811525
container.VolumeMounts = mergeListWhenKeyEquals(container.VolumeMounts, f.volumeMountForConfig(), func(a, b *corev1.VolumeMount) bool {

0 commit comments

Comments
 (0)