diff --git a/pkg/machine/applehv/config.go b/pkg/machine/applehv/config.go index eb11c93e3b..26fa74665a 100644 --- a/pkg/machine/applehv/config.go +++ b/pkg/machine/applehv/config.go @@ -12,16 +12,16 @@ import ( "github.com/containers/podman/v4/pkg/machine" "github.com/containers/podman/v4/pkg/machine/compression" "github.com/containers/podman/v4/pkg/machine/define" - "github.com/containers/podman/v4/pkg/machine/vmconfigs" "github.com/containers/podman/v4/pkg/machine/ignition" + "github.com/containers/podman/v4/pkg/machine/vmconfigs" vfConfig "github.com/crc-org/vfkit/pkg/config" "github.com/docker/go-units" "golang.org/x/sys/unix" ) const ( - defaultVFKitEndpoint = "http://localhost:8081" - ignitionSocketName = "ignition.sock" + localhostURI = "http://localhost" + ignitionSocketName = "ignition.sock" ) type AppleHVVirtualization struct { diff --git a/pkg/machine/applehv/machine.go b/pkg/machine/applehv/machine.go index 91b9064390..b617ab055b 100644 --- a/pkg/machine/applehv/machine.go +++ b/pkg/machine/applehv/machine.go @@ -116,7 +116,12 @@ func (m *MacMachine) setVfkitInfo(cfg *config.Config, readySocket define.VMFile) } m.Vfkit.VirtualMachine.Devices = defaultDevices - m.Vfkit.Endpoint = defaultVFKitEndpoint + randPort, err := utils.GetRandomPort() + if err != nil { + return err + } + + m.Vfkit.Endpoint = localhostURI + ":" + strconv.Itoa(randPort) m.Vfkit.VfkitBinaryPath = vfkitBinaryPath return nil diff --git a/pkg/machine/e2e/config_inspect_test.go b/pkg/machine/e2e/config_inspect_test.go index ffd74220f1..f0d4aa5bdd 100644 --- a/pkg/machine/e2e/config_inspect_test.go +++ b/pkg/machine/e2e/config_inspect_test.go @@ -13,7 +13,7 @@ func (i *inspectMachine) buildCmd(m *machineTestBuilder) []string { if len(i.format) > 0 { cmd = append(cmd, "--format", i.format) } - cmd = append(cmd, m.names...) + cmd = append(cmd, m.name) i.cmd = cmd return cmd } diff --git a/pkg/machine/e2e/config_test.go b/pkg/machine/e2e/config_test.go index 354b3be742..9692bccc01 100644 --- a/pkg/machine/e2e/config_test.go +++ b/pkg/machine/e2e/config_test.go @@ -132,7 +132,7 @@ func (m *machineTestBuilder) setCmd(mc machineCommand) *machineTestBuilder { return m } -func (m *machineTestBuilder) setTimeout(timeout time.Duration) *machineTestBuilder { +func (m *machineTestBuilder) setTimeout(timeout time.Duration) *machineTestBuilder { //nolint: unparam m.timeout = timeout return m } diff --git a/pkg/machine/e2e/start_test.go b/pkg/machine/e2e/start_test.go index d1001a45d2..8c77bde6bc 100644 --- a/pkg/machine/e2e/start_test.go +++ b/pkg/machine/e2e/start_test.go @@ -1,6 +1,8 @@ package e2e_test import ( + "time" + "github.com/containers/podman/v4/pkg/machine/define" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" @@ -84,4 +86,36 @@ var _ = Describe("podman machine start", func() { Expect(startSession).To(Exit(125)) Expect(startSession.errorToString()).To(ContainSubstring("VM already running or starting")) }) + It("start only starts specified machine", func() { + i := initMachine{} + startme := randomString() + session, err := mb.setName(startme).setCmd(i.withImagePath(mb.imagePath)).run() + Expect(err).ToNot(HaveOccurred()) + Expect(session).To(Exit(0)) + + j := initMachine{} + dontstartme := randomString() + session2, err := mb.setName(dontstartme).setCmd(j.withImagePath(mb.imagePath)).run() + Expect(err).ToNot(HaveOccurred()) + Expect(session2).To(Exit(0)) + + s := startMachine{} + session3, err := mb.setName(startme).setCmd(s).setTimeout(time.Minute * 10).run() + Expect(err).ToNot(HaveOccurred()) + Expect(session3).Should(Exit(0)) + + inspect := new(inspectMachine) + inspect = inspect.withFormat("{{.State}}") + inspectSession, err := mb.setName(startme).setCmd(inspect).run() + Expect(err).ToNot(HaveOccurred()) + Expect(inspectSession).To(Exit(0)) + Expect(inspectSession.outputToString()).To(Equal(define.Running)) + + inspect2 := new(inspectMachine) + inspect2 = inspect2.withFormat("{{.State}}") + inspectSession2, err := mb.setName(dontstartme).setCmd(inspect2).run() + Expect(err).ToNot(HaveOccurred()) + Expect(inspectSession2).To(Exit(0)) + Expect(inspectSession2.outputToString()).To(Not(Equal(define.Running))) + }) })