From 554c663b5ad2bd0c0fa4c58559ec2a9b19ed399f Mon Sep 17 00:00:00 2001 From: Jhon Honce Date: Thu, 16 Apr 2020 16:42:33 -0700 Subject: Fix bug where two configurations had been created * registry.PodmanConfig() new returns a pointer to the source of truth Signed-off-by: Jhon Honce --- cmd/podman/registry/config.go | 16 ++++++++++++---- cmd/podman/registry/registry.go | 10 +++++----- cmd/podman/registry/remote.go | 2 +- 3 files changed, 18 insertions(+), 10 deletions(-) (limited to 'cmd/podman/registry') diff --git a/cmd/podman/registry/config.go b/cmd/podman/registry/config.go index 358f9172e..fc6eb538e 100644 --- a/cmd/podman/registry/config.go +++ b/cmd/podman/registry/config.go @@ -6,6 +6,7 @@ import ( "path/filepath" "runtime" "strings" + "sync" "github.com/containers/common/pkg/config" "github.com/containers/libpod/pkg/domain/entities" @@ -19,11 +20,18 @@ const ( ) var ( - PodmanOptions entities.PodmanConfig + podmanOptions entities.PodmanConfig + podmanSync sync.Once ) -// NewPodmanConfig creates a PodmanConfig from the environment -func NewPodmanConfig() entities.PodmanConfig { +// PodmanConfig returns an entities.PodmanConfig built up from +// environment and CLI +func PodmanConfig() *entities.PodmanConfig { + podmanSync.Do(newPodmanConfig) + return &podmanOptions +} + +func newPodmanConfig() { if err := setXdgDirs(); err != nil { fmt.Fprintf(os.Stderr, err.Error()) os.Exit(1) @@ -63,7 +71,7 @@ func NewPodmanConfig() entities.PodmanConfig { cfg.Network.NetworkConfigDir = "" } - return entities.PodmanConfig{Config: cfg, EngineMode: mode} + podmanOptions = entities.PodmanConfig{Config: cfg, EngineMode: mode} } // SetXdgDirs ensures the XDG_RUNTIME_DIR env and XDG_CONFIG_HOME variables are set. diff --git a/cmd/podman/registry/registry.go b/cmd/podman/registry/registry.go index 1c5e5d21b..2e9d59d10 100644 --- a/cmd/podman/registry/registry.go +++ b/cmd/podman/registry/registry.go @@ -49,8 +49,8 @@ func ImageEngine() entities.ImageEngine { // NewImageEngine is a wrapper for building an ImageEngine to be used for PreRunE functions func NewImageEngine(cmd *cobra.Command, args []string) (entities.ImageEngine, error) { if imageEngine == nil { - PodmanOptions.FlagSet = cmd.Flags() - engine, err := infra.NewImageEngine(PodmanOptions) + podmanOptions.FlagSet = cmd.Flags() + engine, err := infra.NewImageEngine(&podmanOptions) if err != nil { return nil, err } @@ -66,8 +66,8 @@ func ContainerEngine() entities.ContainerEngine { // NewContainerEngine is a wrapper for building an ContainerEngine to be used for PreRunE functions func NewContainerEngine(cmd *cobra.Command, args []string) (entities.ContainerEngine, error) { if containerEngine == nil { - PodmanOptions.FlagSet = cmd.Flags() - engine, err := infra.NewContainerEngine(PodmanOptions) + podmanOptions.FlagSet = cmd.Flags() + engine, err := infra.NewContainerEngine(&podmanOptions) if err != nil { return nil, err } @@ -101,7 +101,7 @@ func Context() context.Context { } func ContextWithOptions(ctx context.Context) context.Context { - cliCtx = context.WithValue(ctx, PodmanOptionsKey{}, PodmanOptions) + cliCtx = context.WithValue(ctx, PodmanOptionsKey{}, podmanOptions) return cliCtx } diff --git a/cmd/podman/registry/remote.go b/cmd/podman/registry/remote.go index 5378701e7..95870750e 100644 --- a/cmd/podman/registry/remote.go +++ b/cmd/podman/registry/remote.go @@ -5,5 +5,5 @@ import ( ) func IsRemote() bool { - return PodmanOptions.EngineMode == entities.TunnelMode + return podmanOptions.EngineMode == entities.TunnelMode } -- cgit v1.2.3-54-g00ecf