| package images |
| |
| import ( |
| "context" |
| |
| imagesapi "github.com/containerd/containerd/api/services/images" |
| "github.com/containerd/containerd/images" |
| ocispec "github.com/opencontainers/image-spec/specs-go/v1" |
| ) |
| |
| type remoteStore struct { |
| client imagesapi.ImagesClient |
| } |
| |
| func NewStoreFromClient(client imagesapi.ImagesClient) images.Store { |
| return &remoteStore{ |
| client: client, |
| } |
| } |
| |
| func (s *remoteStore) Put(ctx context.Context, name string, desc ocispec.Descriptor) error { |
| // TODO(stevvooe): Consider that the remote may want to augment and return |
| // a modified image. |
| _, err := s.client.Put(ctx, &imagesapi.PutRequest{ |
| Image: imagesapi.Image{ |
| Name: name, |
| Target: descToProto(&desc), |
| }, |
| }) |
| |
| return rewriteGRPCError(err) |
| } |
| |
| func (s *remoteStore) Get(ctx context.Context, name string) (images.Image, error) { |
| resp, err := s.client.Get(ctx, &imagesapi.GetRequest{ |
| Name: name, |
| }) |
| if err != nil { |
| return images.Image{}, rewriteGRPCError(err) |
| } |
| |
| return imageFromProto(resp.Image), nil |
| } |
| |
| func (s *remoteStore) List(ctx context.Context) ([]images.Image, error) { |
| resp, err := s.client.List(ctx, &imagesapi.ListRequest{}) |
| if err != nil { |
| return nil, rewriteGRPCError(err) |
| } |
| |
| return imagesFromProto(resp.Images), nil |
| } |
| |
| func (s *remoteStore) Delete(ctx context.Context, name string) error { |
| _, err := s.client.Delete(ctx, &imagesapi.DeleteRequest{ |
| Name: name, |
| }) |
| |
| return rewriteGRPCError(err) |
| } |