Refactor newClient in ctr
Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
This commit is contained in:
parent
edf4114d55
commit
9f76083a8f
@ -14,12 +14,11 @@ var taskAttachCommand = cli.Command{
|
|||||||
Usage: "attach to the IO of a running container",
|
Usage: "attach to the IO of a running container",
|
||||||
ArgsUsage: "CONTAINER",
|
ArgsUsage: "CONTAINER",
|
||||||
Action: func(context *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
ctx, cancel := appContext(context)
|
client, ctx, cancel, err := newClient(context)
|
||||||
defer cancel()
|
|
||||||
client, err := newClient(context)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
container, err := client.LoadContainer(ctx, context.Args().First())
|
container, err := client.LoadContainer(ctx, context.Args().First())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -19,19 +19,15 @@ var taskCheckpointCommand = cli.Command{
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
Action: func(context *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
var (
|
id := context.Args().First()
|
||||||
ctx, cancel = appContext(context)
|
|
||||||
id = context.Args().First()
|
|
||||||
)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
if id == "" {
|
if id == "" {
|
||||||
return errors.New("container id must be provided")
|
return errors.New("container id must be provided")
|
||||||
}
|
}
|
||||||
client, err := newClient(context)
|
client, ctx, cancel, err := newClient(context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
container, err := client.LoadContainer(ctx, id)
|
container, err := client.LoadContainer(ctx, id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -23,12 +23,11 @@ var containersDeleteCommand = cli.Command{
|
|||||||
},
|
},
|
||||||
Action: func(context *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
var exitErr error
|
var exitErr error
|
||||||
ctx, cancel := appContext(context)
|
client, ctx, cancel, err := newClient(context)
|
||||||
defer cancel()
|
|
||||||
client, err := newClient(context)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
deleteOpts := []containerd.DeleteOpts{}
|
deleteOpts := []containerd.DeleteOpts{}
|
||||||
if !context.Bool("keep-snapshot") {
|
if !context.Bool("keep-snapshot") {
|
||||||
deleteOpts = append(deleteOpts, containerd.WithSnapshotCleanup)
|
deleteOpts = append(deleteOpts, containerd.WithSnapshotCleanup)
|
||||||
|
@ -26,16 +26,14 @@ var containersCommand = cli.Command{
|
|||||||
ArgsUsage: "[filter, ...]",
|
ArgsUsage: "[filter, ...]",
|
||||||
Action: func(context *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
var (
|
var (
|
||||||
filters = context.Args()
|
filters = context.Args()
|
||||||
quiet = context.Bool("quiet")
|
quiet = context.Bool("quiet")
|
||||||
ctx, cancel = appContext(context)
|
|
||||||
)
|
)
|
||||||
defer cancel()
|
client, ctx, cancel, err := newClient(context)
|
||||||
|
|
||||||
client, err := newClient(context)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
containers, err := client.Containers(ctx, filters...)
|
containers, err := client.Containers(ctx, filters...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -41,20 +41,16 @@ var (
|
|||||||
Description: "Display the image object.",
|
Description: "Display the image object.",
|
||||||
Flags: []cli.Flag{},
|
Flags: []cli.Flag{},
|
||||||
Action: func(context *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
ctx, cancel := appContext(context)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
dgst, err := digest.Parse(context.Args().First())
|
dgst, err := digest.Parse(context.Args().First())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
client, ctx, cancel, err := newClient(context)
|
||||||
client, err := newClient(context)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
cs := client.ContentStore()
|
cs := client.ContentStore()
|
||||||
|
|
||||||
ra, err := cs.ReaderAt(ctx, dgst)
|
ra, err := cs.ReaderAt(ctx, dgst)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -87,22 +83,18 @@ var (
|
|||||||
expectedSize = context.Int64("expected-size")
|
expectedSize = context.Int64("expected-size")
|
||||||
expectedDigest = digest.Digest(context.String("expected-digest"))
|
expectedDigest = digest.Digest(context.String("expected-digest"))
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx, cancel := appContext(context)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
if err := expectedDigest.Validate(); expectedDigest != "" && err != nil {
|
if err := expectedDigest.Validate(); expectedDigest != "" && err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if ref == "" {
|
if ref == "" {
|
||||||
return errors.New("must specify a transaction reference")
|
return errors.New("must specify a transaction reference")
|
||||||
}
|
}
|
||||||
|
client, ctx, cancel, err := newClient(context)
|
||||||
client, err := newClient(context)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
|
|
||||||
cs := client.ContentStore()
|
cs := client.ContentStore()
|
||||||
|
|
||||||
// TODO(stevvooe): Allow ingest to be reentrant. Currently, we expect
|
// TODO(stevvooe): Allow ingest to be reentrant. Currently, we expect
|
||||||
@ -130,24 +122,17 @@ var (
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
Action: func(context *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
var (
|
match := context.Args().First()
|
||||||
match = context.Args().First()
|
client, ctx, cancel, err := newClient(context)
|
||||||
)
|
|
||||||
|
|
||||||
ctx, cancel := appContext(context)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
client, err := newClient(context)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
cs := client.ContentStore()
|
cs := client.ContentStore()
|
||||||
|
|
||||||
active, err := cs.ListStatuses(ctx, match)
|
active, err := cs.ListStatuses(ctx, match)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
tw := tabwriter.NewWriter(os.Stdout, 1, 8, 1, '\t', 0)
|
tw := tabwriter.NewWriter(os.Stdout, 1, 8, 1, '\t', 0)
|
||||||
fmt.Fprintln(tw, "REF\tSIZE\tAGE\t")
|
fmt.Fprintln(tw, "REF\tSIZE\tAGE\t")
|
||||||
for _, active := range active {
|
for _, active := range active {
|
||||||
@ -178,13 +163,11 @@ var (
|
|||||||
quiet = context.Bool("quiet")
|
quiet = context.Bool("quiet")
|
||||||
args = []string(context.Args())
|
args = []string(context.Args())
|
||||||
)
|
)
|
||||||
ctx, cancel := appContext(context)
|
client, ctx, cancel, err := newClient(context)
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
client, err := newClient(context)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
cs := client.ContentStore()
|
cs := client.ContentStore()
|
||||||
|
|
||||||
var walkFn content.WalkFunc
|
var walkFn content.WalkFunc
|
||||||
@ -229,16 +212,13 @@ var (
|
|||||||
Description: `Labels blobs in the content store`,
|
Description: `Labels blobs in the content store`,
|
||||||
Flags: []cli.Flag{},
|
Flags: []cli.Flag{},
|
||||||
Action: func(context *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
var (
|
object, labels := objectWithLabelArgs(context)
|
||||||
object, labels = objectWithLabelArgs(context)
|
client, ctx, cancel, err := newClient(context)
|
||||||
)
|
|
||||||
ctx, cancel := appContext(context)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
client, err := newClient(context)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
|
|
||||||
cs := client.ContentStore()
|
cs := client.ContentStore()
|
||||||
|
|
||||||
dgst, err := digest.Parse(object)
|
dgst, err := digest.Parse(object)
|
||||||
@ -296,8 +276,6 @@ var (
|
|||||||
validate = context.String("validate")
|
validate = context.String("validate")
|
||||||
object = context.Args().First()
|
object = context.Args().First()
|
||||||
)
|
)
|
||||||
ctx, cancel := appContext(context)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
if validate != "" {
|
if validate != "" {
|
||||||
return errors.New("validating the edit result not supported")
|
return errors.New("validating the edit result not supported")
|
||||||
@ -310,13 +288,12 @@ var (
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
client, ctx, cancel, err := newClient(context)
|
||||||
client, err := newClient(context)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
cs := client.ContentStore()
|
cs := client.ContentStore()
|
||||||
|
|
||||||
ra, err := cs.ReaderAt(ctx, dgst)
|
ra, err := cs.ReaderAt(ctx, dgst)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -360,13 +337,11 @@ var (
|
|||||||
args = []string(context.Args())
|
args = []string(context.Args())
|
||||||
exitError error
|
exitError error
|
||||||
)
|
)
|
||||||
ctx, cancel := appContext(context)
|
client, ctx, cancel, err := newClient(context)
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
client, err := newClient(context)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
cs := client.ContentStore()
|
cs := client.ContentStore()
|
||||||
|
|
||||||
for _, arg := range args {
|
for _, arg := range args {
|
||||||
|
@ -13,15 +13,12 @@ var eventsCommand = cli.Command{
|
|||||||
Name: "events",
|
Name: "events",
|
||||||
Usage: "display containerd events",
|
Usage: "display containerd events",
|
||||||
Action: func(context *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
ctx, cancel := appContext(context)
|
client, ctx, cancel, err := newClient(context)
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
client, err := newClient(context)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
eventsClient := client.EventService()
|
eventsClient := client.EventService()
|
||||||
|
|
||||||
events, err := eventsClient.Subscribe(ctx, &eventsapi.SubscribeRequest{
|
events, err := eventsClient.Subscribe(ctx, &eventsapi.SubscribeRequest{
|
||||||
Filters: context.Args(),
|
Filters: context.Args(),
|
||||||
})
|
})
|
||||||
|
@ -29,20 +29,18 @@ var taskExecCommand = cli.Command{
|
|||||||
},
|
},
|
||||||
Action: func(context *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
var (
|
var (
|
||||||
ctx, cancel = appContext(context)
|
id = context.Args().First()
|
||||||
id = context.Args().First()
|
args = context.Args().Tail()
|
||||||
args = context.Args().Tail()
|
tty = context.Bool("tty")
|
||||||
tty = context.Bool("tty")
|
|
||||||
)
|
)
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
if id == "" {
|
if id == "" {
|
||||||
return errors.New("container id must be provided")
|
return errors.New("container id must be provided")
|
||||||
}
|
}
|
||||||
client, err := newClient(context)
|
client, ctx, cancel, err := newClient(context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
container, err := client.LoadContainer(ctx, id)
|
container, err := client.LoadContainer(ctx, id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -32,27 +32,23 @@ var imagesExportCommand = cli.Command{
|
|||||||
Value: ocispec.MediaTypeImageManifest,
|
Value: ocispec.MediaTypeImageManifest,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Action: func(clicontext *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
var (
|
var (
|
||||||
out = clicontext.Args().First()
|
out = context.Args().First()
|
||||||
local = clicontext.Args().Get(1)
|
local = context.Args().Get(1)
|
||||||
desc ocispec.Descriptor
|
desc ocispec.Descriptor
|
||||||
)
|
)
|
||||||
|
client, ctx, cancel, err := newClient(context)
|
||||||
ctx, cancel := appContext(clicontext)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
client, err := newClient(clicontext)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
if manifest := clicontext.String("manifest"); manifest != "" {
|
if manifest := context.String("manifest"); manifest != "" {
|
||||||
desc.Digest, err = digest.Parse(manifest)
|
desc.Digest, err = digest.Parse(manifest)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "invalid manifest digest")
|
return errors.Wrap(err, "invalid manifest digest")
|
||||||
}
|
}
|
||||||
desc.MediaType = clicontext.String("manifest-type")
|
desc.MediaType = context.String("manifest-type")
|
||||||
} else {
|
} else {
|
||||||
img, err := client.ImageService().Get(ctx, local)
|
img, err := client.ImageService().Get(ctx, local)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -68,7 +64,7 @@ var imagesExportCommand = cli.Command{
|
|||||||
if ociRefName := determineOCIRefName(local); ociRefName != "" {
|
if ociRefName := determineOCIRefName(local); ociRefName != "" {
|
||||||
desc.Annotations[ocispec.AnnotationRefName] = ociRefName
|
desc.Annotations[ocispec.AnnotationRefName] = ociRefName
|
||||||
}
|
}
|
||||||
if ociRefName := clicontext.String("oci-ref-name"); ociRefName != "" {
|
if ociRefName := context.String("oci-ref-name"); ociRefName != "" {
|
||||||
desc.Annotations[ocispec.AnnotationRefName] = ociRefName
|
desc.Annotations[ocispec.AnnotationRefName] = ociRefName
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -44,21 +44,19 @@ Most of this is experimental and there are few leaps to make this work.`,
|
|||||||
var (
|
var (
|
||||||
ref = clicontext.Args().First()
|
ref = clicontext.Args().First()
|
||||||
)
|
)
|
||||||
ctx, cancel := appContext(clicontext)
|
_, err := fetch(ref, clicontext)
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
_, err := fetch(ctx, ref, clicontext)
|
|
||||||
return err
|
return err
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
func fetch(ctx context.Context, ref string, clicontext *cli.Context) (containerd.Image, error) {
|
func fetch(ref string, cliContext *cli.Context) (containerd.Image, error) {
|
||||||
client, err := newClient(clicontext)
|
client, ctx, cancel, err := newClient(cliContext)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
|
|
||||||
resolver, err := getResolver(ctx, clicontext)
|
resolver, err := getResolver(ctx, cliContext)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -69,7 +67,7 @@ func fetch(ctx context.Context, ref string, clicontext *cli.Context) (containerd
|
|||||||
progress := make(chan struct{})
|
progress := make(chan struct{})
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
if !clicontext.GlobalBool("debug") {
|
if !cliContext.GlobalBool("debug") {
|
||||||
// no progress bar, because it hides some debug logs
|
// no progress bar, because it hides some debug logs
|
||||||
showProgress(pctx, ongoing, client.ContentStore(), os.Stdout)
|
showProgress(pctx, ongoing, client.ContentStore(), os.Stdout)
|
||||||
}
|
}
|
||||||
@ -84,7 +82,7 @@ func fetch(ctx context.Context, ref string, clicontext *cli.Context) (containerd
|
|||||||
})
|
})
|
||||||
|
|
||||||
log.G(pctx).WithField("image", ref).Debug("fetching")
|
log.G(pctx).WithField("image", ref).Debug("fetching")
|
||||||
labels := labelArgs(clicontext.StringSlice("label"))
|
labels := labelArgs(cliContext.StringSlice("label"))
|
||||||
img, err := client.Pull(pctx, ref,
|
img, err := client.Pull(pctx, ref,
|
||||||
containerd.WithPullLabels(labels),
|
containerd.WithPullLabels(labels),
|
||||||
containerd.WithResolver(resolver),
|
containerd.WithResolver(resolver),
|
||||||
|
@ -41,21 +41,20 @@ var imagesListCommand = cli.Command{
|
|||||||
Usage: "print only the image refs",
|
Usage: "print only the image refs",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Action: func(clicontext *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
var (
|
var (
|
||||||
filters = clicontext.Args()
|
filters = context.Args()
|
||||||
quiet = clicontext.Bool("quiet")
|
quiet = context.Bool("quiet")
|
||||||
ctx, cancel = appContext(clicontext)
|
|
||||||
)
|
)
|
||||||
defer cancel()
|
client, ctx, cancel, err := newClient(context)
|
||||||
|
|
||||||
client, err := newClient(clicontext)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
imageStore := client.ImageService()
|
var (
|
||||||
cs := client.ContentStore()
|
imageStore = client.ImageService()
|
||||||
|
cs = client.ContentStore()
|
||||||
|
)
|
||||||
imageList, err := imageStore.List(ctx, filters...)
|
imageList, err := imageStore.List(ctx, filters...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "failed to list images")
|
return errors.Wrap(err, "failed to list images")
|
||||||
@ -125,19 +124,16 @@ var imagesSetLabelsCommand = cli.Command{
|
|||||||
Usage: "replace all labels",
|
Usage: "replace all labels",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Action: func(clicontext *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
var (
|
var (
|
||||||
ctx, cancel = appContext(clicontext)
|
replaceAll = context.Bool("replace-all")
|
||||||
replaceAll = clicontext.Bool("replace-all")
|
name, labels = objectWithLabelArgs(context)
|
||||||
name, labels = objectWithLabelArgs(clicontext)
|
|
||||||
)
|
)
|
||||||
defer cancel()
|
client, ctx, cancel, err := newClient(context)
|
||||||
|
|
||||||
client, err := newClient(clicontext)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
if name == "" {
|
if name == "" {
|
||||||
return errors.New("please specify an image")
|
return errors.New("please specify an image")
|
||||||
}
|
}
|
||||||
@ -182,25 +178,23 @@ var imagesCheckCommand = cli.Command{
|
|||||||
ArgsUsage: "[flags] <ref> [<ref>, ...]",
|
ArgsUsage: "[flags] <ref> [<ref>, ...]",
|
||||||
Description: "Check that an image has all content available locally.",
|
Description: "Check that an image has all content available locally.",
|
||||||
Flags: []cli.Flag{},
|
Flags: []cli.Flag{},
|
||||||
Action: func(clicontext *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
var (
|
var (
|
||||||
exitErr error
|
exitErr error
|
||||||
)
|
)
|
||||||
ctx, cancel := appContext(clicontext)
|
client, ctx, cancel, err := newClient(context)
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
client, err := newClient(clicontext)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
imageStore := client.ImageService()
|
var (
|
||||||
contentStore := client.ContentStore()
|
imageStore = client.ImageService()
|
||||||
|
contentStore = client.ContentStore()
|
||||||
tw := tabwriter.NewWriter(os.Stdout, 1, 8, 1, ' ', 0)
|
tw = tabwriter.NewWriter(os.Stdout, 1, 8, 1, ' ', 0)
|
||||||
|
)
|
||||||
fmt.Fprintln(tw, "REF\tTYPE\tDIGEST\tSTATUS\tSIZE\t")
|
fmt.Fprintln(tw, "REF\tTYPE\tDIGEST\tSTATUS\tSIZE\t")
|
||||||
|
|
||||||
args := []string(clicontext.Args())
|
args := []string(context.Args())
|
||||||
imageList, err := imageStore.List(ctx, args...)
|
imageList, err := imageStore.List(ctx, args...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "failed listing images")
|
return errors.Wrap(err, "failed listing images")
|
||||||
@ -267,21 +261,17 @@ var imageRemoveCommand = cli.Command{
|
|||||||
ArgsUsage: "[flags] <ref> [<ref>, ...]",
|
ArgsUsage: "[flags] <ref> [<ref>, ...]",
|
||||||
Description: `Remove one or more images by reference.`,
|
Description: `Remove one or more images by reference.`,
|
||||||
Flags: []cli.Flag{},
|
Flags: []cli.Flag{},
|
||||||
Action: func(clicontext *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
var (
|
client, ctx, cancel, err := newClient(context)
|
||||||
exitErr error
|
|
||||||
)
|
|
||||||
ctx, cancel := appContext(clicontext)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
client, err := newClient(clicontext)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
imageStore := client.ImageService()
|
var (
|
||||||
|
exitErr error
|
||||||
for _, target := range clicontext.Args() {
|
imageStore = client.ImageService()
|
||||||
|
)
|
||||||
|
for _, target := range context.Args() {
|
||||||
if err := imageStore.Delete(ctx, target); err != nil {
|
if err := imageStore.Delete(ctx, target); err != nil {
|
||||||
if !errdefs.IsNotFound(err) {
|
if !errdefs.IsNotFound(err) {
|
||||||
if exitErr == nil {
|
if exitErr == nil {
|
||||||
|
@ -23,22 +23,18 @@ var imagesImportCommand = cli.Command{
|
|||||||
},
|
},
|
||||||
labelFlag,
|
labelFlag,
|
||||||
},
|
},
|
||||||
Action: func(clicontext *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
var (
|
var (
|
||||||
ref = clicontext.Args().First()
|
ref = context.Args().First()
|
||||||
in = clicontext.Args().Get(1)
|
in = context.Args().Get(1)
|
||||||
refObject = clicontext.String("ref-object")
|
refObject = context.String("ref-object")
|
||||||
labels = labelArgs(clicontext.StringSlice("label"))
|
labels = labelArgs(context.StringSlice("label"))
|
||||||
)
|
)
|
||||||
|
client, ctx, cancel, err := newClient(context)
|
||||||
ctx, cancel := appContext(clicontext)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
client, err := newClient(clicontext)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
var r io.ReadCloser
|
var r io.ReadCloser
|
||||||
if in == "-" {
|
if in == "-" {
|
||||||
r = os.Stdin
|
r = os.Stdin
|
||||||
@ -65,7 +61,7 @@ var imagesImportCommand = cli.Command{
|
|||||||
|
|
||||||
// TODO: Show unpack status
|
// TODO: Show unpack status
|
||||||
fmt.Printf("unpacking %s...", img.Target().Digest)
|
fmt.Printf("unpacking %s...", img.Target().Digest)
|
||||||
err = img.Unpack(ctx, clicontext.String("snapshotter"))
|
err = img.Unpack(ctx, context.String("snapshotter"))
|
||||||
fmt.Println("done")
|
fmt.Println("done")
|
||||||
return err
|
return err
|
||||||
},
|
},
|
||||||
|
@ -10,24 +10,19 @@ var containerInfoCommand = cli.Command{
|
|||||||
Usage: "get info about a container",
|
Usage: "get info about a container",
|
||||||
ArgsUsage: "CONTAINER",
|
ArgsUsage: "CONTAINER",
|
||||||
Action: func(context *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
var (
|
id := context.Args().First()
|
||||||
ctx, cancel = appContext(context)
|
|
||||||
id = context.Args().First()
|
|
||||||
)
|
|
||||||
defer cancel()
|
|
||||||
if id == "" {
|
if id == "" {
|
||||||
return errors.New("container id must be provided")
|
return errors.New("container id must be provided")
|
||||||
}
|
}
|
||||||
client, err := newClient(context)
|
client, ctx, cancel, err := newClient(context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
container, err := client.LoadContainer(ctx, id)
|
container, err := client.LoadContainer(ctx, id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
info, err := container.Info(ctx)
|
info, err := container.Info(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -26,11 +26,7 @@ var taskKillCommand = cli.Command{
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
Action: func(context *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
var (
|
id := context.Args().First()
|
||||||
id = context.Args().First()
|
|
||||||
ctx, cancel = appContext(context)
|
|
||||||
)
|
|
||||||
defer cancel()
|
|
||||||
if id == "" {
|
if id == "" {
|
||||||
return errors.New("container id must be provided")
|
return errors.New("container id must be provided")
|
||||||
}
|
}
|
||||||
@ -45,10 +41,11 @@ var taskKillCommand = cli.Command{
|
|||||||
if pid > 0 && all {
|
if pid > 0 && all {
|
||||||
return errors.New("enter a pid or all; not both")
|
return errors.New("enter a pid or all; not both")
|
||||||
}
|
}
|
||||||
client, err := newClient(context)
|
client, ctx, cancel, err := newClient(context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
container, err := client.LoadContainer(ctx, id)
|
container, err := client.LoadContainer(ctx, id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -14,21 +14,16 @@ var containersSetLabelsCommand = cli.Command{
|
|||||||
ArgsUsage: "[flags] <name> [<key>=<value>, ...]",
|
ArgsUsage: "[flags] <name> [<key>=<value>, ...]",
|
||||||
Description: "Set and clear labels for a container.",
|
Description: "Set and clear labels for a container.",
|
||||||
Flags: []cli.Flag{},
|
Flags: []cli.Flag{},
|
||||||
Action: func(clicontext *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
var (
|
containerID, labels := objectWithLabelArgs(context)
|
||||||
ctx, cancel = appContext(clicontext)
|
|
||||||
containerID, labels = objectWithLabelArgs(clicontext)
|
|
||||||
)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
client, err := newClient(clicontext)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if containerID == "" {
|
if containerID == "" {
|
||||||
return errors.New("please specify a container")
|
return errors.New("please specify a container")
|
||||||
}
|
}
|
||||||
|
client, ctx, cancel, err := newClient(context)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer cancel()
|
||||||
|
|
||||||
container, err := client.LoadContainer(ctx, containerID)
|
container, err := client.LoadContainer(ctx, containerID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"sort"
|
"sort"
|
||||||
@ -30,20 +29,16 @@ var namespacesCreateCommand = cli.Command{
|
|||||||
Usage: "create a new namespace.",
|
Usage: "create a new namespace.",
|
||||||
ArgsUsage: "[flags] <name> [<key>=<value]",
|
ArgsUsage: "[flags] <name> [<key>=<value]",
|
||||||
Description: "Create a new namespace. It must be unique.",
|
Description: "Create a new namespace. It must be unique.",
|
||||||
Action: func(clicontext *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
var (
|
namespace, labels := objectWithLabelArgs(context)
|
||||||
ctx = context.Background()
|
|
||||||
namespace, labels = objectWithLabelArgs(clicontext)
|
|
||||||
)
|
|
||||||
|
|
||||||
if namespace == "" {
|
if namespace == "" {
|
||||||
return errors.New("please specify a namespace")
|
return errors.New("please specify a namespace")
|
||||||
}
|
}
|
||||||
|
client, ctx, cancel, err := newClient(context)
|
||||||
client, err := newClient(clicontext)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
namespaces := client.NamespaceService()
|
namespaces := client.NamespaceService()
|
||||||
return namespaces.Create(ctx, namespace, labels)
|
return namespaces.Create(ctx, namespace, labels)
|
||||||
},
|
},
|
||||||
@ -55,28 +50,22 @@ var namespacesSetLabelsCommand = cli.Command{
|
|||||||
ArgsUsage: "[flags] <name> [<key>=<value>, ...]",
|
ArgsUsage: "[flags] <name> [<key>=<value>, ...]",
|
||||||
Description: "Set and clear labels for a namespace.",
|
Description: "Set and clear labels for a namespace.",
|
||||||
Flags: []cli.Flag{},
|
Flags: []cli.Flag{},
|
||||||
Action: func(clicontext *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
var (
|
namespace, labels := objectWithLabelArgs(context)
|
||||||
ctx = context.Background()
|
|
||||||
namespace, labels = objectWithLabelArgs(clicontext)
|
|
||||||
)
|
|
||||||
|
|
||||||
client, err := newClient(clicontext)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
namespaces := client.NamespaceService()
|
|
||||||
|
|
||||||
if namespace == "" {
|
if namespace == "" {
|
||||||
return errors.New("please specify a namespace")
|
return errors.New("please specify a namespace")
|
||||||
}
|
}
|
||||||
|
client, ctx, cancel, err := newClient(context)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer cancel()
|
||||||
|
namespaces := client.NamespaceService()
|
||||||
for k, v := range labels {
|
for k, v := range labels {
|
||||||
if err := namespaces.SetLabel(ctx, namespace, k, v); err != nil {
|
if err := namespaces.SetLabel(ctx, namespace, k, v); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -93,18 +82,14 @@ var namespacesListCommand = cli.Command{
|
|||||||
Usage: "print only the namespace name.",
|
Usage: "print only the namespace name.",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Action: func(clicontext *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
var (
|
quiet := context.Bool("quiet")
|
||||||
ctx = context.Background()
|
client, ctx, cancel, err := newClient(context)
|
||||||
quiet = clicontext.Bool("quiet")
|
|
||||||
)
|
|
||||||
|
|
||||||
client, err := newClient(clicontext)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
namespaces := client.NamespaceService()
|
namespaces := client.NamespaceService()
|
||||||
|
|
||||||
nss, err := namespaces.List(ctx)
|
nss, err := namespaces.List(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -114,30 +99,26 @@ var namespacesListCommand = cli.Command{
|
|||||||
for _, ns := range nss {
|
for _, ns := range nss {
|
||||||
fmt.Println(ns)
|
fmt.Println(ns)
|
||||||
}
|
}
|
||||||
} else {
|
return nil
|
||||||
|
|
||||||
tw := tabwriter.NewWriter(os.Stdout, 1, 8, 1, ' ', 0)
|
|
||||||
fmt.Fprintln(tw, "NAME\tLABELS\t")
|
|
||||||
|
|
||||||
for _, ns := range nss {
|
|
||||||
labels, err := namespaces.Labels(ctx, ns)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
var labelStrings []string
|
|
||||||
for k, v := range labels {
|
|
||||||
labelStrings = append(labelStrings, strings.Join([]string{k, v}, "="))
|
|
||||||
}
|
|
||||||
sort.Strings(labelStrings)
|
|
||||||
|
|
||||||
fmt.Fprintf(tw, "%v\t%v\t\n", ns, strings.Join(labelStrings, ","))
|
|
||||||
}
|
|
||||||
|
|
||||||
return tw.Flush()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
tw := tabwriter.NewWriter(os.Stdout, 1, 8, 1, ' ', 0)
|
||||||
|
fmt.Fprintln(tw, "NAME\tLABELS\t")
|
||||||
|
for _, ns := range nss {
|
||||||
|
labels, err := namespaces.Labels(ctx, ns)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
var labelStrings []string
|
||||||
|
for k, v := range labels {
|
||||||
|
labelStrings = append(labelStrings, strings.Join([]string{k, v}, "="))
|
||||||
|
}
|
||||||
|
sort.Strings(labelStrings)
|
||||||
|
|
||||||
|
fmt.Fprintf(tw, "%v\t%v\t\n", ns, strings.Join(labelStrings, ","))
|
||||||
|
}
|
||||||
|
return tw.Flush()
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -147,19 +128,15 @@ var namespacesRemoveCommand = cli.Command{
|
|||||||
Usage: "remove one or more namespaces",
|
Usage: "remove one or more namespaces",
|
||||||
ArgsUsage: "[flags] <name> [<name>, ...]",
|
ArgsUsage: "[flags] <name> [<name>, ...]",
|
||||||
Description: "Remove one or more namespaces. For now, the namespace must be empty.",
|
Description: "Remove one or more namespaces. For now, the namespace must be empty.",
|
||||||
Action: func(clicontext *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
var (
|
var exitErr error
|
||||||
ctx = context.Background()
|
client, ctx, cancel, err := newClient(context)
|
||||||
exitErr error
|
|
||||||
)
|
|
||||||
|
|
||||||
client, err := newClient(clicontext)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
namespaces := client.NamespaceService()
|
namespaces := client.NamespaceService()
|
||||||
|
for _, target := range context.Args() {
|
||||||
for _, target := range clicontext.Args() {
|
|
||||||
if err := namespaces.Delete(ctx, target); err != nil {
|
if err := namespaces.Delete(ctx, target); err != nil {
|
||||||
if !errdefs.IsNotFound(err) {
|
if !errdefs.IsNotFound(err) {
|
||||||
if exitErr == nil {
|
if exitErr == nil {
|
||||||
@ -173,8 +150,6 @@ var namespacesRemoveCommand = cli.Command{
|
|||||||
|
|
||||||
fmt.Println(target)
|
fmt.Println(target)
|
||||||
}
|
}
|
||||||
|
|
||||||
return exitErr
|
return exitErr
|
||||||
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -7,13 +7,11 @@ var taskPauseCommand = cli.Command{
|
|||||||
Usage: "pause an existing container",
|
Usage: "pause an existing container",
|
||||||
ArgsUsage: "CONTAINER",
|
ArgsUsage: "CONTAINER",
|
||||||
Action: func(context *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
ctx, cancel := appContext(context)
|
client, ctx, cancel, err := newClient(context)
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
client, err := newClient(context)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
container, err := client.LoadContainer(ctx, context.Args().First())
|
container, err := client.LoadContainer(ctx, context.Args().First())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -30,16 +30,14 @@ var pluginsCommand = cli.Command{
|
|||||||
},
|
},
|
||||||
Action: func(context *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
var (
|
var (
|
||||||
quiet = context.Bool("quiet")
|
quiet = context.Bool("quiet")
|
||||||
detailed = context.Bool("detailed")
|
detailed = context.Bool("detailed")
|
||||||
ctx, cancel = appContext(context)
|
|
||||||
)
|
)
|
||||||
defer cancel()
|
client, ctx, cancel, err := newClient(context)
|
||||||
|
|
||||||
client, err := newClient(context)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
ps := client.IntrospectionService()
|
ps := client.IntrospectionService()
|
||||||
response, err := ps.Plugins(ctx, &introspection.PluginsRequest{
|
response, err := ps.Plugins(ctx, &introspection.PluginsRequest{
|
||||||
Filters: context.Args(),
|
Filters: context.Args(),
|
||||||
|
@ -15,19 +15,15 @@ var taskPsCommand = cli.Command{
|
|||||||
Usage: "list processes for container",
|
Usage: "list processes for container",
|
||||||
ArgsUsage: "CONTAINER",
|
ArgsUsage: "CONTAINER",
|
||||||
Action: func(context *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
var (
|
id := context.Args().First()
|
||||||
id = context.Args().First()
|
|
||||||
ctx, cancel = appContext(context)
|
|
||||||
)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
if id == "" {
|
if id == "" {
|
||||||
return errors.New("container id must be provided")
|
return errors.New("container id must be provided")
|
||||||
}
|
}
|
||||||
client, err := newClient(context)
|
client, ctx, cancel, err := newClient(context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
container, err := client.LoadContainer(ctx, id)
|
container, err := client.LoadContainer(ctx, id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -21,15 +21,15 @@ command. As part of this process, we do the following:
|
|||||||
3. Register metadata for the image.
|
3. Register metadata for the image.
|
||||||
`,
|
`,
|
||||||
Flags: append(registryFlags, append(snapshotterFlags, labelFlag)...),
|
Flags: append(registryFlags, append(snapshotterFlags, labelFlag)...),
|
||||||
Action: func(clicontext *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
var (
|
var (
|
||||||
ref = clicontext.Args().First()
|
ref = context.Args().First()
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx, cancel := appContext(clicontext)
|
ctx, cancel := appContext(context)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
img, err := fetch(ctx, ref, clicontext)
|
img, err := fetch(ref, context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -38,7 +38,7 @@ command. As part of this process, we do the following:
|
|||||||
|
|
||||||
// TODO: Show unpack status
|
// TODO: Show unpack status
|
||||||
fmt.Printf("unpacking %s...\n", img.Target().Digest)
|
fmt.Printf("unpacking %s...\n", img.Target().Digest)
|
||||||
err = img.Unpack(ctx, clicontext.String("snapshotter"))
|
err = img.Unpack(ctx, context.String("snapshotter"))
|
||||||
if err == nil {
|
if err == nil {
|
||||||
fmt.Println("done")
|
fmt.Println("done")
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
gocontext "context"
|
||||||
"os"
|
"os"
|
||||||
"sync"
|
"sync"
|
||||||
"text/tabwriter"
|
"text/tabwriter"
|
||||||
@ -45,27 +45,23 @@ var pushCommand = cli.Command{
|
|||||||
Usage: "media type of manifest digest",
|
Usage: "media type of manifest digest",
|
||||||
Value: ocispec.MediaTypeImageManifest,
|
Value: ocispec.MediaTypeImageManifest,
|
||||||
}),
|
}),
|
||||||
Action: func(clicontext *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
var (
|
var (
|
||||||
ref = clicontext.Args().First()
|
ref = context.Args().First()
|
||||||
local = clicontext.Args().Get(1)
|
local = context.Args().Get(1)
|
||||||
desc ocispec.Descriptor
|
desc ocispec.Descriptor
|
||||||
)
|
)
|
||||||
|
client, ctx, cancel, err := newClient(context)
|
||||||
ctx, cancel := appContext(clicontext)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
client, err := newClient(clicontext)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
if manifest := clicontext.String("manifest"); manifest != "" {
|
if manifest := context.String("manifest"); manifest != "" {
|
||||||
desc.Digest, err = digest.Parse(manifest)
|
desc.Digest, err = digest.Parse(manifest)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "invalid manifest digest")
|
return errors.Wrap(err, "invalid manifest digest")
|
||||||
}
|
}
|
||||||
desc.MediaType = clicontext.String("manifest-type")
|
desc.MediaType = context.String("manifest-type")
|
||||||
} else {
|
} else {
|
||||||
if local == "" {
|
if local == "" {
|
||||||
local = ref
|
local = ref
|
||||||
@ -77,7 +73,7 @@ var pushCommand = cli.Command{
|
|||||||
desc = img.Target
|
desc = img.Target
|
||||||
}
|
}
|
||||||
|
|
||||||
resolver, err := getResolver(ctx, clicontext)
|
resolver, err := getResolver(ctx, context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -88,7 +84,7 @@ var pushCommand = cli.Command{
|
|||||||
eg.Go(func() error {
|
eg.Go(func() error {
|
||||||
log.G(ctx).WithField("image", ref).WithField("digest", desc.Digest).Debug("pushing")
|
log.G(ctx).WithField("image", ref).WithField("digest", desc.Digest).Debug("pushing")
|
||||||
|
|
||||||
jobHandler := images.HandlerFunc(func(ctx context.Context, desc ocispec.Descriptor) ([]ocispec.Descriptor, error) {
|
jobHandler := images.HandlerFunc(func(ctx gocontext.Context, desc ocispec.Descriptor) ([]ocispec.Descriptor, error) {
|
||||||
ongoing.add(remotes.MakeRefKey(ctx, desc))
|
ongoing.add(remotes.MakeRefKey(ctx, desc))
|
||||||
return nil, nil
|
return nil, nil
|
||||||
})
|
})
|
||||||
|
@ -16,21 +16,23 @@ var pushObjectCommand = cli.Command{
|
|||||||
ArgsUsage: "[flags] <remote> <object> <type>",
|
ArgsUsage: "[flags] <remote> <object> <type>",
|
||||||
Description: `Push objects by identifier to a remote.`,
|
Description: `Push objects by identifier to a remote.`,
|
||||||
Flags: registryFlags,
|
Flags: registryFlags,
|
||||||
Action: func(clicontext *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
var (
|
var (
|
||||||
ref = clicontext.Args().Get(0)
|
ref = context.Args().Get(0)
|
||||||
object = clicontext.Args().Get(1)
|
object = context.Args().Get(1)
|
||||||
media = clicontext.Args().Get(2)
|
media = context.Args().Get(2)
|
||||||
)
|
)
|
||||||
dgst, err := digest.Parse(object)
|
dgst, err := digest.Parse(object)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
client, ctx, cancel, err := newClient(context)
|
||||||
ctx, cancel := appContext(clicontext)
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
resolver, err := getResolver(ctx, clicontext)
|
resolver, err := getResolver(ctx, context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -43,10 +45,6 @@ var pushObjectCommand = cli.Command{
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
client, err := newClient(clicontext)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
cs := client.ContentStore()
|
cs := client.ContentStore()
|
||||||
|
|
||||||
info, err := cs.Info(ctx, dgst)
|
info, err := cs.Info(ctx, dgst)
|
||||||
|
@ -7,13 +7,11 @@ var taskResumeCommand = cli.Command{
|
|||||||
Usage: "resume a paused container",
|
Usage: "resume a paused container",
|
||||||
ArgsUsage: "CONTAINER",
|
ArgsUsage: "CONTAINER",
|
||||||
Action: func(context *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
ctx, cancel := appContext(context)
|
client, ctx, cancel, err := newClient(context)
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
client, err := newClient(context)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
container, err := client.LoadContainer(ctx, context.Args().First())
|
container, err := client.LoadContainer(ctx, context.Args().First())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -22,34 +22,27 @@ var rootfsUnpackCommand = cli.Command{
|
|||||||
Usage: "unpack applies layers from a manifest to a snapshot",
|
Usage: "unpack applies layers from a manifest to a snapshot",
|
||||||
ArgsUsage: "[flags] <digest>",
|
ArgsUsage: "[flags] <digest>",
|
||||||
Flags: snapshotterFlags,
|
Flags: snapshotterFlags,
|
||||||
Action: func(clicontext *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
ctx, cancel := appContext(clicontext)
|
dgst, err := digest.Parse(context.Args().First())
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
client, ctx, cancel, err := newClient(context)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
dgst, err := digest.Parse(clicontext.Args().First())
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
log.G(ctx).Debugf("unpacking layers from manifest %s", dgst.String())
|
log.G(ctx).Debugf("unpacking layers from manifest %s", dgst.String())
|
||||||
|
|
||||||
client, err := newClient(clicontext)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: Support unpack by name
|
// TODO: Support unpack by name
|
||||||
|
|
||||||
images, err := client.ListImages(ctx)
|
images, err := client.ListImages(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
var unpacked bool
|
var unpacked bool
|
||||||
for _, image := range images {
|
for _, image := range images {
|
||||||
if image.Target().Digest == dgst {
|
if image.Target().Digest == dgst {
|
||||||
fmt.Printf("unpacking %s (%s)...", dgst, image.Target().MediaType)
|
fmt.Printf("unpacking %s (%s)...", dgst, image.Target().MediaType)
|
||||||
if err := image.Unpack(ctx, clicontext.String("snapshotter")); err != nil {
|
if err := image.Unpack(ctx, context.String("snapshotter")); err != nil {
|
||||||
fmt.Println()
|
fmt.Println()
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -61,10 +54,8 @@ var rootfsUnpackCommand = cli.Command{
|
|||||||
if !unpacked {
|
if !unpacked {
|
||||||
return errors.New("manifest not found")
|
return errors.New("manifest not found")
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Get rootfs from Image
|
// TODO: Get rootfs from Image
|
||||||
//log.G(ctx).Infof("chain ID: %s", chainID.String())
|
//log.G(ctx).Infof("chain ID: %s", chainID.String())
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -105,13 +105,11 @@ var runCommand = cli.Command{
|
|||||||
var (
|
var (
|
||||||
err error
|
err error
|
||||||
|
|
||||||
ctx, cancel = appContext(context)
|
id = context.Args().Get(1)
|
||||||
id = context.Args().Get(1)
|
imageRef = context.Args().First()
|
||||||
imageRef = context.Args().First()
|
tty = context.Bool("tty")
|
||||||
tty = context.Bool("tty")
|
detach = context.Bool("detach")
|
||||||
detach = context.Bool("detach")
|
|
||||||
)
|
)
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
if imageRef == "" {
|
if imageRef == "" {
|
||||||
return errors.New("image ref must be provided")
|
return errors.New("image ref must be provided")
|
||||||
@ -119,10 +117,11 @@ var runCommand = cli.Command{
|
|||||||
if id == "" {
|
if id == "" {
|
||||||
return errors.New("container id must be provided")
|
return errors.New("container id must be provided")
|
||||||
}
|
}
|
||||||
client, err := newClient(context)
|
client, ctx, cancel, err := newClient(context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
container, err := newContainer(ctx, client, context)
|
container, err := newContainer(ctx, client, context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
gocontext "context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
@ -36,20 +36,18 @@ var listSnapshotCommand = cli.Command{
|
|||||||
Name: "list",
|
Name: "list",
|
||||||
Aliases: []string{"ls"},
|
Aliases: []string{"ls"},
|
||||||
Usage: "list snapshots",
|
Usage: "list snapshots",
|
||||||
Action: func(clicontext *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
ctx, cancel := appContext(clicontext)
|
client, ctx, cancel, err := newClient(context)
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
client, err := newClient(clicontext)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
snapshotter := client.SnapshotService(clicontext.GlobalString("snapshotter"))
|
defer cancel()
|
||||||
|
var (
|
||||||
tw := tabwriter.NewWriter(os.Stdout, 1, 8, 1, ' ', 0)
|
snapshotter = client.SnapshotService(context.GlobalString("snapshotter"))
|
||||||
|
tw = tabwriter.NewWriter(os.Stdout, 1, 8, 1, ' ', 0)
|
||||||
|
)
|
||||||
fmt.Fprintln(tw, "KEY\tPARENT\tKIND\t")
|
fmt.Fprintln(tw, "KEY\tPARENT\tKIND\t")
|
||||||
|
if err := snapshotter.Walk(ctx, func(ctx gocontext.Context, info snapshot.Info) error {
|
||||||
if err := snapshotter.Walk(ctx, func(ctx context.Context, info snapshot.Info) error {
|
|
||||||
fmt.Fprintf(tw, "%v\t%v\t%v\t\n",
|
fmt.Fprintf(tw, "%v\t%v\t%v\t\n",
|
||||||
info.Name,
|
info.Name,
|
||||||
info.Parent,
|
info.Parent,
|
||||||
@ -73,12 +71,9 @@ var usageSnapshotCommand = cli.Command{
|
|||||||
Usage: "display size in bytes",
|
Usage: "display size in bytes",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Action: func(clicontext *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
ctx, cancel := appContext(clicontext)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
var displaySize func(int64) string
|
var displaySize func(int64) string
|
||||||
if clicontext.Bool("b") {
|
if context.Bool("b") {
|
||||||
displaySize = func(s int64) string {
|
displaySize = func(s int64) string {
|
||||||
return fmt.Sprintf("%d", s)
|
return fmt.Sprintf("%d", s)
|
||||||
}
|
}
|
||||||
@ -87,18 +82,18 @@ var usageSnapshotCommand = cli.Command{
|
|||||||
return progress.Bytes(s).String()
|
return progress.Bytes(s).String()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
client, ctx, cancel, err := newClient(context)
|
||||||
client, err := newClient(clicontext)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
snapshotter := client.SnapshotService(clicontext.GlobalString("snapshotter"))
|
defer cancel()
|
||||||
|
var (
|
||||||
tw := tabwriter.NewWriter(os.Stdout, 1, 8, 1, ' ', 0)
|
snapshotter = client.SnapshotService(context.GlobalString("snapshotter"))
|
||||||
|
tw = tabwriter.NewWriter(os.Stdout, 1, 8, 1, ' ', 0)
|
||||||
|
)
|
||||||
fmt.Fprintln(tw, "KEY\tSIZE\tINODES\t")
|
fmt.Fprintln(tw, "KEY\tSIZE\tINODES\t")
|
||||||
|
if context.NArg() == 0 {
|
||||||
if clicontext.NArg() == 0 {
|
if err := snapshotter.Walk(ctx, func(ctx gocontext.Context, info snapshot.Info) error {
|
||||||
if err := snapshotter.Walk(ctx, func(ctx context.Context, info snapshot.Info) error {
|
|
||||||
usage, err := snapshotter.Usage(ctx, info.Name)
|
usage, err := snapshotter.Usage(ctx, info.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -109,7 +104,7 @@ var usageSnapshotCommand = cli.Command{
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for _, id := range clicontext.Args() {
|
for _, id := range context.Args() {
|
||||||
usage, err := snapshotter.Usage(ctx, id)
|
usage, err := snapshotter.Usage(ctx, id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -127,17 +122,14 @@ var removeSnapshotCommand = cli.Command{
|
|||||||
Aliases: []string{"rm"},
|
Aliases: []string{"rm"},
|
||||||
ArgsUsage: "<key> [<key>, ...]",
|
ArgsUsage: "<key> [<key>, ...]",
|
||||||
Usage: "remove snapshots",
|
Usage: "remove snapshots",
|
||||||
Action: func(clicontext *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
ctx, cancel := appContext(clicontext)
|
client, ctx, cancel, err := newClient(context)
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
client, err := newClient(clicontext)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
snapshotter := client.SnapshotService(clicontext.GlobalString("snapshotter"))
|
defer cancel()
|
||||||
|
snapshotter := client.SnapshotService(context.GlobalString("snapshotter"))
|
||||||
for _, key := range clicontext.Args() {
|
for _, key := range context.Args() {
|
||||||
err = snapshotter.Remove(ctx, key)
|
err = snapshotter.Remove(ctx, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrapf(err, "failed to remove %q", key)
|
return errors.Wrapf(err, "failed to remove %q", key)
|
||||||
@ -158,24 +150,22 @@ var prepareSnapshotCommand = cli.Command{
|
|||||||
Usage: "mount target path, will print mount, if provided",
|
Usage: "mount target path, will print mount, if provided",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Action: func(clicontext *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
ctx, cancel := appContext(clicontext)
|
if context.NArg() != 2 {
|
||||||
defer cancel()
|
return cli.ShowSubcommandHelp(context)
|
||||||
|
|
||||||
if clicontext.NArg() != 2 {
|
|
||||||
return cli.ShowSubcommandHelp(clicontext)
|
|
||||||
}
|
}
|
||||||
|
var (
|
||||||
target := clicontext.String("target")
|
target = context.String("target")
|
||||||
key := clicontext.Args().Get(0)
|
key = context.Args().Get(0)
|
||||||
parent := clicontext.Args().Get(1)
|
parent = context.Args().Get(1)
|
||||||
|
)
|
||||||
client, err := newClient(clicontext)
|
client, ctx, cancel, err := newClient(context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
snapshotter := client.SnapshotService(clicontext.GlobalString("snapshotter"))
|
defer cancel()
|
||||||
|
|
||||||
|
snapshotter := client.SnapshotService(context.GlobalString("snapshotter"))
|
||||||
mounts, err := snapshotter.Prepare(ctx, key, parent)
|
mounts, err := snapshotter.Prepare(ctx, key, parent)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -199,24 +189,22 @@ var viewSnapshotCommand = cli.Command{
|
|||||||
Usage: "mount target path, will print mount, if provided",
|
Usage: "mount target path, will print mount, if provided",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Action: func(clicontext *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
ctx, cancel := appContext(clicontext)
|
if context.NArg() != 2 {
|
||||||
defer cancel()
|
return cli.ShowSubcommandHelp(context)
|
||||||
|
|
||||||
if clicontext.NArg() != 2 {
|
|
||||||
return cli.ShowSubcommandHelp(clicontext)
|
|
||||||
}
|
}
|
||||||
|
var (
|
||||||
target := clicontext.String("target")
|
target = context.String("target")
|
||||||
key := clicontext.Args().Get(0)
|
key = context.Args().Get(0)
|
||||||
parent := clicontext.Args().Get(1)
|
parent = context.Args().Get(1)
|
||||||
|
)
|
||||||
client, err := newClient(clicontext)
|
client, ctx, cancel, err := newClient(context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
snapshotter := client.SnapshotService(clicontext.GlobalString("snapshotter"))
|
defer cancel()
|
||||||
|
|
||||||
|
snapshotter := client.SnapshotService(context.GlobalString("snapshotter"))
|
||||||
mounts, err := snapshotter.View(ctx, key, parent)
|
mounts, err := snapshotter.View(ctx, key, parent)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -235,22 +223,20 @@ var mountSnapshotCommand = cli.Command{
|
|||||||
Aliases: []string{"m", "mount"},
|
Aliases: []string{"m", "mount"},
|
||||||
Usage: "mount gets mount commands for the snapshots",
|
Usage: "mount gets mount commands for the snapshots",
|
||||||
ArgsUsage: "[flags] <target> <key>",
|
ArgsUsage: "[flags] <target> <key>",
|
||||||
Action: func(clicontext *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
ctx, cancel := appContext(clicontext)
|
if context.NArg() != 2 {
|
||||||
defer cancel()
|
return cli.ShowSubcommandHelp(context)
|
||||||
|
|
||||||
if clicontext.NArg() != 2 {
|
|
||||||
return cli.ShowSubcommandHelp(clicontext)
|
|
||||||
}
|
}
|
||||||
|
var (
|
||||||
target := clicontext.Args().Get(0)
|
target = context.Args().Get(0)
|
||||||
key := clicontext.Args().Get(1)
|
key = context.Args().Get(1)
|
||||||
client, err := newClient(clicontext)
|
)
|
||||||
|
client, ctx, cancel, err := newClient(context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
snapshotter := client.SnapshotService(clicontext.GlobalString("snapshotter"))
|
defer cancel()
|
||||||
|
snapshotter := client.SnapshotService(context.GlobalString("snapshotter"))
|
||||||
mounts, err := snapshotter.Mounts(ctx, key)
|
mounts, err := snapshotter.Mounts(ctx, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -266,23 +252,20 @@ var commitSnapshotCommand = cli.Command{
|
|||||||
Name: "commit",
|
Name: "commit",
|
||||||
Usage: "commit an active snapshot into the provided name",
|
Usage: "commit an active snapshot into the provided name",
|
||||||
ArgsUsage: "[flags] <key> <active>",
|
ArgsUsage: "[flags] <key> <active>",
|
||||||
Action: func(clicontext *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
ctx, cancel := appContext(clicontext)
|
if context.NArg() != 2 {
|
||||||
defer cancel()
|
return cli.ShowSubcommandHelp(context)
|
||||||
|
|
||||||
if clicontext.NArg() != 2 {
|
|
||||||
return cli.ShowSubcommandHelp(clicontext)
|
|
||||||
}
|
}
|
||||||
|
var (
|
||||||
key := clicontext.Args().Get(0)
|
key = context.Args().Get(0)
|
||||||
active := clicontext.Args().Get(1)
|
active = context.Args().Get(1)
|
||||||
|
)
|
||||||
client, err := newClient(clicontext)
|
client, ctx, cancel, err := newClient(context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
snapshotter := client.SnapshotService(clicontext.GlobalString("snapshotter"))
|
defer cancel()
|
||||||
|
snapshotter := client.SnapshotService(context.GlobalString("snapshotter"))
|
||||||
return snapshotter.Commit(ctx, key, active)
|
return snapshotter.Commit(ctx, key, active)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -290,19 +273,18 @@ var commitSnapshotCommand = cli.Command{
|
|||||||
var treeSnapshotCommand = cli.Command{
|
var treeSnapshotCommand = cli.Command{
|
||||||
Name: "tree",
|
Name: "tree",
|
||||||
Usage: "display tree view of snapshot branches",
|
Usage: "display tree view of snapshot branches",
|
||||||
Action: func(clicontext *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
ctx, cancel := appContext(clicontext)
|
client, ctx, cancel, err := newClient(context)
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
client, err := newClient(clicontext)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
snapshotter := client.SnapshotService(clicontext.GlobalString("snapshotter"))
|
defer cancel()
|
||||||
|
var (
|
||||||
|
snapshotter = client.SnapshotService(context.GlobalString("snapshotter"))
|
||||||
|
tree = make(map[string]*snapshotTreeNode)
|
||||||
|
)
|
||||||
|
|
||||||
tree := make(map[string]*snapshotTreeNode)
|
if err := snapshotter.Walk(ctx, func(ctx gocontext.Context, info snapshot.Info) error {
|
||||||
|
|
||||||
if err := snapshotter.Walk(ctx, func(ctx context.Context, info snapshot.Info) error {
|
|
||||||
// Get or create node and add node details
|
// Get or create node and add node details
|
||||||
node := getOrCreateTreeNode(info.Name, tree)
|
node := getOrCreateTreeNode(info.Name, tree)
|
||||||
if info.Parent != "" {
|
if info.Parent != "" {
|
||||||
@ -326,22 +308,18 @@ var infoSnapshotCommand = cli.Command{
|
|||||||
Name: "info",
|
Name: "info",
|
||||||
Usage: "get info about a snapshot",
|
Usage: "get info about a snapshot",
|
||||||
ArgsUsage: "<key>",
|
ArgsUsage: "<key>",
|
||||||
Action: func(clicontext *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
ctx, cancel := appContext(clicontext)
|
if context.NArg() != 1 {
|
||||||
defer cancel()
|
return cli.ShowSubcommandHelp(context)
|
||||||
|
|
||||||
if clicontext.NArg() != 1 {
|
|
||||||
return cli.ShowSubcommandHelp(clicontext)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
key := clicontext.Args().Get(0)
|
key := context.Args().Get(0)
|
||||||
|
client, ctx, cancel, err := newClient(context)
|
||||||
client, err := newClient(clicontext)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
snapshotter := client.SnapshotService(clicontext.GlobalString("snapshotter"))
|
defer cancel()
|
||||||
|
snapshotter := client.SnapshotService(context.GlobalString("snapshotter"))
|
||||||
info, err := snapshotter.Stat(ctx, key)
|
info, err := snapshotter.Stat(ctx, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -359,18 +337,15 @@ var labelSnapshotCommand = cli.Command{
|
|||||||
ArgsUsage: "[flags] <name> [<label>=<value> ...]",
|
ArgsUsage: "[flags] <name> [<label>=<value> ...]",
|
||||||
Description: `Labels snapshots in the snapshotter`,
|
Description: `Labels snapshots in the snapshotter`,
|
||||||
Flags: []cli.Flag{},
|
Flags: []cli.Flag{},
|
||||||
Action: func(clicontext *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
var (
|
key, labels := objectWithLabelArgs(context)
|
||||||
key, labels = objectWithLabelArgs(clicontext)
|
client, ctx, cancel, err := newClient(context)
|
||||||
)
|
|
||||||
ctx, cancel := appContext(clicontext)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
client, err := newClient(clicontext)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
snapshotter := client.SnapshotService(clicontext.GlobalString("snapshotter"))
|
defer cancel()
|
||||||
|
|
||||||
|
snapshotter := client.SnapshotService(context.GlobalString("snapshotter"))
|
||||||
|
|
||||||
info := snapshot.Info{
|
info := snapshot.Info{
|
||||||
Name: key,
|
Name: key,
|
||||||
|
@ -20,20 +20,16 @@ var taskStartCommand = cli.Command{
|
|||||||
Action: func(context *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
var (
|
var (
|
||||||
err error
|
err error
|
||||||
|
id = context.Args().Get(0)
|
||||||
ctx, cancel = appContext(context)
|
|
||||||
id = context.Args().Get(0)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
if id == "" {
|
if id == "" {
|
||||||
return errors.New("container id must be provided")
|
return errors.New("container id must be provided")
|
||||||
}
|
}
|
||||||
client, err := newClient(context)
|
client, ctx, cancel, err := newClient(context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
container, err := client.LoadContainer(ctx, id)
|
container, err := client.LoadContainer(ctx, id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -31,16 +31,12 @@ var tasksCommand = cli.Command{
|
|||||||
taskDeleteCommand,
|
taskDeleteCommand,
|
||||||
},
|
},
|
||||||
Action: func(context *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
var (
|
quiet := context.Bool("quiet")
|
||||||
quiet = context.Bool("quiet")
|
client, ctx, cancel, err := newClient(context)
|
||||||
ctx, cancel = appContext(context)
|
|
||||||
)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
client, err := newClient(context)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
s := client.TaskService()
|
s := client.TaskService()
|
||||||
response, err := s.List(ctx, &tasks.ListTasksRequest{})
|
response, err := s.List(ctx, &tasks.ListTasksRequest{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -7,12 +7,11 @@ var taskDeleteCommand = cli.Command{
|
|||||||
Usage: "delete a task",
|
Usage: "delete a task",
|
||||||
ArgsUsage: "CONTAINER",
|
ArgsUsage: "CONTAINER",
|
||||||
Action: func(context *cli.Context) error {
|
Action: func(context *cli.Context) error {
|
||||||
ctx, cancel := appContext(context)
|
client, ctx, cancel, err := newClient(context)
|
||||||
defer cancel()
|
|
||||||
client, err := newClient(context)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer cancel()
|
||||||
container, err := client.LoadContainer(ctx, context.Args().First())
|
container, err := client.LoadContainer(ctx, context.Args().First())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -90,8 +90,13 @@ func appContext(clicontext *cli.Context) (gocontext.Context, gocontext.CancelFun
|
|||||||
return ctx, cancel
|
return ctx, cancel
|
||||||
}
|
}
|
||||||
|
|
||||||
func newClient(context *cli.Context) (*containerd.Client, error) {
|
func newClient(context *cli.Context) (*containerd.Client, gocontext.Context, gocontext.CancelFunc, error) {
|
||||||
return containerd.New(context.GlobalString("address"))
|
client, err := containerd.New(context.GlobalString("address"))
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, nil, err
|
||||||
|
}
|
||||||
|
ctx, cancel := appContext(context)
|
||||||
|
return client, ctx, cancel, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func passwordPrompt() (string, error) {
|
func passwordPrompt() (string, error) {
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
gocontext "context"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
@ -20,11 +19,12 @@ var versionCommand = cli.Command{
|
|||||||
fmt.Printf(" Version: %s\n", version.Version)
|
fmt.Printf(" Version: %s\n", version.Version)
|
||||||
fmt.Printf(" Revision: %s\n", version.Revision)
|
fmt.Printf(" Revision: %s\n", version.Revision)
|
||||||
fmt.Println("")
|
fmt.Println("")
|
||||||
client, err := newClient(context)
|
client, ctx, cancel, err := newClient(context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
v, err := client.Version(gocontext.Background())
|
defer cancel()
|
||||||
|
v, err := client.Version(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user