mirror of
				https://github.com/containers/podman.git
				synced 2025-11-01 02:42:11 +08:00 
			
		
		
		
	 bd09b7aa79
			
		
	
	bd09b7aa79
	
	
	
		
			
			Automated for .go files via gomove [1]: `gomove github.com/containers/podman/v3 github.com/containers/podman/v4` Remaining files via vgrep [2]: `vgrep github.com/containers/podman/v3` [1] https://github.com/KSubedi/gomove [2] https://github.com/vrothberg/vgrep Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
		
			
				
	
	
		
			72 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package containers
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 	"net/http"
 | |
| 
 | |
| 	"github.com/containers/podman/v4/pkg/bindings"
 | |
| )
 | |
| 
 | |
| // Mount mounts an existing container to the filesystem. It returns the path
 | |
| // of the mounted container in string format.
 | |
| func Mount(ctx context.Context, nameOrID string, options *MountOptions) (string, error) {
 | |
| 	if options == nil {
 | |
| 		options = new(MountOptions)
 | |
| 	}
 | |
| 	_ = options
 | |
| 	conn, err := bindings.GetClient(ctx)
 | |
| 	if err != nil {
 | |
| 		return "", err
 | |
| 	}
 | |
| 	var (
 | |
| 		path string
 | |
| 	)
 | |
| 	response, err := conn.DoRequest(ctx, nil, http.MethodPost, "/containers/%s/mount", nil, nil, nameOrID)
 | |
| 	if err != nil {
 | |
| 		return path, err
 | |
| 	}
 | |
| 	defer response.Body.Close()
 | |
| 
 | |
| 	return path, response.Process(&path)
 | |
| }
 | |
| 
 | |
| // Unmount unmounts a container from the filesystem.  The container must not be running
 | |
| // or the unmount will fail.
 | |
| func Unmount(ctx context.Context, nameOrID string, options *UnmountOptions) error {
 | |
| 	if options == nil {
 | |
| 		options = new(UnmountOptions)
 | |
| 	}
 | |
| 	_ = options
 | |
| 	conn, err := bindings.GetClient(ctx)
 | |
| 	if err != nil {
 | |
| 		return err
 | |
| 	}
 | |
| 	response, err := conn.DoRequest(ctx, nil, http.MethodPost, "/containers/%s/unmount", nil, nil, nameOrID)
 | |
| 	if err != nil {
 | |
| 		return err
 | |
| 	}
 | |
| 	defer response.Body.Close()
 | |
| 
 | |
| 	return response.Process(nil)
 | |
| }
 | |
| 
 | |
| // GetMountedContainerPaths returns a map of mounted containers and their mount locations.
 | |
| func GetMountedContainerPaths(ctx context.Context, options *MountedContainerPathsOptions) (map[string]string, error) {
 | |
| 	if options == nil {
 | |
| 		options = new(MountedContainerPathsOptions)
 | |
| 	}
 | |
| 	_ = options
 | |
| 	conn, err := bindings.GetClient(ctx)
 | |
| 	if err != nil {
 | |
| 		return nil, err
 | |
| 	}
 | |
| 	mounts := make(map[string]string)
 | |
| 	response, err := conn.DoRequest(ctx, nil, http.MethodGet, "/containers/showmounted", nil, nil)
 | |
| 	if err != nil {
 | |
| 		return mounts, err
 | |
| 	}
 | |
| 	defer response.Body.Close()
 | |
| 
 | |
| 	return mounts, response.Process(&mounts)
 | |
| }
 |