|
@@ -3,14 +3,11 @@ package graph
|
|
|
import (
|
|
|
"encoding/json"
|
|
|
"fmt"
|
|
|
- "io"
|
|
|
- "io/ioutil"
|
|
|
"os"
|
|
|
"testing"
|
|
|
|
|
|
"github.com/docker/distribution/digest"
|
|
|
"github.com/docker/docker/image"
|
|
|
- "github.com/docker/docker/pkg/tarsum"
|
|
|
"github.com/docker/docker/registry"
|
|
|
"github.com/docker/docker/runconfig"
|
|
|
"github.com/docker/docker/utils"
|
|
@@ -72,11 +69,8 @@ func (s *TagStore) newManifest(localName, remoteName, tag string) ([]byte, error
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- checksum, err := s.graph.GetCheckSum(layer.ID)
|
|
|
- if err != nil {
|
|
|
- return nil, fmt.Errorf("Error getting image checksum: %s", err)
|
|
|
- }
|
|
|
- if tarsum.VersionLabelForChecksum(checksum) != tarsum.Version1.String() {
|
|
|
+ dgst, err := s.graph.GetDigest(layer.ID)
|
|
|
+ if err == ErrDigestNotSet {
|
|
|
archive, err := s.graph.TarLayer(layer)
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
@@ -84,20 +78,17 @@ func (s *TagStore) newManifest(localName, remoteName, tag string) ([]byte, error
|
|
|
|
|
|
defer archive.Close()
|
|
|
|
|
|
- tarSum, err := tarsum.NewTarSum(archive, true, tarsum.Version1)
|
|
|
+ dgst, err = digest.FromReader(archive)
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
- if _, err := io.Copy(ioutil.Discard, tarSum); err != nil {
|
|
|
- return nil, err
|
|
|
- }
|
|
|
-
|
|
|
- checksum = tarSum.Sum(nil)
|
|
|
|
|
|
// Save checksum value
|
|
|
- if err := s.graph.SetCheckSum(layer.ID, checksum); err != nil {
|
|
|
+ if err := s.graph.SetDigest(layer.ID, dgst); err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
+ } else if err != nil {
|
|
|
+ return nil, fmt.Errorf("Error getting image checksum: %s", err)
|
|
|
}
|
|
|
|
|
|
jsonData, err := s.graph.RawJSON(layer.ID)
|
|
@@ -105,7 +96,7 @@ func (s *TagStore) newManifest(localName, remoteName, tag string) ([]byte, error
|
|
|
return nil, fmt.Errorf("Cannot retrieve the path for {%s}: %s", layer.ID, err)
|
|
|
}
|
|
|
|
|
|
- manifest.FSLayers = append(manifest.FSLayers, ®istry.FSLayer{BlobSum: checksum})
|
|
|
+ manifest.FSLayers = append(manifest.FSLayers, ®istry.FSLayer{BlobSum: dgst.String()})
|
|
|
|
|
|
layersSeen[layer.ID] = true
|
|
|
|
|
@@ -141,10 +132,10 @@ func TestManifestTarsumCache(t *testing.T) {
|
|
|
t.Fatal(err)
|
|
|
}
|
|
|
|
|
|
- if cs, err := store.graph.GetCheckSum(testManifestImageID); err != nil {
|
|
|
- t.Fatal(err)
|
|
|
- } else if cs != "" {
|
|
|
+ if _, err := store.graph.GetDigest(testManifestImageID); err == nil {
|
|
|
t.Fatalf("Non-empty checksum file after register")
|
|
|
+ } else if err != ErrDigestNotSet {
|
|
|
+ t.Fatal(err)
|
|
|
}
|
|
|
|
|
|
// Generate manifest
|
|
@@ -153,7 +144,7 @@ func TestManifestTarsumCache(t *testing.T) {
|
|
|
t.Fatal(err)
|
|
|
}
|
|
|
|
|
|
- manifestChecksum, err := store.graph.GetCheckSum(testManifestImageID)
|
|
|
+ manifestChecksum, err := store.graph.GetDigest(testManifestImageID)
|
|
|
if err != nil {
|
|
|
t.Fatal(err)
|
|
|
}
|
|
@@ -167,7 +158,7 @@ func TestManifestTarsumCache(t *testing.T) {
|
|
|
t.Fatalf("Unexpected number of layers, expecting 1: %d", len(manifest.FSLayers))
|
|
|
}
|
|
|
|
|
|
- if manifest.FSLayers[0].BlobSum != manifestChecksum {
|
|
|
+ if manifest.FSLayers[0].BlobSum != manifestChecksum.String() {
|
|
|
t.Fatalf("Unexpected blob sum, expecting %q, got %q", manifestChecksum, manifest.FSLayers[0].BlobSum)
|
|
|
}
|
|
|
|
|
@@ -207,10 +198,10 @@ func TestManifestDigestCheck(t *testing.T) {
|
|
|
t.Fatal(err)
|
|
|
}
|
|
|
|
|
|
- if cs, err := store.graph.GetCheckSum(testManifestImageID); err != nil {
|
|
|
- t.Fatal(err)
|
|
|
- } else if cs != "" {
|
|
|
+ if _, err := store.graph.GetDigest(testManifestImageID); err == nil {
|
|
|
t.Fatalf("Non-empty checksum file after register")
|
|
|
+ } else if err != ErrDigestNotSet {
|
|
|
+ t.Fatal(err)
|
|
|
}
|
|
|
|
|
|
// Generate manifest
|