automation-tests/pkg/machine/os/machine_os.go

41 lines
892 B
Go

//go:build amd64 || arm64
// +build amd64 arm64
package os
import (
"fmt"
"github.com/containers/podman/v4/pkg/machine"
)
// MachineOS manages machine OS's from outside the machine.
type MachineOS struct {
Args []string
VM machine.VM
VMName string
Restart bool
}
// Apply applies the image by sshing into the machine and running apply from inside the VM.
func (m *MachineOS) Apply(image string, opts ApplyOptions) error {
sshOpts := machine.SSHOptions{
Args: []string{"podman", "machine", "os", "apply", image},
}
if err := m.VM.SSH(m.VMName, sshOpts); err != nil {
return err
}
if m.Restart {
if err := m.VM.Stop(m.VMName, machine.StopOptions{}); err != nil {
return err
}
if err := m.VM.Start(m.VMName, machine.StartOptions{NoInfo: true}); err != nil {
return err
}
fmt.Printf("Machine %q restarted successfully\n", m.VMName)
}
return nil
}