diff --git a/main.go b/main.go index 861211c..24b5f8e 100644 --- a/main.go +++ b/main.go @@ -18,8 +18,11 @@ func main() { } cfg = config.ValidateConfig(cfg) - s := secretsmanager.InitializeClient(cfg) - data, err := secretsmanager.GetSecrets(&s, cfg) + s, err := secretsmanager.New(cfg) + if err != nil { + log.Fatalf("Error initializing secrets manager client: %s", err) + } + data, err := s.GetSecrets(cfg) if err != nil { log.Fatalf("Error retrieving secrets: %s", err) } diff --git a/secretsmanager/client.go b/secretsmanager/client.go index 520e182..f38c5d3 100644 --- a/secretsmanager/client.go +++ b/secretsmanager/client.go @@ -2,6 +2,7 @@ package secretsmanager import ( "context" + "fmt" "time" "secretsmanager/config" @@ -15,30 +16,31 @@ type SecretsManager struct { Client *vault.Client } -func InitializeClient( - cfg config.Config, -) SecretsManager { - +func New(cfg config.Config) (*SecretsManager, error) { s := SecretsManager{} s.Ctx = context.Background() - s.Client, _ = vault.New( + client, err := vault.New( vault.WithAddress(cfg.VaultAddr), vault.WithRequestTimeout(30*time.Second), vault.WithTLS(vault.TLSConfiguration{ InsecureSkipVerify: false, }), ) + if err != nil { + return nil, err + } + s.Client = client config.InfoLog("Attempting to login with user %s", cfg.VaultUsername) loginResp, err := s.Client.Auth.UserpassLogin(s.Ctx, cfg.VaultUsername, schema.UserpassLoginRequest{Password: cfg.VaultPassword}) if err != nil { - config.FatalLog("Vault login request failed: %s", err) + return nil, fmt.Errorf("vault login request failed: %w", err) } config.InfoLog("Login successful. Token received.") err = s.Client.SetToken(loginResp.Auth.ClientToken) if err != nil { - config.FatalLog("Vault login could not set token: %s", err) + return nil, fmt.Errorf("vault login could not set token: %w", err) } - return s + return &s, nil } diff --git a/secretsmanager/secrets.go b/secretsmanager/secrets.go index 6e76557..79cd8d9 100644 --- a/secretsmanager/secrets.go +++ b/secretsmanager/secrets.go @@ -7,11 +7,7 @@ import ( "github.com/hashicorp/vault-client-go" ) -func GetSecrets( - s *SecretsManager, - cfg config.Config, -) ([]string, error) { - +func (s *SecretsManager) GetSecrets(cfg config.Config) ([]string, error) { config.InfoLog("Attempting to read secret from mount '%s' at path '%s'", cfg.VaultSecretsManagerID, cfg.VaultPath) secret, err := s.Client.Secrets.KvV2Read(s.Ctx, cfg.VaultPath, vault.WithMountPath(cfg.VaultSecretsManagerID)) if err != nil {