Merge pull request #9801 from afbjorklund/podman-env-existing

Add support for restoring existing podman env
pull/9883/head
Medya Ghazizadeh 2020-12-08 10:25:50 -08:00 committed by GitHub
commit 0898ca21e4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 46 additions and 2 deletions

View File

@ -29,6 +29,7 @@ import (
"github.com/docker/machine/libmachine/drivers"
"github.com/docker/machine/libmachine/ssh"
"github.com/spf13/cobra"
"k8s.io/minikube/pkg/drivers/kic/oci"
"k8s.io/minikube/pkg/minikube/command"
"k8s.io/minikube/pkg/minikube/constants"
"k8s.io/minikube/pkg/minikube/driver"
@ -39,9 +40,27 @@ import (
"k8s.io/minikube/pkg/minikube/shell"
)
var podmanEnv1Tmpl = fmt.Sprintf("{{ .Prefix }}%s{{ .Delimiter }}{{ .VarlinkBridge }}{{ .Suffix }}{{ .Prefix }}%s{{ .Delimiter }}{{ .MinikubePodmanProfile }}{{ .Suffix }}{{ .UsageHint }}", constants.PodmanVarlinkBridgeEnv, constants.MinikubeActivePodmanEnv)
var podmanEnv1Tmpl = fmt.Sprintf(
"{{ .Prefix }}%s{{ .Delimiter }}{{ .VarlinkBridge }}{{ .Suffix }}"+
"{{ .Prefix }}%s{{ .Delimiter }}{{ .MinikubePodmanProfile }}{{ .Suffix }}"+
"{{ .UsageHint }}",
constants.PodmanVarlinkBridgeEnv,
constants.MinikubeActivePodmanEnv)
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)
var podmanEnv2Tmpl = fmt.Sprintf(
"{{ .Prefix }}%s{{ .Delimiter }}{{ .ContainerHost }}{{ .Suffix }}"+
"{{ if .ContainerSSHKey }}"+
"{{ .Prefix }}%s{{ .Delimiter }}{{ .ContainerSSHKey}}{{ .Suffix }}"+
"{{ end }}"+
"{{ if .ExistingContainerHost }}"+
"{{ .Prefix }}%s{{ .Delimiter }}{{ .ExistingContainerHost }}{{ .Suffix }}"+
"{{ end }}"+
"{{ .Prefix }}%s{{ .Delimiter }}{{ .MinikubePodmanProfile }}{{ .Suffix }}"+
"{{ .UsageHint }}",
constants.PodmanContainerHostEnv,
constants.PodmanContainerSSHKeyEnv,
constants.ExistingContainerHostEnv,
constants.MinikubeActivePodmanEnv)
// PodmanShellConfig represents the shell config for Podman
type PodmanShellConfig struct {
@ -50,6 +69,8 @@ type PodmanShellConfig struct {
ContainerHost string
ContainerSSHKey string
MinikubePodmanProfile string
ExistingContainerHost string
}
var podmanUnset bool
@ -65,6 +86,9 @@ func podmanShellCfgSet(ec PodmanEnvConfig, envMap map[string]string) *PodmanShel
s.VarlinkBridge = envMap[constants.PodmanVarlinkBridgeEnv]
s.ContainerHost = envMap[constants.PodmanContainerHostEnv]
s.ContainerSSHKey = envMap[constants.PodmanContainerSSHKeyEnv]
s.ExistingContainerHost = envMap[constants.ExistingContainerHostEnv]
s.MinikubePodmanProfile = envMap[constants.MinikubeActivePodmanEnv]
return s
@ -259,6 +283,13 @@ func podmanEnvVars(ec PodmanEnvConfig) map[string]string {
for k, v := range env0 {
env[k] = v
}
if os.Getenv(constants.MinikubeActivePodmanEnv) == "" {
e := constants.PodmanContainerHostEnv
if v := oci.InitialEnv(e); v != "" {
key := constants.ExistingContainerHostEnv
env[key] = v
}
}
return env
}

View File

@ -25,6 +25,7 @@ import (
var initialEnvs = make(map[string]string)
func init() {
// docker
for _, env := range constants.DockerDaemonEnvs {
if v, set := os.LookupEnv(env); set {
initialEnvs[env] = v
@ -34,6 +35,15 @@ func init() {
initialEnvs[exEnv] = v
}
}
// podman
env := constants.PodmanContainerHostEnv
if v, set := os.LookupEnv(env); set {
initialEnvs[env] = v
}
exEnv := constants.ExistingContainerHostEnv
if v, set := os.LookupEnv(exEnv); set {
initialEnvs[exEnv] = v
}
}
// InitialEnv returns the value of the environment variable env before any environment changes made by minikube

View File

@ -93,6 +93,9 @@ const (
ExistingDockerCertPathEnv = MinikubeExistingPrefix + "DOCKER_CERT_PATH"
// ExistingDockerTLSVerifyEnv is used to save original docker environment
ExistingDockerTLSVerifyEnv = MinikubeExistingPrefix + "DOCKER_TLS_VERIFY"
// ExistingContainerHostEnv is used to save original podman environment
ExistingContainerHostEnv = MinikubeExistingPrefix + "CONTAINER_HOST"
)
var (