Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
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
3 changes: 2 additions & 1 deletion sdkexamples/install.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ func runInstall(ctx context.Context, logger *log.Logger, settings *cli.EnvSettin
installClient.KeyFile,
installClient.CaFile,
installClient.InsecureSkipTLSVerify,
installClient.PlainHTTP)
installClient.PlainHTTP,
nil)
if err != nil {
return fmt.Errorf("failed to created registry client: %w", err)
}
Expand Down
10 changes: 9 additions & 1 deletion sdkexamples/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"context"
"fmt"
"log"
"log/slog"
"net/http"
"os"

Expand Down Expand Up @@ -42,7 +43,7 @@ func initActionConfigList(settings *cli.EnvSettings, logger *log.Logger, allName
return actionConfig, nil
}

func newRegistryClient(settings *cli.EnvSettings, certFile, keyFile, caFile string, insecureSkipTLSVerify, plainHTTP bool) (*registry.Client, error) {
func newRegistryClient(settings *cli.EnvSettings, certFile, keyFile, caFile string, insecureSkipTLSVerify, plainHTTP bool, logger *slog.Logger) (*registry.Client, error) {

opts := []registry.ClientOption{
registry.ClientOptDebug(settings.Debug),
Expand All @@ -55,6 +56,13 @@ func newRegistryClient(settings *cli.EnvSettings, certFile, keyFile, caFile stri
opts = append(opts, registry.ClientOptPlainHTTP())
}
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added registry.ClientOptLogger documentation based on PR #31833, which introduces this new option to allow SDK users to inject custom *slog.Logger instances rather than relying on global slog state.

Source: helm/helm#31833


// Inject a custom structured logger for diagnostic messages.
// This prevents Helm from mutating global process state, which is
// important when embedding Helm as a library.
if logger != nil {
opts = append(opts, registry.ClientOptLogger(logger))
}

if certFile != "" && keyFile != "" || caFile != "" || insecureSkipTLSVerify {
tlsConf, err := NewTLSConfig(
WithInsecureSkipVerify(insecureSkipTLSVerify),
Expand Down
3 changes: 2 additions & 1 deletion sdkexamples/pull.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ func runPull(logger *log.Logger, settings *cli.EnvSettings, chartRef, chartVersi
pullClient.KeyFile,
pullClient.CaFile,
pullClient.InsecureSkipTLSVerify,
pullClient.PlainHTTP)
pullClient.PlainHTTP,
nil)
if err != nil {
return fmt.Errorf("failed to created registry client: %w", err)
}
Expand Down
3 changes: 2 additions & 1 deletion sdkexamples/upgrade.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ func runUpgrade(ctx context.Context, logger *log.Logger, settings *cli.EnvSettin
upgradeClient.KeyFile,
upgradeClient.CaFile,
upgradeClient.InsecureSkipTLSVerify,
upgradeClient.PlainHTTP)
upgradeClient.PlainHTTP,
nil)
if err != nil {
return fmt.Errorf("missing registry client: %w", err)
}
Expand Down
1 change: 1 addition & 0 deletions versioned_docs/version-3/sdk/_install.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ func runInstall(ctx context.Context, logger *log.Logger, settings *cli.EnvSettin
registryClient, err := newRegistryClientTLS(
settings,
logger,
nil,
installClient.CertFile,
installClient.KeyFile,
installClient.CaFile,
Expand Down
13 changes: 10 additions & 3 deletions versioned_docs/version-3/sdk/_main.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"context"
"fmt"
"log"
"log/slog"
"os"

"helm.sh/helm/v3/pkg/action"
Expand Down Expand Up @@ -43,7 +44,7 @@ func initActionConfigList(settings *cli.EnvSettings, logger *log.Logger, allName
return actionConfig, nil
}

func newRegistryClient(settings *cli.EnvSettings, plainHTTP bool) (*registry.Client, error) {
func newRegistryClient(settings *cli.EnvSettings, plainHTTP bool, logger *slog.Logger) (*registry.Client, error) {
opts := []registry.ClientOption{
registry.ClientOptDebug(settings.Debug),
registry.ClientOptEnableCache(true),
Expand All @@ -53,6 +54,12 @@ func newRegistryClient(settings *cli.EnvSettings, plainHTTP bool) (*registry.Cli
if plainHTTP {
opts = append(opts, registry.ClientOptPlainHTTP())
}
// Inject a custom structured logger for diagnostic messages.
// This prevents Helm from mutating global process state, which is
// important when embedding Helm as a library.
if logger != nil {
opts = append(opts, registry.ClientOptLogger(logger))
}

// Create a new registry client
registryClient, err := registry.NewClient(opts...)
Expand All @@ -62,7 +69,7 @@ func newRegistryClient(settings *cli.EnvSettings, plainHTTP bool) (*registry.Cli
return registryClient, nil
}

func newRegistryClientTLS(settings *cli.EnvSettings, logger *log.Logger, certFile, keyFile, caFile string, insecureSkipTLSverify, plainHTTP bool) (*registry.Client, error) {
func newRegistryClientTLS(settings *cli.EnvSettings, logger *log.Logger, slogger *slog.Logger, certFile, keyFile, caFile string, insecureSkipTLSverify, plainHTTP bool) (*registry.Client, error) {
if certFile != "" && keyFile != "" || caFile != "" || insecureSkipTLSverify {
registryClient, err := registry.NewRegistryClientWithTLS(
logger.Writer(),
Expand All @@ -78,7 +85,7 @@ func newRegistryClientTLS(settings *cli.EnvSettings, logger *log.Logger, certFil
}
return registryClient, nil
}
registryClient, err := newRegistryClient(settings, plainHTTP)
registryClient, err := newRegistryClient(settings, plainHTTP, slogger)
if err != nil {
return nil, err
}
Expand Down
2 changes: 1 addition & 1 deletion versioned_docs/version-3/sdk/_pull.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ func runPull(logger *log.Logger, settings *cli.EnvSettings, chartRef, chartVersi
return fmt.Errorf("failed to init action config: %w", err)
}

registryClient, err := newRegistryClient(settings, false)
registryClient, err := newRegistryClient(settings, false, nil)
if err != nil {
return fmt.Errorf("failed to created registry client: %w", err)
}
Expand Down
1 change: 1 addition & 0 deletions versioned_docs/version-3/sdk/_upgrade.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ func runUpgrade(ctx context.Context, logger *log.Logger, settings *cli.EnvSettin
registryClient, err := newRegistryClientTLS(
settings,
logger,
nil,
upgradeClient.CertFile,
upgradeClient.KeyFile,
upgradeClient.CaFile,
Expand Down
Loading