From 286b79dc4838b7954a76ccab21c9d4500b3a9517 Mon Sep 17 00:00:00 2001
From: Roman Khavronenko <hagen1778@gmail.com>
Date: Wed, 15 Sep 2021 01:53:31 +0300
Subject: [PATCH] vmalert: create basic auth config only if args aren't empty
 (#1618)

* vmalert: create basic auth config only if args aren't empty

follow-up after 68721f6

* vmalert: make lint happy
---
 app/vmalert/datasource/init.go  |  8 +-------
 app/vmalert/remoteread/init.go  |  8 +-------
 app/vmalert/remotewrite/init.go |  8 +-------
 app/vmalert/utils/auth.go       | 18 ++++++++++++++++++
 4 files changed, 21 insertions(+), 21 deletions(-)
 create mode 100644 app/vmalert/utils/auth.go

diff --git a/app/vmalert/datasource/init.go b/app/vmalert/datasource/init.go
index 905938e00c..3e28d6e43e 100644
--- a/app/vmalert/datasource/init.go
+++ b/app/vmalert/datasource/init.go
@@ -7,7 +7,6 @@ import (
 	"strings"
 
 	"github.com/VictoriaMetrics/VictoriaMetrics/app/vmalert/utils"
-	"github.com/VictoriaMetrics/VictoriaMetrics/lib/promauth"
 )
 
 var (
@@ -61,12 +60,7 @@ func Init(extraParams []Param) (QuerierBuilder, error) {
 		})
 	}
 
-	baCfg := &promauth.BasicAuthConfig{
-		Username:     *basicAuthUsername,
-		Password:     *basicAuthPassword,
-		PasswordFile: *basicAuthPasswordFile,
-	}
-	authCfg, err := promauth.NewConfig(".", nil, baCfg, *bearerToken, *bearerTokenFile, nil, nil)
+	authCfg, err := utils.AuthConfig(*basicAuthUsername, *basicAuthPassword, *basicAuthPasswordFile, *bearerToken, *bearerTokenFile)
 	if err != nil {
 		return nil, fmt.Errorf("failed to configure auth: %w", err)
 	}
diff --git a/app/vmalert/remoteread/init.go b/app/vmalert/remoteread/init.go
index 7a739d16d2..73a2993b5d 100644
--- a/app/vmalert/remoteread/init.go
+++ b/app/vmalert/remoteread/init.go
@@ -7,7 +7,6 @@ import (
 
 	"github.com/VictoriaMetrics/VictoriaMetrics/app/vmalert/datasource"
 	"github.com/VictoriaMetrics/VictoriaMetrics/app/vmalert/utils"
-	"github.com/VictoriaMetrics/VictoriaMetrics/lib/promauth"
 )
 
 var (
@@ -39,12 +38,7 @@ func Init() (datasource.QuerierBuilder, error) {
 	if err != nil {
 		return nil, fmt.Errorf("failed to create transport: %w", err)
 	}
-	baCfg := &promauth.BasicAuthConfig{
-		Username:     *basicAuthUsername,
-		Password:     *basicAuthPassword,
-		PasswordFile: *basicAuthPasswordFile,
-	}
-	authCfg, err := promauth.NewConfig(".", nil, baCfg, *bearerToken, *bearerTokenFile, nil, nil)
+	authCfg, err := utils.AuthConfig(*basicAuthUsername, *basicAuthPassword, *basicAuthPasswordFile, *bearerToken, *bearerTokenFile)
 	if err != nil {
 		return nil, fmt.Errorf("failed to configure auth: %w", err)
 	}
diff --git a/app/vmalert/remotewrite/init.go b/app/vmalert/remotewrite/init.go
index aa0b70ba2c..3fdac9201d 100644
--- a/app/vmalert/remotewrite/init.go
+++ b/app/vmalert/remotewrite/init.go
@@ -7,7 +7,6 @@ import (
 	"time"
 
 	"github.com/VictoriaMetrics/VictoriaMetrics/app/vmalert/utils"
-	"github.com/VictoriaMetrics/VictoriaMetrics/lib/promauth"
 )
 
 var (
@@ -47,12 +46,7 @@ func Init(ctx context.Context) (*Client, error) {
 		return nil, fmt.Errorf("failed to create transport: %w", err)
 	}
 
-	baCfg := &promauth.BasicAuthConfig{
-		Username:     *basicAuthUsername,
-		Password:     *basicAuthPassword,
-		PasswordFile: *basicAuthPasswordFile,
-	}
-	authCfg, err := promauth.NewConfig(".", nil, baCfg, *bearerToken, *bearerTokenFile, nil, nil)
+	authCfg, err := utils.AuthConfig(*basicAuthUsername, *basicAuthPassword, *basicAuthPasswordFile, *bearerToken, *bearerTokenFile)
 	if err != nil {
 		return nil, fmt.Errorf("failed to configure auth: %w", err)
 	}
diff --git a/app/vmalert/utils/auth.go b/app/vmalert/utils/auth.go
new file mode 100644
index 0000000000..ed9c54e702
--- /dev/null
+++ b/app/vmalert/utils/auth.go
@@ -0,0 +1,18 @@
+package utils
+
+import (
+	"github.com/VictoriaMetrics/VictoriaMetrics/lib/promauth"
+)
+
+// AuthConfig returns promauth.Config based on the given params
+func AuthConfig(baUser, baPass, baFile, bearerToken, bearerTokenFile string) (*promauth.Config, error) {
+	var baCfg *promauth.BasicAuthConfig
+	if baUser != "" || baPass != "" || baFile != "" {
+		baCfg = &promauth.BasicAuthConfig{
+			Username:     baUser,
+			Password:     baPass,
+			PasswordFile: baFile,
+		}
+	}
+	return promauth.NewConfig(".", nil, baCfg, bearerToken, bearerTokenFile, nil, nil)
+}