Merge pull request #21175 from baude/consolidateIgnitionReadySocket
consolidate ignition ready socket unit
This commit is contained in:
		
						commit
						1697a8bfcf
					
				|  | @ -269,7 +269,7 @@ func (m *MacMachine) Init(opts machine.InitOptions) (bool, error) { | |||
| 		return false, err | ||||
| 	} | ||||
| 
 | ||||
| 	readyUnitFile, err := createReadyUnitFile() | ||||
| 	readyUnitFile, err := ignition.CreateReadyUnitFile(define.AppleHvVirt, nil) | ||||
| 	if err != nil { | ||||
| 		return false, err | ||||
| 	} | ||||
|  | @ -288,13 +288,6 @@ func (m *MacMachine) Init(opts machine.InitOptions) (bool, error) { | |||
| 	return err == nil, err | ||||
| } | ||||
| 
 | ||||
| func createReadyUnitFile() (string, error) { | ||||
| 	readyUnit := ignition.DefaultReadyUnitFile() | ||||
| 	readyUnit.Add("Unit", "Requires", "dev-virtio\\x2dports-vsock.device") | ||||
| 	readyUnit.Add("Service", "ExecStart", "/bin/sh -c '/usr/bin/echo Ready | socat - VSOCK-CONNECT:2:1025'") | ||||
| 	return readyUnit.ToString() | ||||
| } | ||||
| 
 | ||||
| func (m *MacMachine) removeSystemConnections() error { | ||||
| 	return machine.RemoveConnections(m.Name, fmt.Sprintf("%s-root", m.Name)) | ||||
| } | ||||
|  |  | |||
|  | @ -246,7 +246,8 @@ func (m *HyperVMachine) Init(opts machine.InitOptions) (bool, error) { | |||
| 		return false, err | ||||
| 	} | ||||
| 
 | ||||
| 	readyUnitFile, err := createReadyUnit(m.ReadyHVSock.Port) | ||||
| 	readyOpts := ignition.ReadyUnitOpts{Port: m.ReadyHVSock.Port} | ||||
| 	readyUnitFile, err := ignition.CreateReadyUnitFile(define.HyperVVirt, &readyOpts) | ||||
| 	if err != nil { | ||||
| 		return false, err | ||||
| 	} | ||||
|  | @ -294,13 +295,6 @@ func (m *HyperVMachine) Init(opts machine.InitOptions) (bool, error) { | |||
| 	return err == nil, err | ||||
| } | ||||
| 
 | ||||
| func createReadyUnit(readyPort uint64) (string, error) { | ||||
| 	readyUnit := ignition.DefaultReadyUnitFile() | ||||
| 	readyUnit.Add("Unit", "After", "systemd-user-sessions.service") | ||||
| 	readyUnit.Add("Service", "ExecStart", fmt.Sprintf("/bin/sh -c '/usr/bin/echo Ready | socat - VSOCK-CONNECT:2:%d'", readyPort)) | ||||
| 	return readyUnit.ToString() | ||||
| } | ||||
| 
 | ||||
| func createNetworkUnit(netPort uint64) (string, error) { | ||||
| 	netUnit := parser.NewUnitFile() | ||||
| 	netUnit.Add("Unit", "Description", "vsock_network") | ||||
|  |  | |||
|  | @ -0,0 +1,39 @@ | |||
| package ignition | ||||
| 
 | ||||
| import ( | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| 
 | ||||
| 	"github.com/containers/podman/v4/pkg/machine/define" | ||||
| ) | ||||
| 
 | ||||
| // ReadyUnitOpts are options for creating the ready unit that reports back to podman
 | ||||
| // when the system is booted
 | ||||
| type ReadyUnitOpts struct { | ||||
| 	Port uint64 | ||||
| } | ||||
| 
 | ||||
| // CreateReadyUnitFile makes a the ready unit to report back to the host that the system is running
 | ||||
| func CreateReadyUnitFile(provider define.VMType, opts *ReadyUnitOpts) (string, error) { | ||||
| 	readyUnit := DefaultReadyUnitFile() | ||||
| 	switch provider { | ||||
| 	case define.QemuVirt: | ||||
| 		readyUnit.Add("Unit", "Requires", "dev-virtio\\x2dports-vport1p1.device") | ||||
| 		readyUnit.Add("Unit", "After", "systemd-user-sessions.service") | ||||
| 		readyUnit.Add("Service", "ExecStart", "/bin/sh -c '/usr/bin/echo Ready >/dev/vport1p1'") | ||||
| 	case define.AppleHvVirt: | ||||
| 		readyUnit.Add("Unit", "Requires", "dev-virtio\\x2dports-vsock.device") | ||||
| 		readyUnit.Add("Service", "ExecStart", "/bin/sh -c '/usr/bin/echo Ready | socat - VSOCK-CONNECT:2:1025'") | ||||
| 	case define.HyperVVirt: | ||||
| 		if opts == nil || opts.Port == 0 { | ||||
| 			return "", errors.New("no port provided for hyperv ready unit") | ||||
| 		} | ||||
| 		readyUnit.Add("Unit", "After", "systemd-user-sessions.service") | ||||
| 		readyUnit.Add("Service", "ExecStart", fmt.Sprintf("/bin/sh -c '/usr/bin/echo Ready | socat - VSOCK-CONNECT:2:%d'", opts.Port)) | ||||
| 	case define.WSLVirt: // WSL does not use ignition
 | ||||
| 		return "", nil | ||||
| 	default: | ||||
| 		return "", fmt.Errorf("unable to generate ready unit for provider %q", provider.String()) | ||||
| 	} | ||||
| 	return readyUnit.ToString() | ||||
| } | ||||
|  | @ -215,7 +215,7 @@ func (v *MachineVM) Init(opts machine.InitOptions) (bool, error) { | |||
| 		return false, err | ||||
| 	} | ||||
| 
 | ||||
| 	readyUnitFile, err := createReadyUnitFile() | ||||
| 	readyUnitFile, err := ignition.CreateReadyUnitFile(define.QemuVirt, nil) | ||||
| 	if err != nil { | ||||
| 		return false, err | ||||
| 	} | ||||
|  | @ -232,14 +232,6 @@ func (v *MachineVM) Init(opts machine.InitOptions) (bool, error) { | |||
| 	return err == nil, err | ||||
| } | ||||
| 
 | ||||
| func createReadyUnitFile() (string, error) { | ||||
| 	readyUnit := ignition.DefaultReadyUnitFile() | ||||
| 	readyUnit.Add("Unit", "Requires", "dev-virtio\\x2dports-vport1p1.device") | ||||
| 	readyUnit.Add("Unit", "After", "systemd-user-sessions.service") | ||||
| 	readyUnit.Add("Service", "ExecStart", "/bin/sh -c '/usr/bin/echo Ready >/dev/vport1p1'") | ||||
| 	return readyUnit.ToString() | ||||
| } | ||||
| 
 | ||||
| func (v *MachineVM) removeSystemConnections() error { | ||||
| 	return machine.RemoveConnections(v.Name, fmt.Sprintf("%s-root", v.Name)) | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue