Add own reference package wrapper
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com> Upstream-commit: 2655954c2dd9d92c2394b04e4262543174c4c038 Component: engine
This commit is contained in:
@ -11,12 +11,11 @@ import (
|
||||
|
||||
"github.com/Sirupsen/logrus"
|
||||
"github.com/docker/distribution/digest"
|
||||
"github.com/docker/distribution/reference"
|
||||
"github.com/docker/docker/distribution/metadata"
|
||||
"github.com/docker/docker/image"
|
||||
imagev1 "github.com/docker/docker/image/v1"
|
||||
"github.com/docker/docker/layer"
|
||||
"github.com/docker/docker/tag"
|
||||
"github.com/docker/docker/reference"
|
||||
)
|
||||
|
||||
type graphIDRegistrar interface {
|
||||
@ -46,7 +45,7 @@ var (
|
||||
|
||||
// Migrate takes an old graph directory and transforms the metadata into the
|
||||
// new format.
|
||||
func Migrate(root, driverName string, ls layer.Store, is image.Store, ts tag.Store, ms metadata.Store) error {
|
||||
func Migrate(root, driverName string, ls layer.Store, is image.Store, rs reference.Store, ms metadata.Store) error {
|
||||
mappings := make(map[string]image.ID)
|
||||
|
||||
if registrar, ok := ls.(graphIDRegistrar); !ok {
|
||||
@ -61,7 +60,7 @@ func Migrate(root, driverName string, ls layer.Store, is image.Store, ts tag.Sto
|
||||
return err
|
||||
}
|
||||
|
||||
if err := migrateTags(root, driverName, ts, mappings); err != nil {
|
||||
if err := migrateRefs(root, driverName, rs, mappings); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -189,12 +188,12 @@ func migrateContainers(root string, ls graphIDMounter, is image.Store, imageMapp
|
||||
return nil
|
||||
}
|
||||
|
||||
type tagAdder interface {
|
||||
type refAdder interface {
|
||||
AddTag(ref reference.Named, id image.ID, force bool) error
|
||||
AddDigest(ref reference.Canonical, id image.ID, force bool) error
|
||||
}
|
||||
|
||||
func migrateTags(root, driverName string, ts tagAdder, mappings map[string]image.ID) error {
|
||||
func migrateRefs(root, driverName string, rs refAdder, mappings map[string]image.ID) error {
|
||||
migrationFile := filepath.Join(root, migrationTagsFileName)
|
||||
if _, err := os.Lstat(migrationFile); !os.IsNotExist(err) {
|
||||
return err
|
||||
@ -232,7 +231,7 @@ func migrateTags(root, driverName string, ts tagAdder, mappings map[string]image
|
||||
logrus.Errorf("migrate tags: invalid digest %q, %q", dgst, err)
|
||||
continue
|
||||
}
|
||||
if err := ts.AddDigest(canonical, strongID, false); err != nil {
|
||||
if err := rs.AddDigest(canonical, strongID, false); err != nil {
|
||||
logrus.Errorf("can't migrate digest %q for %q, err: %q", ref.String(), strongID, err)
|
||||
}
|
||||
} else {
|
||||
@ -241,7 +240,7 @@ func migrateTags(root, driverName string, ts tagAdder, mappings map[string]image
|
||||
logrus.Errorf("migrate tags: invalid tag %q, %q", tag, err)
|
||||
continue
|
||||
}
|
||||
if err := ts.AddTag(tagRef, strongID, false); err != nil {
|
||||
if err := rs.AddTag(tagRef, strongID, false); err != nil {
|
||||
logrus.Errorf("can't migrate tag %q for %q, err: %q", ref.String(), strongID, err)
|
||||
}
|
||||
}
|
||||
|
||||
@ -13,13 +13,13 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/docker/distribution/digest"
|
||||
"github.com/docker/distribution/reference"
|
||||
"github.com/docker/docker/distribution/metadata"
|
||||
"github.com/docker/docker/image"
|
||||
"github.com/docker/docker/layer"
|
||||
"github.com/docker/docker/reference"
|
||||
)
|
||||
|
||||
func TestMigrateTags(t *testing.T) {
|
||||
func TestMigrateRefs(t *testing.T) {
|
||||
tmpdir, err := ioutil.TempDir("", "migrate-tags")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
@ -29,7 +29,7 @@ func TestMigrateTags(t *testing.T) {
|
||||
ioutil.WriteFile(filepath.Join(tmpdir, "repositories-generic"), []byte(`{"Repositories":{"busybox":{"latest":"b3ca410aa2c115c05969a7b2c8cf8a9fcf62c1340ed6a601c9ee50df337ec108","sha256:16a2a52884c2a9481ed267c2d46483eac7693b813a63132368ab098a71303f8a":"b3ca410aa2c115c05969a7b2c8cf8a9fcf62c1340ed6a601c9ee50df337ec108"},"registry":{"2":"5d165b8e4b203685301c815e95663231691d383fd5e3d3185d1ce3f8dddead3d","latest":"8d5547a9f329b1d3f93198cd661fb5117e5a96b721c5cf9a2c389e7dd4877128"}}}`), 0600)
|
||||
|
||||
ta := &mockTagAdder{}
|
||||
err = migrateTags(tmpdir, "generic", ta, map[string]image.ID{
|
||||
err = migrateRefs(tmpdir, "generic", ta, map[string]image.ID{
|
||||
"5d165b8e4b203685301c815e95663231691d383fd5e3d3185d1ce3f8dddead3d": image.ID("sha256:2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"),
|
||||
"b3ca410aa2c115c05969a7b2c8cf8a9fcf62c1340ed6a601c9ee50df337ec108": image.ID("sha256:fcde2b2edba56bf408601fb721fe9b5c338d10ee429ea04fae5511b68fbf8fb9"),
|
||||
"abcdef3434c115c05969a7b2c8cf8a9fcf62c1340ed6a601c9ee50df337ec108": image.ID("sha256:56434342345ae68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"),
|
||||
@ -50,7 +50,7 @@ func TestMigrateTags(t *testing.T) {
|
||||
|
||||
// second migration is no-op
|
||||
ioutil.WriteFile(filepath.Join(tmpdir, "repositories-generic"), []byte(`{"Repositories":{"busybox":{"latest":"b3ca410aa2c115c05969a7b2c8cf8a9fcf62c1340ed6a601c9ee50df337ec108"`), 0600)
|
||||
err = migrateTags(tmpdir, "generic", ta, map[string]image.ID{
|
||||
err = migrateRefs(tmpdir, "generic", ta, map[string]image.ID{
|
||||
"b3ca410aa2c115c05969a7b2c8cf8a9fcf62c1340ed6a601c9ee50df337ec108": image.ID("sha256:fcde2b2edba56bf408601fb721fe9b5c338d10ee429ea04fae5511b68fbf8fb9"),
|
||||
})
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user