fix: context handling
All checks were successful
Release Secrets Manager Action / build (push) Successful in 1m12s

This commit is contained in:
Marcel S. Henselin 2026-05-13 12:08:28 +02:00
parent 3c562f3d63
commit c302a35868
3 changed files with 10 additions and 8 deletions

View file

@ -1,6 +1,7 @@
package main package main
import ( import (
"context"
"fmt" "fmt"
"log" "log"
"os" "os"
@ -19,6 +20,8 @@ func main() {
log.Println(".env file not found, using regular environment variables") log.Println(".env file not found, using regular environment variables")
} }
ctx := context.TODO()
var cfg config.Config var cfg config.Config
err = env.Parse(&cfg) err = env.Parse(&cfg)
if err != nil { if err != nil {
@ -26,11 +29,11 @@ func main() {
} }
cfg = config.ValidateConfig(cfg) cfg = config.ValidateConfig(cfg)
s, err := secretsmanager.New(cfg) s, err := secretsmanager.New(ctx, cfg)
if err != nil { if err != nil {
log.Fatalf("Error initializing secrets manager client: %s", err) log.Fatalf("Error initializing secrets manager client: %s", err)
} }
data, err := s.GetSecrets(cfg) data, err := s.GetSecrets(ctx, cfg)
if err != nil { if err != nil {
log.Fatalf("Error retrieving secrets: %s", err) log.Fatalf("Error retrieving secrets: %s", err)
} }

View file

@ -12,13 +12,11 @@ import (
) )
type SecretsManager struct { type SecretsManager struct {
Ctx context.Context
Client *vault.Client Client *vault.Client
} }
func New(cfg config.Config) (*SecretsManager, error) { func New(ctx context.Context, cfg config.Config) (*SecretsManager, error) {
s := SecretsManager{} s := SecretsManager{}
s.Ctx = context.Background()
client, err := vault.New( client, err := vault.New(
vault.WithAddress(cfg.VaultAddr), vault.WithAddress(cfg.VaultAddr),
vault.WithRequestTimeout(30*time.Second), vault.WithRequestTimeout(30*time.Second),
@ -32,7 +30,7 @@ func New(cfg config.Config) (*SecretsManager, error) {
s.Client = client s.Client = client
config.InfoLog("Attempting to login with user %s", cfg.VaultUsername) 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 { if err != nil {
return nil, fmt.Errorf("vault login request failed: %w", err) return nil, fmt.Errorf("vault login request failed: %w", err)
} }

View file

@ -1,15 +1,16 @@
package secretsmanager package secretsmanager
import ( import (
"context"
"fmt" "fmt"
"secretsmanager/config" "secretsmanager/config"
"github.com/hashicorp/vault-client-go" "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) 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 { if err != nil {
return nil, fmt.Errorf("failed to read secret from vault: %w", err) return nil, fmt.Errorf("failed to read secret from vault: %w", err)
} }