Move `getDevNullFiles` into a common file

Moves `getDevNullFiles` into a new common file,
`pkg/machine/machine_common.go`, preventing the re-implementation of the
function across the different hypervisor implementations.

Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
This commit is contained in:
Jake Correnti 2023-08-01 08:52:23 -04:00
parent 7d5f9de7a9
commit 906af5bbc6
3 changed files with 29 additions and 39 deletions

View File

@ -616,24 +616,6 @@ func (m *HyperVMachine) loadHyperVMachineFromJSON(fqConfigPath string) error {
return json.Unmarshal(b, m)
}
// getDevNullFiles returns pointers to Read-only and Write-only DevNull files
func getDevNullFiles() (*os.File, *os.File, error) {
dnr, err := os.OpenFile(os.DevNull, os.O_RDONLY, 0755)
if err != nil {
return nil, nil, err
}
dnw, err := os.OpenFile(os.DevNull, os.O_WRONLY, 0755)
if err != nil {
if e := dnr.Close(); e != nil {
err = e
}
return nil, nil, err
}
return dnr, dnw, nil
}
func (m *HyperVMachine) startHostNetworking() (string, machine.APIForwardingState, error) {
var (
forwardSock string
@ -645,7 +627,7 @@ func (m *HyperVMachine) startHostNetworking() (string, machine.APIForwardingStat
}
attr := new(os.ProcAttr)
dnr, dnw, err := getDevNullFiles()
dnr, dnw, err := machine.GetDevNullFiles()
if err != nil {
return "", machine.NoForwarding, err
}

View File

@ -0,0 +1,26 @@
//go:build amd64 || arm64
// +build amd64 arm64
package machine
import (
"os"
)
// getDevNullFiles returns pointers to Read-only and Write-only DevNull files
func GetDevNullFiles() (*os.File, *os.File, error) {
dnr, err := os.OpenFile(os.DevNull, os.O_RDONLY, 0755)
if err != nil {
return nil, nil, err
}
dnw, err := os.OpenFile(os.DevNull, os.O_WRONLY, 0755)
if err != nil {
if e := dnr.Close(); e != nil {
err = e
}
return nil, nil, err
}
return dnr, dnw, nil
}

View File

@ -629,24 +629,6 @@ func (v *MachineVM) connectToPodmanSocket(maxBackoffs int, backoff time.Duration
return
}
// getDevNullFiles returns pointers to Read-only and Write-only DevNull files
func getDevNullFiles() (*os.File, *os.File, error) {
dnr, err := os.OpenFile(os.DevNull, os.O_RDONLY, 0755)
if err != nil {
return nil, nil, err
}
dnw, err := os.OpenFile(os.DevNull, os.O_WRONLY, 0755)
if err != nil {
if e := dnr.Close(); e != nil {
err = e
}
return nil, nil, err
}
return dnr, dnw, nil
}
// Start executes the qemu command line and forks it
func (v *MachineVM) Start(name string, opts machine.StartOptions) error {
var (
@ -739,7 +721,7 @@ func (v *MachineVM) Start(name string, opts machine.StartOptions) error {
}
defer fd.Close()
dnr, dnw, err := getDevNullFiles()
dnr, dnw, err := machine.GetDevNullFiles()
if err != nil {
return err
}
@ -1336,7 +1318,7 @@ func (v *MachineVM) startHostNetworking() (string, machine.APIForwardingState, e
}
attr := new(os.ProcAttr)
dnr, dnw, err := getDevNullFiles()
dnr, dnw, err := machine.GetDevNullFiles()
if err != nil {
return "", machine.NoForwarding, err
}