From 4492a2cee3203f39a423bc04e3ac0b494c525807 Mon Sep 17 00:00:00 2001 From: Derek McGowan Date: Wed, 15 Mar 2017 17:17:25 -0700 Subject: [PATCH] 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 (github: dmcgowan) --- cmd/dist/rootfs.go | 6 +++--- rootfs/apply.go | 5 +++-- services/rootfs/preparer.go | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/cmd/dist/rootfs.go b/cmd/dist/rootfs.go index ca4e40e..cd2378f 100644 --- a/cmd/dist/rootfs.go +++ b/cmd/dist/rootfs.go @@ -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] ", @@ -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] ", diff --git a/rootfs/apply.go b/rootfs/apply.go index f53e553..cd62564 100644 --- a/rootfs/apply.go +++ b/rootfs/apply.go @@ -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 } diff --git a/services/rootfs/preparer.go b/services/rootfs/preparer.go index 52ad489..82408d8 100644 --- a/services/rootfs/preparer.go +++ b/services/rootfs/preparer.go @@ -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 }