github.com/containers/libpod@v1.9.4-0.20220419124438-4284fd425507/pkg/domain/infra/tunnel/volumes.go (about)

     1  package tunnel
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/containers/libpod/pkg/bindings/volumes"
     7  	"github.com/containers/libpod/pkg/domain/entities"
     8  )
     9  
    10  func (ic *ContainerEngine) VolumeCreate(ctx context.Context, opts entities.VolumeCreateOptions) (*entities.IdOrNameResponse, error) {
    11  	response, err := volumes.Create(ic.ClientCxt, opts)
    12  	if err != nil {
    13  		return nil, err
    14  	}
    15  	return &entities.IdOrNameResponse{IdOrName: response.Name}, nil
    16  }
    17  
    18  func (ic *ContainerEngine) VolumeRm(ctx context.Context, namesOrIds []string, opts entities.VolumeRmOptions) ([]*entities.VolumeRmReport, error) {
    19  	var (
    20  		reports []*entities.VolumeRmReport
    21  	)
    22  
    23  	if opts.All {
    24  		vols, err := volumes.List(ic.ClientCxt, nil)
    25  		if err != nil {
    26  			return nil, err
    27  		}
    28  		for _, v := range vols {
    29  			namesOrIds = append(namesOrIds, v.Name)
    30  		}
    31  	}
    32  	for _, id := range namesOrIds {
    33  		reports = append(reports, &entities.VolumeRmReport{
    34  			Err: volumes.Remove(ic.ClientCxt, id, &opts.Force),
    35  			Id:  id,
    36  		})
    37  	}
    38  	return reports, nil
    39  }
    40  
    41  func (ic *ContainerEngine) VolumeInspect(ctx context.Context, namesOrIds []string, opts entities.VolumeInspectOptions) ([]*entities.VolumeInspectReport, error) {
    42  	var (
    43  		reports []*entities.VolumeInspectReport
    44  	)
    45  	if opts.All {
    46  		vols, err := volumes.List(ic.ClientCxt, nil)
    47  		if err != nil {
    48  			return nil, err
    49  		}
    50  		for _, v := range vols {
    51  			namesOrIds = append(namesOrIds, v.Name)
    52  		}
    53  	}
    54  	for _, id := range namesOrIds {
    55  		data, err := volumes.Inspect(ic.ClientCxt, id)
    56  		if err != nil {
    57  			return nil, err
    58  		}
    59  		reports = append(reports, &entities.VolumeInspectReport{VolumeConfigResponse: data})
    60  	}
    61  	return reports, nil
    62  }
    63  
    64  func (ic *ContainerEngine) VolumePrune(ctx context.Context, opts entities.VolumePruneOptions) ([]*entities.VolumePruneReport, error) {
    65  	return volumes.Prune(ic.ClientCxt)
    66  }
    67  
    68  func (ic *ContainerEngine) VolumeList(ctx context.Context, opts entities.VolumeListOptions) ([]*entities.VolumeListReport, error) {
    69  	return volumes.List(ic.ClientCxt, opts.Filter)
    70  }