Fix rootfs digest computation

Compute digest from uncompressed archive.
Properly propagate error on unpack.
Rename dist cmd commands to match command name.

Signed-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan)
This commit is contained in:
Derek McGowan 2017-03-15 17:17:25 -07:00
parent 82a2d766ec
commit 4492a2cee3
No known key found for this signature in database
GPG key ID: F58C5D0A4405ACDB
3 changed files with 7 additions and 6 deletions

6
cmd/dist/rootfs.go vendored
View file

@ -23,12 +23,12 @@ var rootfsCommand = cli.Command{
Name: "rootfs",
Usage: "rootfs setups a rootfs",
Subcommands: []cli.Command{
rootfsUnpackCommand,
rootfsPrepareCommand,
rootfsInitCommand,
},
}
var rootfsPrepareCommand = cli.Command{
var rootfsUnpackCommand = cli.Command{
Name: "unpack",
Usage: "unpack applies layers from a manifest to a snapshot",
ArgsUsage: "[flags] <digest>",
@ -68,7 +68,7 @@ var rootfsPrepareCommand = cli.Command{
},
}
var rootfsInitCommand = cli.Command{
var rootfsPrepareCommand = cli.Command{
Name: "prepare",
Usage: "prepare gets mount commands for digest",
ArgsUsage: "[flags] <digest> <target>",

View file

@ -32,8 +32,6 @@ type Mounter interface {
//
// The returned digest is the diffID for the applied layer.
func ApplyLayer(snapshots snapshot.Snapshotter, mounter Mounter, rd io.Reader, parent digest.Digest) (digest.Digest, error) {
digester := digest.Canonical.Digester() // used to calculate diffID.
rd = io.TeeReader(rd, digester.Hash())
ctx := context.TODO()
// create a temporary directory to work from, needs to be on same
@ -68,6 +66,9 @@ func ApplyLayer(snapshots snapshot.Snapshotter, mounter Mounter, rd io.Reader, p
return "", err
}
digester := digest.Canonical.Digester() // used to calculate diffID.
rd = io.TeeReader(rd, digester.Hash())
if _, err := archive.Apply(context.Background(), key, rd); err != nil {
return "", err
}

View file

@ -33,7 +33,7 @@ func (rp remoteUnpacker) Unpack(ctx context.Context, layers []ocispec.Descriptor
}
resp, err := rp.client.Unpack(ctx, &pr)
if err != nil {
return "", nil
return "", err
}
return resp.ChainID, nil
}