volumes.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package proxy
  2. import (
  3. "context"
  4. "github.com/docker/compose-cli/api/volumes"
  5. volumesv1 "github.com/docker/compose-cli/protos/volumes/v1"
  6. )
  7. // VolumesCreate creates a volume.
  8. func (p *proxy) VolumesCreate(ctx context.Context, req *volumesv1.VolumesCreateRequest) (*volumesv1.VolumesCreateResponse, error) {
  9. v, err := Client(ctx).VolumeService().Create(ctx, req.Options)
  10. if err != nil {
  11. return &volumesv1.VolumesCreateResponse{}, err
  12. }
  13. return &volumesv1.VolumesCreateResponse{
  14. Volume: toGrpcVolume(v),
  15. }, nil
  16. }
  17. // VolumesList lists the volumes.
  18. func (p *proxy) VolumesList(ctx context.Context, req *volumesv1.VolumesListRequest) (*volumesv1.VolumesListResponse, error) {
  19. volumeList, err := Client(ctx).VolumeService().List(ctx)
  20. if err != nil {
  21. return &volumesv1.VolumesListResponse{}, err
  22. }
  23. return &volumesv1.VolumesListResponse{
  24. Volumes: toGrpcVolumeList(volumeList),
  25. }, nil
  26. }
  27. // VolumesDelete deletes a volume.
  28. func (p *proxy) VolumesDelete(ctx context.Context, req *volumesv1.VolumesDeleteRequest) (*volumesv1.VolumesDeleteResponse, error) {
  29. err := Client(ctx).VolumeService().Delete(ctx, req.Id, req.Options)
  30. return &volumesv1.VolumesDeleteResponse{}, err
  31. }
  32. func toGrpcVolumeList(volumeList []volumes.Volume) []*volumesv1.Volume {
  33. var ret []*volumesv1.Volume
  34. for _, v := range volumeList {
  35. ret = append(ret, toGrpcVolume(v))
  36. }
  37. return ret
  38. }
  39. func toGrpcVolume(v volumes.Volume) *volumesv1.Volume {
  40. return &volumesv1.Volume{
  41. Id: v.ID,
  42. Description: v.Description,
  43. }
  44. }