Skip to content

Commit 0898ca2

Browse files
authored
Merge pull request #9801 from afbjorklund/podman-env-existing
Add support for restoring existing podman env
2 parents 0223a6f + cd683b3 commit 0898ca2

File tree

3 files changed

+47
-3
lines changed

3 files changed

+47
-3
lines changed

Diff for: cmd/minikube/cmd/podman-env.go

+34-3
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
"github.com/docker/machine/libmachine/drivers"
3030
"github.com/docker/machine/libmachine/ssh"
3131
"github.com/spf13/cobra"
32+
"k8s.io/minikube/pkg/drivers/kic/oci"
3233
"k8s.io/minikube/pkg/minikube/command"
3334
"k8s.io/minikube/pkg/minikube/constants"
3435
"k8s.io/minikube/pkg/minikube/driver"
@@ -39,9 +40,27 @@ import (
3940
"k8s.io/minikube/pkg/minikube/shell"
4041
)
4142

42-
var podmanEnv1Tmpl = fmt.Sprintf("{{ .Prefix }}%s{{ .Delimiter }}{{ .VarlinkBridge }}{{ .Suffix }}{{ .Prefix }}%s{{ .Delimiter }}{{ .MinikubePodmanProfile }}{{ .Suffix }}{{ .UsageHint }}", constants.PodmanVarlinkBridgeEnv, constants.MinikubeActivePodmanEnv)
43-
44-
var podmanEnv2Tmpl = fmt.Sprintf("{{ .Prefix }}%s{{ .Delimiter }}{{ .ContainerHost }}{{ .Suffix }}{{ if .ContainerSSHKey }}{{ .Prefix }}%s{{ .Delimiter }}{{ .ContainerSSHKey}}{{ .Suffix }}{{ end }}{{ .Prefix }}%s{{ .Delimiter }}{{ .MinikubePodmanProfile }}{{ .Suffix }}{{ .UsageHint }}", constants.PodmanContainerHostEnv, constants.PodmanContainerSSHKeyEnv, constants.MinikubeActivePodmanEnv)
43+
var podmanEnv1Tmpl = fmt.Sprintf(
44+
"{{ .Prefix }}%s{{ .Delimiter }}{{ .VarlinkBridge }}{{ .Suffix }}"+
45+
"{{ .Prefix }}%s{{ .Delimiter }}{{ .MinikubePodmanProfile }}{{ .Suffix }}"+
46+
"{{ .UsageHint }}",
47+
constants.PodmanVarlinkBridgeEnv,
48+
constants.MinikubeActivePodmanEnv)
49+
50+
var podmanEnv2Tmpl = fmt.Sprintf(
51+
"{{ .Prefix }}%s{{ .Delimiter }}{{ .ContainerHost }}{{ .Suffix }}"+
52+
"{{ if .ContainerSSHKey }}"+
53+
"{{ .Prefix }}%s{{ .Delimiter }}{{ .ContainerSSHKey}}{{ .Suffix }}"+
54+
"{{ end }}"+
55+
"{{ if .ExistingContainerHost }}"+
56+
"{{ .Prefix }}%s{{ .Delimiter }}{{ .ExistingContainerHost }}{{ .Suffix }}"+
57+
"{{ end }}"+
58+
"{{ .Prefix }}%s{{ .Delimiter }}{{ .MinikubePodmanProfile }}{{ .Suffix }}"+
59+
"{{ .UsageHint }}",
60+
constants.PodmanContainerHostEnv,
61+
constants.PodmanContainerSSHKeyEnv,
62+
constants.ExistingContainerHostEnv,
63+
constants.MinikubeActivePodmanEnv)
4564

4665
// PodmanShellConfig represents the shell config for Podman
4766
type PodmanShellConfig struct {
@@ -50,6 +69,8 @@ type PodmanShellConfig struct {
5069
ContainerHost string
5170
ContainerSSHKey string
5271
MinikubePodmanProfile string
72+
73+
ExistingContainerHost string
5374
}
5475

5576
var podmanUnset bool
@@ -65,6 +86,9 @@ func podmanShellCfgSet(ec PodmanEnvConfig, envMap map[string]string) *PodmanShel
6586
s.VarlinkBridge = envMap[constants.PodmanVarlinkBridgeEnv]
6687
s.ContainerHost = envMap[constants.PodmanContainerHostEnv]
6788
s.ContainerSSHKey = envMap[constants.PodmanContainerSSHKeyEnv]
89+
90+
s.ExistingContainerHost = envMap[constants.ExistingContainerHostEnv]
91+
6892
s.MinikubePodmanProfile = envMap[constants.MinikubeActivePodmanEnv]
6993

7094
return s
@@ -259,6 +283,13 @@ func podmanEnvVars(ec PodmanEnvConfig) map[string]string {
259283
for k, v := range env0 {
260284
env[k] = v
261285
}
286+
if os.Getenv(constants.MinikubeActivePodmanEnv) == "" {
287+
e := constants.PodmanContainerHostEnv
288+
if v := oci.InitialEnv(e); v != "" {
289+
key := constants.ExistingContainerHostEnv
290+
env[key] = v
291+
}
292+
}
262293
return env
263294
}
264295

Diff for: pkg/drivers/kic/oci/env.go

+10
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
var initialEnvs = make(map[string]string)
2626

2727
func init() {
28+
// docker
2829
for _, env := range constants.DockerDaemonEnvs {
2930
if v, set := os.LookupEnv(env); set {
3031
initialEnvs[env] = v
@@ -34,6 +35,15 @@ func init() {
3435
initialEnvs[exEnv] = v
3536
}
3637
}
38+
// podman
39+
env := constants.PodmanContainerHostEnv
40+
if v, set := os.LookupEnv(env); set {
41+
initialEnvs[env] = v
42+
}
43+
exEnv := constants.ExistingContainerHostEnv
44+
if v, set := os.LookupEnv(exEnv); set {
45+
initialEnvs[exEnv] = v
46+
}
3747
}
3848

3949
// InitialEnv returns the value of the environment variable env before any environment changes made by minikube

Diff for: pkg/minikube/constants/constants.go

+3
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,9 @@ const (
9393
ExistingDockerCertPathEnv = MinikubeExistingPrefix + "DOCKER_CERT_PATH"
9494
// ExistingDockerTLSVerifyEnv is used to save original docker environment
9595
ExistingDockerTLSVerifyEnv = MinikubeExistingPrefix + "DOCKER_TLS_VERIFY"
96+
97+
// ExistingContainerHostEnv is used to save original podman environment
98+
ExistingContainerHostEnv = MinikubeExistingPrefix + "CONTAINER_HOST"
9699
)
97100

98101
var (

0 commit comments

Comments
 (0)