mirror of
				https://github.com/containers/podman.git
				synced 2025-10-31 10:00:01 +08:00 
			
		
		
		
	 e8501ca991
			
		
	
	e8501ca991
	
	
	
		
			
			The intial refactor used specifically qemu for testing and infra bring up. But the whole point was to have things interfaced. This PR results in an interface experience like podman 4 using the same term `provider` to generically represent 'a provider' like qemu/applehv/etc. This PR is required to move forward with new providers. Also renamed pkg/machine/p5 to pkg/machine/shim. [NO NEW TESTS REQUIRED] Signed-off-by: Brent Baude <bbaude@redhat.com>
		
			
				
	
	
		
			64 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package shim
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"io"
 | |
| 	"net"
 | |
| 	"os"
 | |
| 	"os/user"
 | |
| 	"path/filepath"
 | |
| 	"time"
 | |
| )
 | |
| 
 | |
| func dockerClaimSupported() bool {
 | |
| 	return true
 | |
| }
 | |
| 
 | |
| func dockerClaimHelperInstalled() bool {
 | |
| 	u, err := user.Current()
 | |
| 	if err != nil {
 | |
| 		return false
 | |
| 	}
 | |
| 
 | |
| 	labelName := fmt.Sprintf("com.github.containers.podman.helper-%s", u.Username)
 | |
| 	fileName := filepath.Join("/Library", "LaunchDaemons", labelName+".plist")
 | |
| 	info, err := os.Stat(fileName)
 | |
| 	return err == nil && info.Mode().IsRegular()
 | |
| }
 | |
| 
 | |
| func claimDockerSock() bool {
 | |
| 	u, err := user.Current()
 | |
| 	if err != nil {
 | |
| 		return false
 | |
| 	}
 | |
| 
 | |
| 	helperSock := fmt.Sprintf("/var/run/podman-helper-%s.socket", u.Username)
 | |
| 	con, err := net.DialTimeout("unix", helperSock, time.Second*5)
 | |
| 	if err != nil {
 | |
| 		return false
 | |
| 	}
 | |
| 	_ = con.SetWriteDeadline(time.Now().Add(time.Second * 5))
 | |
| 	_, err = fmt.Fprintln(con, "GO")
 | |
| 	if err != nil {
 | |
| 		return false
 | |
| 	}
 | |
| 	_ = con.SetReadDeadline(time.Now().Add(time.Second * 5))
 | |
| 	read, err := io.ReadAll(con)
 | |
| 
 | |
| 	return err == nil && string(read) == "OK"
 | |
| }
 | |
| 
 | |
| func findClaimHelper() string {
 | |
| 	exe, err := os.Executable()
 | |
| 	if err != nil {
 | |
| 		return ""
 | |
| 	}
 | |
| 
 | |
| 	exe, err = filepath.EvalSymlinks(exe)
 | |
| 	if err != nil {
 | |
| 		return ""
 | |
| 	}
 | |
| 
 | |
| 	return filepath.Join(filepath.Dir(exe), "podman-mac-helper")
 | |
| }
 |