Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update machine init and set tests #19666

Merged
merged 2 commits into from
Aug 28, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 13 additions & 12 deletions docs/source/markdown/podman-machine-inspect.1.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,19 @@ Rootless only.

Print results with a Go template.

| **Placeholder** | **Description** |
| ------------------- | ----------------------------------------------------- |
| .ConfigPath ... | Machine configuration file location |
| .ConnectionInfo ... | Machine connection information |
| .Created | Machine creation time (string, ISO3601) |
| .Image ... | Machine image config |
| .LastUp | Time when machine was last booted |
| .Name | Name of the machine |
| .Resources ... | Resources used by the machine |
| .SSHConfig ... | SSH configuration info for communitating with machine |
| .State ... | Machine state |
| .UserModeNetworking | Whether this machine uses user-mode networking |
| **Placeholder** | **Description** |
| ------------------- | --------------------------------------------------------------------- |
| .ConfigPath ... | Machine configuration file location |
| .ConnectionInfo ... | Machine connection information |
| .Created | Machine creation time (string, ISO3601) |
| .Image ... | Machine image config |
| .LastUp | Time when machine was last booted |
| .Name | Name of the machine |
| .Resources ... | Resources used by the machine |
| .Rootful | Whether the machine prefers rootful or rootless container execution |
| .SSHConfig ... | SSH configuration info for communitating with machine |
| .State ... | Machine state |
| .UserModeNetworking | Whether this machine uses user-mode networking |

#### **--help**

Expand Down
1 change: 1 addition & 0 deletions pkg/machine/applehv/machine.go
Original file line number Diff line number Diff line change
Expand Up @@ -317,6 +317,7 @@ func (m *MacMachine) Inspect() (*machine.InspectInfo, error) {
},
SSHConfig: m.SSHConfig,
State: vmState,
Rootful: m.Rootful,
}
return &ii, nil
}
Expand Down
1 change: 1 addition & 0 deletions pkg/machine/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,7 @@ type InspectInfo struct {
SSHConfig SSHConfig
State Status
UserModeNetworking bool
Rootful bool
}

func (rc RemoteConnectionType) MakeSSHURL(host, path, port, userName string) url.URL {
Expand Down
29 changes: 19 additions & 10 deletions pkg/machine/e2e/config_init_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,17 @@ type initMachine struct {
--volume-driver string Optional volume driver

*/
cpus *uint
diskSize *uint
ignitionPath string
username string
imagePath string
memory *uint
now bool
timezone string
rootful bool
volumes []string
cpus *uint
diskSize *uint
ignitionPath string
username string
imagePath string
memory *uint
now bool
timezone string
rootful bool
volumes []string
userModeNetworking bool

cmd []string
}
Expand Down Expand Up @@ -65,6 +66,9 @@ func (i *initMachine) buildCmd(m *machineTestBuilder) []string {
if i.rootful {
cmd = append(cmd, "--rootful")
}
if i.userModeNetworking {
cmd = append(cmd, "--user-mode-networking")
}
cmd = append(cmd, m.name)
i.cmd = cmd
return cmd
Expand Down Expand Up @@ -118,3 +122,8 @@ func (i *initMachine) withRootful(r bool) *initMachine {
i.rootful = r
return i
}

func (i *initMachine) withUserModeNetworking(r bool) *initMachine {
i.userModeNetworking = r
return i
}
17 changes: 13 additions & 4 deletions pkg/machine/e2e/config_set_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,11 @@ import (
)

type setMachine struct {
cpus *uint
diskSize *uint
memory *uint
rootful bool
cpus *uint
diskSize *uint
memory *uint
rootful bool
userModeNetworking bool

cmd []string
}
Expand All @@ -27,6 +28,9 @@ func (i *setMachine) buildCmd(m *machineTestBuilder) []string {
if i.rootful {
cmd = append(cmd, "--rootful")
}
if i.userModeNetworking {
cmd = append(cmd, "--user-mode-networking")
}
cmd = append(cmd, m.name)
i.cmd = cmd
return cmd
Expand All @@ -50,3 +54,8 @@ func (i *setMachine) withRootful(r bool) *setMachine {
i.rootful = r
return i
}

func (i *setMachine) withUserModeNetworking(r bool) *setMachine {
i.userModeNetworking = r
return i
}
14 changes: 14 additions & 0 deletions pkg/machine/e2e/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"os"
"os/exec"
"path/filepath"
"runtime"
"strings"
"time"

Expand Down Expand Up @@ -201,3 +202,16 @@ func (matcher *ValidJSONMatcher) FailureMessage(actual interface{}) (message str
func (matcher *ValidJSONMatcher) NegatedFailureMessage(actual interface{}) (message string) {
return format.Message(actual, "to _not_ be valid JSON")
}

func checkReason(reason string) {
if len(reason) < 5 {
panic("Test must specify a reason to skip")
}
}

func SkipIfNotWindows(reason string) {
checkReason(reason)
if runtime.GOOS != "windows" {
Skip("[not windows]: " + reason)
}
}
26 changes: 25 additions & 1 deletion pkg/machine/e2e/init_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ var _ = Describe("podman machine init", func() {

})

It("machine init rootful docker.sock check", func() {
It("machine init rootful with docker.sock check", func() {
i := initMachine{}
name := randomString()
session, err := mb.setName(name).setCmd(i.withImagePath(mb.imagePath).withRootful(true)).run()
Expand All @@ -198,11 +198,35 @@ var _ = Describe("podman machine init", func() {
Expect(err).ToNot(HaveOccurred())
Expect(ssession).Should(Exit(0))

inspect := new(inspectMachine)
inspect = inspect.withFormat("{{.Rootful}}")
inspectSession, err := mb.setName(name).setCmd(inspect).run()
Expect(err).ToNot(HaveOccurred())
Expect(inspectSession).To(Exit(0))
Expect(inspectSession.outputToString()).To(Equal("true"))

ssh2 := sshMachine{}
sshSession2, err := mb.setName(name).setCmd(ssh2.withSSHCommand([]string{"readlink /var/run/docker.sock"})).run()
Expect(err).ToNot(HaveOccurred())
Expect(sshSession2).To(Exit(0))
output := strings.TrimSpace(sshSession2.outputToString())
Expect(output).To(Equal("/run/podman/podman.sock"))
})

It("init with user mode networking ", func() {
SkipIfNotWindows("setting user mode networking is only honored on Windows")

i := new(initMachine)
name := randomString()
session, err := mb.setName(name).setCmd(i.withImagePath(mb.imagePath).withUserModeNetworking(true)).run()
Expect(err).ToNot(HaveOccurred())
Expect(session).To(Exit(0))

inspect := new(inspectMachine)
inspect = inspect.withFormat("{{.UserModeNetworking}}")
inspectSession, err := mb.setName(name).setCmd(inspect).run()
Expect(err).ToNot(HaveOccurred())
Expect(inspectSession).To(Exit(0))
Expect(inspectSession.outputToString()).To(Equal("true"))
})
})
31 changes: 30 additions & 1 deletion pkg/machine/e2e/set_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ var _ = Describe("podman machine set", func() {
Expect(sshSession3.outputToString()).To(ContainSubstring("100 GiB"))
})

It("set rootful, docker sock change", func() {
It("set rootful with docker sock change", func() {
name := randomString()
i := new(initMachine)
session, err := mb.setName(name).setCmd(i.withImagePath(mb.imagePath)).run()
Expand All @@ -118,11 +118,40 @@ var _ = Describe("podman machine set", func() {
Expect(err).ToNot(HaveOccurred())
Expect(startSession).To(Exit(0))

inspect := new(inspectMachine)
inspect = inspect.withFormat("{{.Rootful}}")
inspectSession, err := mb.setName(name).setCmd(inspect).run()
Expect(err).ToNot(HaveOccurred())
Expect(inspectSession).To(Exit(0))
Expect(inspectSession.outputToString()).To(Equal("true"))

ssh2 := sshMachine{}
sshSession2, err := mb.setName(name).setCmd(ssh2.withSSHCommand([]string{"readlink /var/run/docker.sock"})).run()
Expect(err).ToNot(HaveOccurred())
Expect(sshSession2).To(Exit(0))
output := strings.TrimSpace(sshSession2.outputToString())
Expect(output).To(Equal("/run/podman/podman.sock"))
})

It("set user mode networking", func() {
SkipIfNotWindows("Setting user mode networking is only honored on Windows")

name := randomString()
i := new(initMachine)
session, err := mb.setName(name).setCmd(i.withImagePath(mb.imagePath)).run()
Expect(err).ToNot(HaveOccurred())
Expect(session).To(Exit(0))

set := setMachine{}
setSession, err := mb.setName(name).setCmd(set.withUserModeNetworking(true)).run()
Expect(err).ToNot(HaveOccurred())
Expect(setSession).To(Exit(0))

inspect := new(inspectMachine)
inspect = inspect.withFormat("{{.UserModeNetworking}}")
inspectSession, err := mb.setName(name).setCmd(inspect).run()
Expect(err).ToNot(HaveOccurred())
Expect(inspectSession).To(Exit(0))
Expect(inspectSession.outputToString()).To(Equal("true"))
})
})
1 change: 1 addition & 0 deletions pkg/machine/hyperv/machine.go
Original file line number Diff line number Diff line change
Expand Up @@ -303,6 +303,7 @@ func (m *HyperVMachine) Inspect() (*machine.InspectInfo, error) {
},
SSHConfig: m.SSHConfig,
State: vm.State().String(),
Rootful: m.Rootful,
}, nil
}

Expand Down
1 change: 1 addition & 0 deletions pkg/machine/qemu/machine.go
Original file line number Diff line number Diff line change
Expand Up @@ -1596,6 +1596,7 @@ func (v *MachineVM) Inspect() (*machine.InspectInfo, error) {
SSHConfig: v.SSHConfig,
State: state,
UserModeNetworking: true, // always true
Rootful: v.Rootful,
}, nil
}

Expand Down
1 change: 1 addition & 0 deletions pkg/machine/wsl/machine.go
Original file line number Diff line number Diff line change
Expand Up @@ -1745,6 +1745,7 @@ func (v *MachineVM) Inspect() (*machine.InspectInfo, error) {
SSHConfig: v.SSHConfig,
State: state,
UserModeNetworking: v.UserModeNetworking,
Rootful: v.Rootful,
}, nil
}

Expand Down