Deprecate MachineEnabled and replace with API
machine.IsPodmanMachine replaces MachineEnabled machine.MachineHostType informs the type unknown, qemu, wsl, etc machine.IsGvProxyBased used to make specific determinations re gvproxy Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
This commit is contained in:
parent
bdca9e79ed
commit
77d8f70039
|
|
@ -504,12 +504,6 @@ Change the default only if you are sure of what you are doing, in general
|
|||
faster "shm" lock type. You may need to run "podman system renumber" after you
|
||||
change the lock type.
|
||||
|
||||
**machine_enabled**=false
|
||||
|
||||
Indicates if Podman is running inside a VM via Podman Machine.
|
||||
Podman uses this value to do extra setup around networking from the
|
||||
container inside the VM to to host.
|
||||
|
||||
**multi_image_archive**=false
|
||||
|
||||
Allows for creating archives (e.g., tarballs) with more than one image. Some container engines, such as Podman, interpret additional arguments as tags for one image and hence do not store more than one image. The default behavior can be altered with this option.
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import (
|
|||
"github.com/containers/common/libnetwork/types"
|
||||
"github.com/containers/common/libnetwork/util"
|
||||
"github.com/containers/common/pkg/config"
|
||||
"github.com/containers/common/pkg/machine"
|
||||
"github.com/containers/storage/pkg/unshare"
|
||||
)
|
||||
|
||||
|
|
@ -15,8 +16,8 @@ func GetHostContainersInternalIP(conf *config.Config, netStatus map[string]types
|
|||
switch conf.Containers.HostContainersInternalIP {
|
||||
case "":
|
||||
// if empty (default) we will automatically choose one below
|
||||
// if machine we let the gvproxy dns server handle the dns name so do not add it
|
||||
if conf.Engine.MachineEnabled {
|
||||
// if machine using gvproxy we let the gvproxy dns server handle the dns name so do not add it
|
||||
if machine.IsGvProxyBased() {
|
||||
return ""
|
||||
}
|
||||
case "none":
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import (
|
|||
"github.com/containers/common/libnetwork/netavark"
|
||||
"github.com/containers/common/libnetwork/types"
|
||||
"github.com/containers/common/pkg/config"
|
||||
"github.com/containers/common/pkg/machine"
|
||||
"github.com/containers/storage"
|
||||
"github.com/containers/storage/pkg/homedir"
|
||||
"github.com/containers/storage/pkg/ioutils"
|
||||
|
|
@ -173,7 +174,7 @@ func getCniInterface(conf *config.Config) (types.ContainerNetwork, error) {
|
|||
DefaultNetwork: conf.Network.DefaultNetwork,
|
||||
DefaultSubnet: conf.Network.DefaultSubnet,
|
||||
DefaultsubnetPools: conf.Network.DefaultSubnetPools,
|
||||
IsMachine: conf.Engine.MachineEnabled,
|
||||
IsMachine: machine.IsGvProxyBased(),
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -312,6 +312,8 @@ type EngineConfig struct {
|
|||
LockType string `toml:"lock_type,omitempty"`
|
||||
|
||||
// MachineEnabled indicates if Podman is running in a podman-machine VM
|
||||
//
|
||||
// This method is soft deprecated, use machine.IsPodmanMachine instead
|
||||
MachineEnabled bool `toml:"machine_enabled,omitempty"`
|
||||
|
||||
// MultiImageArchive - if true, the container engine allows for storing
|
||||
|
|
|
|||
|
|
@ -455,12 +455,6 @@ default_sysctls = [
|
|||
#
|
||||
#lock_type** = "shm"
|
||||
|
||||
# Indicates if Podman is running inside a VM via Podman Machine.
|
||||
# Podman uses this value to do extra setup around networking from the
|
||||
# container inside the VM to to host.
|
||||
#
|
||||
#machine_enabled = false
|
||||
|
||||
# MultiImageArchive - if true, the container engine allows for storing archives
|
||||
# (e.g., of the docker-archive transport) with multiple images. By default,
|
||||
# Podman creates single-image archives.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,70 @@
|
|||
package machine
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/containers/common/pkg/config"
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
type MachineMarker struct {
|
||||
Enabled bool
|
||||
Type string
|
||||
}
|
||||
|
||||
const (
|
||||
markerFile = "/etc/containers/podman-machine"
|
||||
Wsl = "wsl"
|
||||
Qemu = "qemu"
|
||||
)
|
||||
|
||||
var (
|
||||
markerSync sync.Once
|
||||
machineMarker *MachineMarker
|
||||
)
|
||||
|
||||
func loadMachineMarker(file string) {
|
||||
var kind string
|
||||
|
||||
// Support deprecated config value for compatibility
|
||||
enabled := isLegacyConfigSet()
|
||||
|
||||
if content, err := os.ReadFile(file); err == nil {
|
||||
enabled = true
|
||||
kind = strings.TrimSpace(string(content))
|
||||
}
|
||||
|
||||
machineMarker = &MachineMarker{enabled, kind}
|
||||
}
|
||||
|
||||
func isLegacyConfigSet() bool {
|
||||
config, err := config.Default()
|
||||
if err != nil {
|
||||
logrus.Warnf("could not obtain container configuration")
|
||||
return false
|
||||
}
|
||||
|
||||
//nolint:staticcheck //lint:ignore SA1019 deprecated call
|
||||
return config.Engine.MachineEnabled
|
||||
}
|
||||
|
||||
func IsPodmanMachine() bool {
|
||||
return GetMachineMarker().Enabled
|
||||
}
|
||||
|
||||
func MachineHostType() string {
|
||||
return GetMachineMarker().Type
|
||||
}
|
||||
|
||||
func IsGvProxyBased() bool {
|
||||
return IsPodmanMachine() && MachineHostType() != Wsl
|
||||
}
|
||||
|
||||
func GetMachineMarker() *MachineMarker {
|
||||
markerSync.Do(func() {
|
||||
loadMachineMarker(markerFile)
|
||||
})
|
||||
return machineMarker
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
package machine
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
. "github.com/onsi/ginkgo/v2"
|
||||
"github.com/onsi/gomega"
|
||||
)
|
||||
|
||||
func TestConfig(t *testing.T) {
|
||||
gomega.RegisterFailHandler(Fail)
|
||||
RunSpecs(t, "Machine Suite")
|
||||
}
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
package machine
|
||||
|
||||
import (
|
||||
"github.com/containers/common/pkg/config"
|
||||
. "github.com/onsi/ginkgo/v2"
|
||||
"github.com/onsi/gomega"
|
||||
)
|
||||
|
||||
var _ = Describe("Machine", func() {
|
||||
BeforeEach(func() {
|
||||
// disable normal init for testing
|
||||
markerSync.Do(func() {})
|
||||
|
||||
// ensure legacy flag is off
|
||||
config, _ := config.Default()
|
||||
//nolint:staticcheck //lint:ignore SA1019 deprecated call
|
||||
config.Engine.MachineEnabled = false
|
||||
})
|
||||
|
||||
It("not a machine", func() {
|
||||
loadMachineMarker("testdata/does-not-exist")
|
||||
|
||||
gomega.Expect(IsPodmanMachine()).To(gomega.BeFalse())
|
||||
gomega.Expect(MachineHostType()).To(gomega.BeEmpty())
|
||||
gomega.Expect(IsGvProxyBased()).To(gomega.BeFalse())
|
||||
})
|
||||
|
||||
It("generic machine", func() {
|
||||
loadMachineMarker("testdata/empty-machine")
|
||||
|
||||
gomega.Expect(IsPodmanMachine()).To(gomega.BeTrue())
|
||||
gomega.Expect(MachineHostType()).To(gomega.BeEmpty())
|
||||
gomega.Expect(IsGvProxyBased()).To(gomega.BeTrue())
|
||||
})
|
||||
|
||||
It("wsl machine", func() {
|
||||
loadMachineMarker("testdata/wsl-machine")
|
||||
|
||||
gomega.Expect(IsPodmanMachine()).To(gomega.BeTrue())
|
||||
gomega.Expect(MachineHostType()).To(gomega.Equal(Wsl))
|
||||
gomega.Expect(IsGvProxyBased()).To(gomega.BeFalse())
|
||||
})
|
||||
|
||||
It("legacy config machine", func() {
|
||||
config, _ := config.Default()
|
||||
//nolint:staticcheck //lint:ignore SA1019 deprecated call
|
||||
config.Engine.MachineEnabled = true
|
||||
loadMachineMarker("testdata/does-not-exist")
|
||||
|
||||
gomega.Expect(IsPodmanMachine()).To(gomega.BeTrue())
|
||||
gomega.Expect(MachineHostType()).To(gomega.BeEmpty())
|
||||
gomega.Expect(IsGvProxyBased()).To(gomega.BeTrue())
|
||||
})
|
||||
})
|
||||
|
|
@ -0,0 +1 @@
|
|||
wsl
|
||||
Loading…
Reference in New Issue