
Replaced pull unpacker with boolean to call unpack. Added unpack and target to image type. Updated progress logic for pull. Added list images to client. Updated rootfs unpacker to use client. Signed-off-by: Derek McGowan <derek@mcgstyle.net>
46 lines
1023 B
Go
46 lines
1023 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/containerd/containerd/log"
|
|
"github.com/urfave/cli"
|
|
)
|
|
|
|
var pullCommand = cli.Command{
|
|
Name: "pull",
|
|
Usage: "pull an image from a remote",
|
|
ArgsUsage: "[flags] <ref>",
|
|
Description: `Fetch and prepare an image for use in containerd.
|
|
|
|
After pulling an image, it should be ready to use the same reference in a run
|
|
command. As part of this process, we do the following:
|
|
|
|
1. Fetch all resources into containerd.
|
|
2. Prepare the snapshot filesystem with the pulled resources.
|
|
3. Register metadata for the image.
|
|
`,
|
|
Flags: registryFlags,
|
|
Action: func(clicontext *cli.Context) error {
|
|
var (
|
|
ref = clicontext.Args().First()
|
|
)
|
|
|
|
ctx, cancel := appContext(clicontext)
|
|
defer cancel()
|
|
|
|
img, err := fetch(ctx, ref, clicontext)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
log.G(ctx).WithField("image", ref).Debug("unpacking")
|
|
|
|
// TODO: Show unpack status
|
|
fmt.Printf("unpacking %s...", img.Target().Digest)
|
|
err = img.Unpack(ctx)
|
|
fmt.Println("done")
|
|
return err
|
|
},
|
|
}
|