Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion api/operator/v1/vlagent_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@ func (cr *VLAgent) GetMetricPath() string {
}

// ExtraArgs returns additionally configured command-line arguments
func (cr *VLAgent) GetExtraArgs() map[string]string {
func (cr *VLAgent) GetExtraArgs() map[string]vmv1beta1.ArgValue {
return cr.Spec.ExtraArgs
}

Expand Down
8 changes: 4 additions & 4 deletions api/operator/v1/vlcluster_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,7 @@ func (cr *VLInsert) GetMetricPath() string {
}

// ExtraArgs returns additionally configured command-line arguments
func (cr *VLInsert) GetExtraArgs() map[string]string {
func (cr *VLInsert) GetExtraArgs() map[string]vmv1beta1.ArgValue {
return cr.ExtraArgs
}

Expand Down Expand Up @@ -438,7 +438,7 @@ func (cr *VLSelect) GetMetricPath() string {
}

// ExtraArgs returns additionally configured command-line arguments
func (cr *VLSelect) GetExtraArgs() map[string]string {
func (cr *VLSelect) GetExtraArgs() map[string]vmv1beta1.ArgValue {
return cr.ExtraArgs
}

Expand Down Expand Up @@ -575,7 +575,7 @@ func (cr *VLStorage) GetMetricPath() string {
}

// ExtraArgs returns additionally configured command-line arguments
func (cr *VLStorage) GetExtraArgs() map[string]string {
func (cr *VLStorage) GetExtraArgs() map[string]vmv1beta1.ArgValue {
return cr.ExtraArgs
}

Expand Down Expand Up @@ -776,7 +776,7 @@ func (cr *VLCluster) IsOwnsServiceAccount() bool {
// nolint:dupl,lll
func (cr *VLCluster) AsURL(kind vmv1beta1.ClusterComponent) string {
var port string
var extraArgs map[string]string
var extraArgs map[string]vmv1beta1.ArgValue
switch kind {
case vmv1beta1.ClusterComponentSelect:
if cr.Spec.VLSelect == nil {
Expand Down
2 changes: 1 addition & 1 deletion api/operator/v1/vlsingle_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ func (cr *VLSingle) Validate() error {
}

// GetExtraArgs returns additionally configured command-line arguments
func (cr *VLSingle) GetExtraArgs() map[string]string {
func (cr *VLSingle) GetExtraArgs() map[string]vmv1beta1.ArgValue {
return cr.Spec.ExtraArgs
}

Expand Down
2 changes: 1 addition & 1 deletion api/operator/v1/vmanomaly_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -344,7 +344,7 @@ func (cr *VMAnomaly) GetMetricPath() string {
}

// ExtraArgs returns additionally configured command-line arguments
func (cr *VMAnomaly) GetExtraArgs() map[string]string {
func (cr *VMAnomaly) GetExtraArgs() map[string]vmv1beta1.ArgValue {
return cr.Spec.ExtraArgs
}

Expand Down
8 changes: 4 additions & 4 deletions api/operator/v1/vtcluster_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,7 @@ func (cr *VTInsert) GetMetricPath() string {
}

// ExtraArgs returns additionally configured command-line arguments
func (cr *VTInsert) GetExtraArgs() map[string]string {
func (cr *VTInsert) GetExtraArgs() map[string]vmv1beta1.ArgValue {
return cr.ExtraArgs
}

Expand Down Expand Up @@ -350,7 +350,7 @@ func (cr *VTSelect) GetMetricPath() string {
}

// ExtraArgs returns additionally configured command-line arguments
func (cr *VTSelect) GetExtraArgs() map[string]string {
func (cr *VTSelect) GetExtraArgs() map[string]vmv1beta1.ArgValue {
return cr.ExtraArgs
}

Expand Down Expand Up @@ -490,7 +490,7 @@ func (cr *VTStorage) GetMetricPath() string {
}

// ExtraArgs returns additionally configured command-line arguments
func (cr *VTStorage) GetExtraArgs() map[string]string {
func (cr *VTStorage) GetExtraArgs() map[string]vmv1beta1.ArgValue {
return cr.ExtraArgs
}

Expand Down Expand Up @@ -691,7 +691,7 @@ func (cr *VTCluster) IsOwnsServiceAccount() bool {
// nolint:dupl,lll
func (cr *VTCluster) AsURL(kind vmv1beta1.ClusterComponent) string {
var port string
var extraArgs map[string]string
var extraArgs map[string]vmv1beta1.ArgValue
switch kind {
case vmv1beta1.ClusterComponentSelect:
if cr.Spec.Select == nil {
Expand Down
2 changes: 1 addition & 1 deletion api/operator/v1/vtsingle_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,7 @@ func (cr *VTSingle) Validate() error {
}

// GetExtraArgs returns additionally configured command-line arguments
func (cr *VTSingle) GetExtraArgs() map[string]string {
func (cr *VTSingle) GetExtraArgs() map[string]vmv1beta1.ArgValue {
return cr.Spec.ExtraArgs
}

Expand Down
2 changes: 1 addition & 1 deletion api/operator/v1beta1/vlogs_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,7 @@ func (cr *VLogs) Validate() error {
}

// GetExtraArgs returns additionally configured command-line arguments
func (cr *VLogs) GetExtraArgs() map[string]string {
func (cr *VLogs) GetExtraArgs() map[string]ArgValue {
return cr.Spec.ExtraArgs
}

Expand Down
8 changes: 3 additions & 5 deletions api/operator/v1beta1/vmagent_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -230,10 +230,8 @@ func (cr *VMAgent) GetReloaderParams() *CommonConfigReloaderParams {

// UseProxyProtocol implements reloadable interface
func (cr *VMAgent) UseProxyProtocol() bool {
if v, ok := cr.Spec.ExtraArgs["httpListenAddr.useProxyProtocol"]; ok && v == "true" {
return true
}
return false
v, ok := cr.Spec.ExtraArgs["httpListenAddr.useProxyProtocol"]
return ok && len(v) > 0 && v[0] == "true"
}

// AutomountServiceAccountToken implements reloadable interface
Expand Down Expand Up @@ -545,7 +543,7 @@ func (cr *VMAgent) GetMetricPath() string {
}

// ExtraArgs returns additionally configured command-line arguments
func (cr *VMAgent) GetExtraArgs() map[string]string {
func (cr *VMAgent) GetExtraArgs() map[string]ArgValue {
return cr.Spec.ExtraArgs
}

Expand Down
4 changes: 2 additions & 2 deletions api/operator/v1beta1/vmalert_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ func (cr *VMAlert) GetReloaderParams() *CommonConfigReloaderParams {
// UseProxyProtocol implements reloadable interface
func (cr *VMAlert) UseProxyProtocol() bool {
v, ok := cr.Spec.ExtraArgs["httpListenAddr.useProxyProtocol"]
return ok && v == "true"
return ok && len(v) > 0 && v[0] == "true"
}

// AutomountServiceAccountToken implements reloadable interface
Expand Down Expand Up @@ -457,7 +457,7 @@ func (cr *VMAlert) GetMetricPath() string {
}

// GetExtraArgs returns additionally configured command-line arguments
func (cr *VMAlert) GetExtraArgs() map[string]string {
func (cr *VMAlert) GetExtraArgs() map[string]ArgValue {
return cr.Spec.ExtraArgs
}

Expand Down
2 changes: 1 addition & 1 deletion api/operator/v1beta1/vmalert_types_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ func TestVMAlert_ValidateOk(t *testing.T) {
f(VMAlertSpec{
Datasource: VMAlertDatasourceSpec{URL: "http://some-url"},
CommonApplicationDeploymentParams: CommonApplicationDeploymentParams{
ExtraArgs: map[string]string{"notifier.blackhole": "true"},
ExtraArgs: map[string]ArgValue{"notifier.blackhole": []string{"true"}},
},
})

Expand Down
8 changes: 3 additions & 5 deletions api/operator/v1beta1/vmalertmanager_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -236,10 +236,8 @@ func (cr *VMAlertmanager) GetReloaderParams() *CommonConfigReloaderParams {

// UseProxyProtocol implements reloadable interface
func (cr *VMAlertmanager) UseProxyProtocol() bool {
if v, ok := cr.Spec.ExtraArgs["httpListenAddr.useProxyProtocol"]; ok && v == "true" {
return true
}
return false
v, ok := cr.Spec.ExtraArgs["httpListenAddr.useProxyProtocol"]
return ok && len(v) > 0 && v[0] == "true"
}

// AutomountServiceAccountToken implements reloadable interface
Expand Down Expand Up @@ -423,7 +421,7 @@ func (cr *VMAlertmanager) GetMetricPath() string {
}

// GetExtraArgs returns additionally configured command-line arguments
func (cr *VMAlertmanager) GetExtraArgs() map[string]string {
func (cr *VMAlertmanager) GetExtraArgs() map[string]ArgValue {
return cr.Spec.ExtraArgs
}

Expand Down
8 changes: 3 additions & 5 deletions api/operator/v1beta1/vmauth_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -664,7 +664,7 @@ func (cr *VMAuth) GetMetricPath() string {
}

// GetExtraArgs returns additionally configured command-line arguments
func (cr *VMAuth) GetExtraArgs() map[string]string {
func (cr *VMAuth) GetExtraArgs() map[string]ArgValue {
return cr.Spec.ExtraArgs
}

Expand Down Expand Up @@ -712,10 +712,8 @@ func (cr *VMAuth) UseProxyProtocol() bool {
if cr.Spec.UseProxyProtocol {
return hasInternalPorts
}
if v, ok := cr.Spec.ExtraArgs["httpListenAddr.useProxyProtocol"]; ok && v == "true" {
return hasInternalPorts
}
return false
v, ok := cr.Spec.ExtraArgs["httpListenAddr.useProxyProtocol"]
return ok && len(v) > 0 && v[0] == "true" && hasInternalPorts
}

// AutomountServiceAccountToken implements reloadable interface
Expand Down
24 changes: 13 additions & 11 deletions api/operator/v1beta1/vmcluster_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -554,7 +554,9 @@ type VMBackup struct {
Resources corev1.ResourceRequirements `json:"resources,omitempty"`
// extra args like maxBytesPerSecond default 0
// +optional
ExtraArgs map[string]string `json:"extraArgs,omitempty"`
// +kubebuilder:validation:Schemaless
// +kubebuilder:pruning:PreserveUnknownFields
ExtraArgs map[string]ArgValue `json:"extraArgs,omitempty"`
// +optional
ExtraEnvs []corev1.EnvVar `json:"extraEnvs,omitempty"`
// ExtraEnvsFrom defines source of env variables for the application container
Expand Down Expand Up @@ -750,7 +752,7 @@ func (cr *VMSelect) GetMetricPath() string {
}

// ExtraArgs returns additionally configured command-line arguments
func (cr *VMSelect) GetExtraArgs() map[string]string {
func (cr *VMSelect) GetExtraArgs() map[string]ArgValue {
return cr.ExtraArgs
}

Expand All @@ -768,7 +770,7 @@ func (cr *VMInsert) GetMetricPath() string {
}

// ExtraArgs returns additionally configured command-line arguments
func (cr *VMInsert) GetExtraArgs() map[string]string {
func (cr *VMInsert) GetExtraArgs() map[string]ArgValue {
return cr.ExtraArgs
}

Expand All @@ -786,7 +788,7 @@ func (cr *VMStorage) GetMetricPath() string {
}

// ExtraArgs returns additionally configured command-line arguments
func (cr *VMStorage) GetExtraArgs() map[string]string {
func (cr *VMStorage) GetExtraArgs() map[string]ArgValue {
return cr.ExtraArgs
}

Expand All @@ -796,23 +798,23 @@ func (cr *VMStorage) GetServiceScrape() *VMServiceScrapeSpec {
}

// SnapshotCreatePathWithFlags returns url for accessing vmbackupmanager component
func (*VMBackup) SnapshotCreatePathWithFlags(port string, extraArgs map[string]string) string {
func (*VMBackup) SnapshotCreatePathWithFlags(port string, extraArgs map[string]ArgValue) string {
return joinBackupAuthKey(fmt.Sprintf("http://localhost:%s%s", port, path.Join(BuildPathWithPrefixFlag(extraArgs, snapshotCreate))), extraArgs)
}

// SnapshotDeletePathWithFlags returns url for accessing vmbackupmanager component
func (*VMBackup) SnapshotDeletePathWithFlags(port string, extraArgs map[string]string) string {
func (*VMBackup) SnapshotDeletePathWithFlags(port string, extraArgs map[string]ArgValue) string {
return joinBackupAuthKey(fmt.Sprintf("http://localhost:%s%s", port, path.Join(BuildPathWithPrefixFlag(extraArgs, snapshotDelete))), extraArgs)
}

func joinBackupAuthKey(urlPath string, extraArgs map[string]string) string {
if authKey, ok := extraArgs["snapshotAuthKey"]; ok {
func joinBackupAuthKey(urlPath string, extraArgs map[string]ArgValue) string {
if authKey, ok := extraArgs["snapshotAuthKey"]; ok && len(authKey) > 0 {
separator := "?"
idx := strings.IndexByte(urlPath, '?')
if idx > 0 {
separator = "&"
}
return urlPath + separator + "authKey=" + authKey
return urlPath + separator + "authKey=" + authKey[0]
}
return urlPath
}
Expand All @@ -833,7 +835,7 @@ func (cr *VMCluster) IsOwnsServiceAccount() bool {
// AsURL implements stub for interface.
func (cr *VMCluster) AsURL(kind ClusterComponent) string {
var port string
var extraArgs map[string]string
var extraArgs map[string]ArgValue
switch kind {
case ClusterComponentSelect:
if cr.Spec.VMSelect == nil {
Expand Down Expand Up @@ -1010,7 +1012,7 @@ func (cr *VMAuthLoadBalancerSpec) GetServiceScrape() *VMServiceScrapeSpec {
}

// GetExtraArgs implements build.serviceScrapeBuilder interface
func (cr *VMAuthLoadBalancerSpec) GetExtraArgs() map[string]string {
func (cr *VMAuthLoadBalancerSpec) GetExtraArgs() map[string]ArgValue {
return cr.ExtraArgs
}

Expand Down
23 changes: 13 additions & 10 deletions api/operator/v1beta1/vmcluster_types_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
func TestVMBackup_SnapshotDeletePathWithFlags(t *testing.T) {
type opts struct {
port string
extraArgs map[string]string
extraArgs map[string]ArgValue
want string
}
f := func(o opts) {
Expand All @@ -28,16 +28,19 @@ func TestVMBackup_SnapshotDeletePathWithFlags(t *testing.T) {

// delete path with prefix
f(opts{
port: "8428",
extraArgs: map[string]string{vmPathPrefixFlagName: "/pref-1", "other-flag": "other-value"},
want: "http://localhost:8428/pref-1/snapshot/delete",
port: "8428",
extraArgs: map[string]ArgValue{
vmPathPrefixFlagName: []string{"/pref-1"},
"other-flag": []string{"other-value"},
},
want: "http://localhost:8428/pref-1/snapshot/delete",
})
}

func TestVMBackup_SnapshotCreatePathWithFlags(t *testing.T) {
type opts struct {
port string
extraArgs map[string]string
extraArgs map[string]ArgValue
want string
}
f := func(o opts) {
Expand All @@ -56,18 +59,18 @@ func TestVMBackup_SnapshotCreatePathWithFlags(t *testing.T) {
// with prefix
f(opts{
port: "8429",
extraArgs: map[string]string{
"http.pathPrefix": "/prefix/custom",
extraArgs: map[string]ArgValue{
"http.pathPrefix": []string{"/prefix/custom"},
},
want: "http://localhost:8429/prefix/custom/snapshot/create",
})

// with prefix and auth key
f(opts{
port: "8429",
extraArgs: map[string]string{
"http.pathPrefix": "/prefix/custom",
"snapshotAuthKey": "some-auth-key",
extraArgs: map[string]ArgValue{
"http.pathPrefix": []string{"/prefix/custom"},
"snapshotAuthKey": []string{"some-auth-key"},
},
want: "http://localhost:8429/prefix/custom/snapshot/create?authKey=some-auth-key",
})
Expand Down
Loading