4 "github.com/docker/docker/image/v1"
5 "github.com/docker/docker/layer"
6 "github.com/pkg/errors"
9 // V1IDService maps v1 IDs to layers on disk.
10 type V1IDService struct {
14 // NewV1IDService creates a new V1 ID mapping service.
15 func NewV1IDService(store Store) *V1IDService {
21 // namespace returns the namespace used by this service.
22 func (idserv *V1IDService) namespace() string {
26 // Get finds a layer by its V1 ID.
27 func (idserv *V1IDService) Get(v1ID, registry string) (layer.DiffID, error) {
28 if idserv.store == nil {
29 return "", errors.New("no v1IDService storage")
31 if err := v1.ValidateID(v1ID); err != nil {
32 return layer.DiffID(""), err
35 idBytes, err := idserv.store.Get(idserv.namespace(), registry+","+v1ID)
37 return layer.DiffID(""), err
39 return layer.DiffID(idBytes), nil
42 // Set associates an image with a V1 ID.
43 func (idserv *V1IDService) Set(v1ID, registry string, id layer.DiffID) error {
44 if idserv.store == nil {
47 if err := v1.ValidateID(v1ID); err != nil {
50 return idserv.store.Set(idserv.namespace(), registry+","+v1ID, []byte(id))