123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- package metadata
- import (
- "github.com/docker/docker/image/v1"
- "github.com/docker/docker/layer"
- "github.com/pkg/errors"
- )
- // V1IDService maps v1 IDs to layers on disk.
- type V1IDService struct {
- store Store
- }
- // NewV1IDService creates a new V1 ID mapping service.
- func NewV1IDService(store Store) *V1IDService {
- return &V1IDService{
- store: store,
- }
- }
- // namespace returns the namespace used by this service.
- func (idserv *V1IDService) namespace() string {
- return "v1id"
- }
- // Get finds a layer by its V1 ID.
- func (idserv *V1IDService) Get(v1ID, registry string) (layer.DiffID, error) {
- if idserv.store == nil {
- return "", errors.New("no v1IDService storage")
- }
- if err := v1.ValidateID(v1ID); err != nil {
- return layer.DiffID(""), err
- }
- idBytes, err := idserv.store.Get(idserv.namespace(), registry+","+v1ID)
- if err != nil {
- return layer.DiffID(""), err
- }
- return layer.DiffID(idBytes), nil
- }
- // Set associates an image with a V1 ID.
- func (idserv *V1IDService) Set(v1ID, registry string, id layer.DiffID) error {
- if idserv.store == nil {
- return nil
- }
- if err := v1.ValidateID(v1ID); err != nil {
- return err
- }
- return idserv.store.Set(idserv.namespace(), registry+","+v1ID, []byte(id))
- }
|