diff --git a/cmd/ctr/snapshot.go b/cmd/ctr/snapshot.go index 386269d44..ab5f2ea4b 100644 --- a/cmd/ctr/snapshot.go +++ b/cmd/ctr/snapshot.go @@ -4,11 +4,14 @@ import ( "context" "fmt" "os" + "strings" "text/tabwriter" + "github.com/Sirupsen/logrus" "github.com/containerd/containerd/progress" "github.com/containerd/containerd/rootfs" "github.com/containerd/containerd/snapshot" + digest "github.com/opencontainers/go-digest" "github.com/pkg/errors" "github.com/urfave/cli" ) @@ -21,6 +24,7 @@ var snapshotCommand = cli.Command{ listSnapshotCommand, usageSnapshotCommand, removeSnapshotCommand, + prepareSnapshotCommand, }, } @@ -193,3 +197,43 @@ var removeSnapshotCommand = cli.Command{ return nil }, } + +var prepareSnapshotCommand = cli.Command{ + Name: "prepare", + Usage: "prepare gets mount commands for digest", + ArgsUsage: "[flags] ", + Flags: []cli.Flag{}, + Action: func(clicontext *cli.Context) error { + ctx, cancel := appContext(clicontext) + defer cancel() + + if clicontext.NArg() != 2 { + return cli.ShowSubcommandHelp(clicontext) + } + + dgst, err := digest.Parse(clicontext.Args().Get(0)) + if err != nil { + return err + } + target := clicontext.Args().Get(1) + + logrus.Infof("preparing mounts %s", dgst.String()) + + client, err := newClient(clicontext) + if err != nil { + return err + } + + snapshotter := client.SnapshotService() + mounts, err := snapshotter.Prepare(ctx, target, dgst.String()) + if err != nil { + return err + } + + for _, m := range mounts { + fmt.Fprintf(os.Stdout, "mount -t %s %s %s -o %s\n", m.Type, m.Source, target, strings.Join(m.Options, ",")) + } + + return nil + }, +} diff --git a/cmd/dist/rootfs.go b/cmd/dist/rootfs.go index fccb300fa..d5f90630c 100644 --- a/cmd/dist/rootfs.go +++ b/cmd/dist/rootfs.go @@ -3,8 +3,6 @@ package main import ( "errors" "fmt" - "os" - "strings" "github.com/containerd/containerd/log" digest "github.com/opencontainers/go-digest" @@ -16,7 +14,6 @@ var rootfsCommand = cli.Command{ Usage: "rootfs setups a rootfs", Subcommands: []cli.Command{ rootfsUnpackCommand, - rootfsPrepareCommand, }, } @@ -71,43 +68,3 @@ var rootfsUnpackCommand = cli.Command{ return nil }, } - -var rootfsPrepareCommand = cli.Command{ - Name: "prepare", - Usage: "prepare gets mount commands for digest", - ArgsUsage: "[flags] ", - Flags: []cli.Flag{}, - Action: func(clicontext *cli.Context) error { - ctx, cancel := appContext(clicontext) - defer cancel() - - if clicontext.NArg() != 2 { - return cli.ShowSubcommandHelp(clicontext) - } - - dgst, err := digest.Parse(clicontext.Args().Get(0)) - if err != nil { - return err - } - target := clicontext.Args().Get(1) - - log.G(ctx).Infof("preparing mounts %s", dgst.String()) - - client, err := getClient(clicontext) - if err != nil { - return err - } - - snapshotter := client.SnapshotService() - mounts, err := snapshotter.Prepare(ctx, target, dgst.String()) - if err != nil { - return err - } - - for _, m := range mounts { - fmt.Fprintf(os.Stdout, "mount -t %s %s %s -o %s\n", m.Type, m.Source, target, strings.Join(m.Options, ",")) - } - - return nil - }, -}