Merge pull request #1652 from crosbymichael/cr-image

create image for checkpoint
This commit is contained in:
Michael Crosby
2017-10-18 14:31:13 -04:00
committed by GitHub
10 changed files with 91 additions and 58 deletions

View File

@@ -48,7 +48,7 @@ var taskCheckpointCommand = cli.Command{
if err != nil {
return err
}
fmt.Println(checkpoint.Digest.String())
fmt.Println(checkpoint.Name())
return nil
},
}

View File

@@ -56,7 +56,6 @@ var imagesListCommand = cli.Command{
imageStore := client.ImageService()
cs := client.ContentStore()
imageList, err := imageStore.List(ctx, filters...)
if err != nil {
return errors.Wrap(err, "failed to list images")

View File

@@ -9,7 +9,6 @@ import (
"github.com/containerd/console"
"github.com/containerd/containerd"
"github.com/containerd/containerd/containers"
digest "github.com/opencontainers/go-digest"
specs "github.com/opencontainers/runtime-spec/specs-go"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
@@ -96,8 +95,7 @@ var runCommand = cli.Command{
}, snapshotterFlags...),
Action: func(context *cli.Context) error {
var (
err error
checkpointIndex digest.Digest
err error
ctx, cancel = appContext(context)
id = context.Args().Get(1)
@@ -112,11 +110,6 @@ var runCommand = cli.Command{
if id == "" {
return errors.New("container id must be provided")
}
if raw := context.String("checkpoint"); raw != "" {
if checkpointIndex, err = digest.Parse(raw); err != nil {
return err
}
}
client, err := newClient(context)
if err != nil {
return err
@@ -128,7 +121,7 @@ var runCommand = cli.Command{
if context.Bool("rm") {
defer container.Delete(ctx, containerd.WithSnapshotCleanup)
}
task, err := newTask(ctx, container, checkpointIndex, tty)
task, err := newTask(ctx, client, container, context.String("checkpoint"), tty)
if err != nil {
return err
}

View File

@@ -11,8 +11,6 @@ import (
"github.com/containerd/console"
"github.com/containerd/containerd"
digest "github.com/opencontainers/go-digest"
"github.com/opencontainers/image-spec/specs-go/v1"
specs "github.com/opencontainers/runtime-spec/specs-go"
"github.com/sirupsen/logrus"
"github.com/urfave/cli"
@@ -67,15 +65,11 @@ func newContainer(ctx gocontext.Context, client *containerd.Client, context *cli
)
if raw := context.String("checkpoint"); raw != "" {
checkpointIndex, err := digest.Parse(raw)
im, err := client.GetImage(ctx, raw)
if err != nil {
return nil, err
}
if checkpointIndex != "" {
return client.NewContainer(ctx, id, containerd.WithCheckpoint(v1.Descriptor{
Digest: checkpointIndex,
}, id))
}
return client.NewContainer(ctx, id, containerd.WithCheckpoint(im, id))
}
var (
@@ -120,7 +114,7 @@ func newContainer(ctx gocontext.Context, client *containerd.Client, context *cli
return client.NewContainer(ctx, id, cOpts...)
}
func newTask(ctx gocontext.Context, container containerd.Container, checkpoint digest.Digest, tty bool) (containerd.Task, error) {
func newTask(ctx gocontext.Context, client *containerd.Client, container containerd.Container, checkpoint string, tty bool) (containerd.Task, error) {
if checkpoint == "" {
io := containerd.Stdio
if tty {
@@ -128,7 +122,9 @@ func newTask(ctx gocontext.Context, container containerd.Container, checkpoint d
}
return container.NewTask(ctx, io)
}
return container.NewTask(ctx, containerd.Stdio, containerd.WithTaskCheckpoint(v1.Descriptor{
Digest: checkpoint,
}))
im, err := client.GetImage(ctx, checkpoint)
if err != nil {
return nil, err
}
return container.NewTask(ctx, containerd.Stdio, containerd.WithTaskCheckpoint(im))
}

View File

@@ -9,7 +9,6 @@ import (
"github.com/containerd/containerd/containers"
"github.com/containerd/containerd/errdefs"
"github.com/containerd/containerd/log"
digest "github.com/opencontainers/go-digest"
specs "github.com/opencontainers/runtime-spec/specs-go"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
@@ -118,7 +117,7 @@ func newContainer(ctx gocontext.Context, client *containerd.Client, context *cli
)
}
func newTask(ctx gocontext.Context, container containerd.Container, _ digest.Digest, tty bool) (containerd.Task, error) {
func newTask(ctx gocontext.Context, client *containerd.Client, container containerd.Container, _ string, tty bool) (containerd.Task, error) {
io := containerd.Stdio
if tty {
io = containerd.StdioTerminal

View File

@@ -2,7 +2,6 @@ package main
import (
"github.com/containerd/console"
"github.com/opencontainers/go-digest"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
"github.com/urfave/cli"
@@ -41,7 +40,7 @@ var taskStartCommand = cli.Command{
tty := spec.Process.Terminal
task, err := newTask(ctx, container, digest.Digest(""), tty)
task, err := newTask(ctx, client, container, "", tty)
if err != nil {
return err
}