Skip to content

Commit

Permalink
addExtraArgsOverrideDefaults: add dashes argument
Browse files Browse the repository at this point in the history
Set it to `-` for all VictoriaMetrics processes, and to `--` for
alertmanager.

This fixes ExtraArgs in the VMAlertmanager resource. Previously, their
keys had to start with an extra `-`.

Fixes #502.
  • Loading branch information
flokli committed Jul 22, 2022
1 parent 66ca926 commit e0e7c1e
Show file tree
Hide file tree
Showing 8 changed files with 31 additions and 13 deletions.
2 changes: 1 addition & 1 deletion controllers/factory/alertmanager.go
Original file line number Diff line number Diff line change
Expand Up @@ -391,7 +391,7 @@ func makeStatefulSetSpec(cr *victoriametricsv1beta1.VMAlertmanager, c *config.Ba
return path.Clean(webRoutePrefix + "/-/healthy")
}

amArgs = addExtraArgsOverrideDefaults(amArgs, cr.Spec.ExtraArgs)
amArgs = addExtraArgsOverrideDefaults(amArgs, cr.Spec.ExtraArgs, "--")
sort.Strings(amArgs)

envs := []v1.EnvVar{
Expand Down
7 changes: 4 additions & 3 deletions controllers/factory/builders.go
Original file line number Diff line number Diff line change
Expand Up @@ -430,7 +430,8 @@ func CreateOrUpdatePodDisruptionBudget(ctx context.Context, rclient client.Clien
// addExtraArgsOverrideDefaults adds extraArgs for given source args
// it trims in-place args if it was set via extraArgs
// no need to check for extraEnvs, it has priority over args at VictoriaMetrics apps
func addExtraArgsOverrideDefaults(args []string, extraArgs map[string]string) []string {
// dashes is either "-" or "--", depending on the process. altermanager needs two dashes.
func addExtraArgsOverrideDefaults(args []string, extraArgs map[string]string, dashes string) []string {
if len(extraArgs) == 0 {
// fast path
return args
Expand Down Expand Up @@ -460,9 +461,9 @@ func addExtraArgsOverrideDefaults(args []string, extraArgs map[string]string) []
for argKey, argValue := range extraArgs {
// special hack for https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1145
if argKey == "rule" {
args = append(args, fmt.Sprintf("-%s=%q", argKey, argValue))
args = append(args, fmt.Sprintf("%s%s=%q", dashes, argKey, argValue))
} else {
args = append(args, fmt.Sprintf("-%s=%s", argKey, argValue))
args = append(args, fmt.Sprintf("%s%s=%s", dashes, argKey, argValue))
}
}
return args
Expand Down
21 changes: 19 additions & 2 deletions controllers/factory/builders_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -505,6 +505,7 @@ func Test_addExtraArgsOverrideDefaults(t *testing.T) {
type args struct {
args []string
extraArgs map[string]string
dashes string
}
tests := []struct {
name string
Expand All @@ -514,7 +515,8 @@ func Test_addExtraArgsOverrideDefaults(t *testing.T) {
{
name: "no changes",
args: args{
args: []string{"-http.ListenAddr=:8081"},
args: []string{"-http.ListenAddr=:8081"},
dashes: "-",
},
want: []string{"-http.ListenAddr=:8081"},
},
Expand All @@ -523,6 +525,7 @@ func Test_addExtraArgsOverrideDefaults(t *testing.T) {
args: args{
args: []string{"-http.ListenAddr=:8081"},
extraArgs: map[string]string{"http.ListenAddr": "127.0.0.1:8085"},
dashes: "-",
},
want: []string{"-http.ListenAddr=127.0.0.1:8085"},
},
Expand All @@ -531,13 +534,27 @@ func Test_addExtraArgsOverrideDefaults(t *testing.T) {
args: args{
args: []string{"-http.ListenAddr=:8081", "-promscrape.config=/opt/vmagent.yml"},
extraArgs: map[string]string{"http.ListenAddr": "127.0.0.1:8085"},
dashes: "-",
},
want: []string{"-promscrape.config=/opt/vmagent.yml", "-http.ListenAddr=127.0.0.1:8085"},
},
{
name: "two dashes, override default",
args: args{
args: []string{"--log.level=info"},
extraArgs: map[string]string{"log.level": "debug"},
dashes: "--",
},
want: []string{"--log.level=debug"},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
assert.Equalf(t, tt.want, addExtraArgsOverrideDefaults(tt.args.args, tt.args.extraArgs), "addExtraArgsOverrideDefaults(%v, %v)", tt.args.args, tt.args.extraArgs)
assert.Equalf(
t,
tt.want,
addExtraArgsOverrideDefaults(tt.args.args, tt.args.extraArgs, tt.args.dashes),
"addExtraArgsOverrideDefaults(%v, %v)", tt.args.args, tt.args.extraArgs)
})
}
}
2 changes: 1 addition & 1 deletion controllers/factory/vmagent.go
Original file line number Diff line number Diff line change
Expand Up @@ -440,7 +440,7 @@ func makeSpecForVMAgent(cr *victoriametricsv1beta1.VMAgent, c *config.BaseOperat
// limit to 1GB
args = append(args, "-remoteWrite.maxDiskUsagePerURL=1073741824")
}
args = addExtraArgsOverrideDefaults(args, cr.Spec.ExtraArgs)
args = addExtraArgsOverrideDefaults(args, cr.Spec.ExtraArgs, "-")
sort.Strings(args)

vmagentContainer := corev1.Container{
Expand Down
2 changes: 1 addition & 1 deletion controllers/factory/vmalert.go
Original file line number Diff line number Diff line change
Expand Up @@ -479,7 +479,7 @@ func buildVMAlertArgs(cr *victoriametricsv1beta1.VMAlert, ruleConfigMapNames []s
if len(cr.Spec.ExtraEnvs) > 0 {
args = append(args, "-envflag.enable=true")
}
args = addExtraArgsOverrideDefaults(args, cr.Spec.ExtraArgs)
args = addExtraArgsOverrideDefaults(args, cr.Spec.ExtraArgs, "-")
sort.Strings(args)
return args
}
Expand Down
2 changes: 1 addition & 1 deletion controllers/factory/vmauth.go
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@ func makeSpecForVMAuth(cr *victoriametricsv1beta1.VMAuth, c *config.BaseOperator
})
}

args = addExtraArgsOverrideDefaults(args, cr.Spec.ExtraArgs)
args = addExtraArgsOverrideDefaults(args, cr.Spec.ExtraArgs, "-")
sort.Strings(args)

vmauthContainer := corev1.Container{
Expand Down
6 changes: 3 additions & 3 deletions controllers/factory/vmcluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -480,7 +480,7 @@ func makePodSpecForVMSelect(cr *v1beta1.VMCluster, c *config.BaseOperatorConf) (
})
}

args = addExtraArgsOverrideDefaults(args, cr.Spec.VMSelect.ExtraArgs)
args = addExtraArgsOverrideDefaults(args, cr.Spec.VMSelect.ExtraArgs, "-")
sort.Strings(args)
vmselectContainer := corev1.Container{
Name: "vmselect",
Expand Down Expand Up @@ -750,7 +750,7 @@ func makePodSpecForVMInsert(cr *v1beta1.VMCluster, c *config.BaseOperatorConf) (
MountPath: path.Join(ConfigMapsDir, c),
})
}
args = addExtraArgsOverrideDefaults(args, cr.Spec.VMInsert.ExtraArgs)
args = addExtraArgsOverrideDefaults(args, cr.Spec.VMInsert.ExtraArgs, "-")
sort.Strings(args)

vminsertContainer := corev1.Container{
Expand Down Expand Up @@ -1037,7 +1037,7 @@ func makePodSpecForVMStorage(cr *v1beta1.VMCluster, c *config.BaseOperatorConf)
})
}

args = addExtraArgsOverrideDefaults(args, cr.Spec.VMStorage.ExtraArgs)
args = addExtraArgsOverrideDefaults(args, cr.Spec.VMStorage.ExtraArgs, "-")
sort.Strings(args)
vmstorageContainer := corev1.Container{
Name: "vmstorage",
Expand Down
2 changes: 1 addition & 1 deletion controllers/factory/vmsingle.go
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@ func makeSpecForVMSingle(cr *victoriametricsv1beta1.VMSingle, c *config.BaseOper
})
}

args = addExtraArgsOverrideDefaults(args, cr.Spec.ExtraArgs)
args = addExtraArgsOverrideDefaults(args, cr.Spec.ExtraArgs, "-")
sort.Strings(args)
vmsingleContainer := corev1.Container{
Name: "vmsingle",
Expand Down

0 comments on commit e0e7c1e

Please sign in to comment.