diff --git a/main.go b/main.go index 38c56b5..c9b240f 100644 --- a/main.go +++ b/main.go @@ -1,6 +1,7 @@ package main import ( + "context" "fmt" "log" "os" @@ -19,6 +20,8 @@ func main() { log.Println(".env file not found, using regular environment variables") } + ctx := context.TODO() + var cfg config.Config err = env.Parse(&cfg) if err != nil { @@ -26,11 +29,11 @@ func main() { } cfg = config.ValidateConfig(cfg) - s, err := secretsmanager.New(cfg) + s, err := secretsmanager.New(ctx, cfg) if err != nil { log.Fatalf("Error initializing secrets manager client: %s", err) } - data, err := s.GetSecrets(cfg) + data, err := s.GetSecrets(ctx, cfg) if err != nil { log.Fatalf("Error retrieving secrets: %s", err) } diff --git a/secretsmanager/client.go b/secretsmanager/client.go index f38c5d3..197e477 100644 --- a/secretsmanager/client.go +++ b/secretsmanager/client.go @@ -12,13 +12,11 @@ import ( ) type SecretsManager struct { - Ctx context.Context Client *vault.Client } -func New(cfg config.Config) (*SecretsManager, error) { +func New(ctx context.Context, cfg config.Config) (*SecretsManager, error) { s := SecretsManager{} - s.Ctx = context.Background() client, err := vault.New( vault.WithAddress(cfg.VaultAddr), vault.WithRequestTimeout(30*time.Second), @@ -32,7 +30,7 @@ func New(cfg config.Config) (*SecretsManager, error) { 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}) + loginResp, err := s.Client.Auth.UserpassLogin(ctx, cfg.VaultUsername, schema.UserpassLoginRequest{Password: cfg.VaultPassword}) if err != nil { return nil, fmt.Errorf("vault login request failed: %w", err) } diff --git a/secretsmanager/secrets.go b/secretsmanager/secrets.go index bea7521..5b7e5fe 100644 --- a/secretsmanager/secrets.go +++ b/secretsmanager/secrets.go @@ -1,15 +1,16 @@ package secretsmanager import ( + "context" "fmt" "secretsmanager/config" "github.com/hashicorp/vault-client-go" ) -func (s *SecretsManager) GetSecrets(cfg config.Config) (map[string]interface{}, error) { +func (s *SecretsManager) GetSecrets(ctx context.Context, cfg config.Config) (map[string]interface{}, 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)) + secret, err := s.Client.Secrets.KvV2Read(ctx, cfg.VaultPath, vault.WithMountPath(cfg.VaultSecretsManagerID)) if err != nil { return nil, fmt.Errorf("failed to read secret from vault: %w", err) }