ctr use client's underlying service
Signed-off-by: Tao Qingyun <845767657@qq.com>
This commit is contained in:
parent
5b6564d89d
commit
61121024c1
@ -25,6 +25,7 @@ import (
|
|||||||
"github.com/containerd/containerd/diff"
|
"github.com/containerd/containerd/diff"
|
||||||
"github.com/containerd/containerd/errdefs"
|
"github.com/containerd/containerd/errdefs"
|
||||||
"github.com/containerd/containerd/images"
|
"github.com/containerd/containerd/images"
|
||||||
|
"github.com/containerd/containerd/namespaces"
|
||||||
"github.com/containerd/containerd/platforms"
|
"github.com/containerd/containerd/platforms"
|
||||||
"github.com/containerd/containerd/plugin"
|
"github.com/containerd/containerd/plugin"
|
||||||
"github.com/containerd/containerd/reference"
|
"github.com/containerd/containerd/reference"
|
||||||
@ -34,6 +35,7 @@ import (
|
|||||||
contentservice "github.com/containerd/containerd/services/content"
|
contentservice "github.com/containerd/containerd/services/content"
|
||||||
diffservice "github.com/containerd/containerd/services/diff"
|
diffservice "github.com/containerd/containerd/services/diff"
|
||||||
imagesservice "github.com/containerd/containerd/services/images"
|
imagesservice "github.com/containerd/containerd/services/images"
|
||||||
|
namespacesservice "github.com/containerd/containerd/services/namespaces"
|
||||||
snapshotservice "github.com/containerd/containerd/services/snapshot"
|
snapshotservice "github.com/containerd/containerd/services/snapshot"
|
||||||
"github.com/containerd/containerd/snapshot"
|
"github.com/containerd/containerd/snapshot"
|
||||||
"github.com/containerd/typeurl"
|
"github.com/containerd/typeurl"
|
||||||
@ -414,9 +416,9 @@ func (c *Client) Close() error {
|
|||||||
return c.conn.Close()
|
return c.conn.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
// NamespaceService returns the underlying NamespacesClient
|
// NamespaceService returns the underlying Namespaces Store
|
||||||
func (c *Client) NamespaceService() namespacesapi.NamespacesClient {
|
func (c *Client) NamespaceService() namespaces.Store {
|
||||||
return namespacesapi.NewNamespacesClient(c.conn)
|
return namespacesservice.NewStoreFromClient(namespacesapi.NewNamespacesClient(c.conn))
|
||||||
}
|
}
|
||||||
|
|
||||||
// ContainerService returns the underlying container Store
|
// ContainerService returns the underlying container Store
|
||||||
|
@ -49,10 +49,11 @@ var (
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
cs, err := getContentStore(context)
|
client, err := newClient(context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
cs := client.ContentStore()
|
||||||
|
|
||||||
ra, err := cs.ReaderAt(ctx, dgst)
|
ra, err := cs.ReaderAt(ctx, dgst)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -98,10 +99,11 @@ var (
|
|||||||
return errors.New("must specify a transaction reference")
|
return errors.New("must specify a transaction reference")
|
||||||
}
|
}
|
||||||
|
|
||||||
cs, err := getContentStore(context)
|
client, err := newClient(context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
cs := client.ContentStore()
|
||||||
|
|
||||||
// TODO(stevvooe): Allow ingest to be reentrant. Currently, we expect
|
// TODO(stevvooe): Allow ingest to be reentrant. Currently, we expect
|
||||||
// all data to be written in a single invocation. Allow multiple writes
|
// all data to be written in a single invocation. Allow multiple writes
|
||||||
@ -135,10 +137,11 @@ var (
|
|||||||
ctx, cancel := appContext(context)
|
ctx, cancel := appContext(context)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
cs, err := getContentStore(context)
|
client, err := newClient(context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
cs := client.ContentStore()
|
||||||
|
|
||||||
active, err := cs.ListStatuses(ctx, match)
|
active, err := cs.ListStatuses(ctx, match)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -178,10 +181,11 @@ var (
|
|||||||
ctx, cancel := appContext(context)
|
ctx, cancel := appContext(context)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
cs, err := getContentStore(context)
|
client, err := newClient(context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
cs := client.ContentStore()
|
||||||
|
|
||||||
var walkFn content.WalkFunc
|
var walkFn content.WalkFunc
|
||||||
if quiet {
|
if quiet {
|
||||||
@ -231,10 +235,11 @@ var (
|
|||||||
ctx, cancel := appContext(context)
|
ctx, cancel := appContext(context)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
cs, err := getContentStore(context)
|
client, err := newClient(context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
cs := client.ContentStore()
|
||||||
|
|
||||||
dgst, err := digest.Parse(object)
|
dgst, err := digest.Parse(object)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -306,10 +311,11 @@ var (
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
cs, err := getContentStore(context)
|
client, err := newClient(context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
cs := client.ContentStore()
|
||||||
|
|
||||||
ra, err := cs.ReaderAt(ctx, dgst)
|
ra, err := cs.ReaderAt(ctx, dgst)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -357,10 +363,11 @@ var (
|
|||||||
ctx, cancel := appContext(context)
|
ctx, cancel := appContext(context)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
cs, err := getContentStore(context)
|
client, err := newClient(context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
cs := client.ContentStore()
|
||||||
|
|
||||||
for _, arg := range args {
|
for _, arg := range args {
|
||||||
dgst, err := digest.Parse(arg)
|
dgst, err := digest.Parse(arg)
|
||||||
|
@ -13,12 +13,14 @@ 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 {
|
||||||
eventsClient, err := getEventsService(context)
|
ctx, cancel := appContext(context)
|
||||||
|
defer cancel()
|
||||||
|
|
||||||
|
client, err := newClient(context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
ctx, cancel := appContext(context)
|
eventsClient := client.EventService()
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
events, err := eventsClient.Subscribe(ctx, &eventsapi.SubscribeRequest{
|
events, err := eventsClient.Subscribe(ctx, &eventsapi.SubscribeRequest{
|
||||||
Filters: context.Args(),
|
Filters: context.Args(),
|
||||||
|
@ -40,10 +40,11 @@ var namespacesCreateCommand = cli.Command{
|
|||||||
return errors.New("please specify a namespace")
|
return errors.New("please specify a namespace")
|
||||||
}
|
}
|
||||||
|
|
||||||
namespaces, err := getNamespacesService(clicontext)
|
client, err := newClient(clicontext)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
namespaces := client.NamespaceService()
|
||||||
return namespaces.Create(ctx, namespace, labels)
|
return namespaces.Create(ctx, namespace, labels)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -60,10 +61,11 @@ var namespacesSetLabelsCommand = cli.Command{
|
|||||||
namespace, labels = objectWithLabelArgs(clicontext)
|
namespace, labels = objectWithLabelArgs(clicontext)
|
||||||
)
|
)
|
||||||
|
|
||||||
namespaces, err := getNamespacesService(clicontext)
|
client, err := newClient(clicontext)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
namespaces := client.NamespaceService()
|
||||||
|
|
||||||
if namespace == "" {
|
if namespace == "" {
|
||||||
return errors.New("please specify a namespace")
|
return errors.New("please specify a namespace")
|
||||||
@ -97,10 +99,11 @@ var namespacesListCommand = cli.Command{
|
|||||||
quiet = clicontext.Bool("quiet")
|
quiet = clicontext.Bool("quiet")
|
||||||
)
|
)
|
||||||
|
|
||||||
namespaces, err := getNamespacesService(clicontext)
|
client, err := newClient(clicontext)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
namespaces := client.NamespaceService()
|
||||||
|
|
||||||
nss, err := namespaces.List(ctx)
|
nss, err := namespaces.List(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -150,10 +153,11 @@ var namespacesRemoveCommand = cli.Command{
|
|||||||
exitErr error
|
exitErr error
|
||||||
)
|
)
|
||||||
|
|
||||||
namespaces, err := getNamespacesService(clicontext)
|
client, err := newClient(clicontext)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
namespaces := client.NamespaceService()
|
||||||
|
|
||||||
for _, target := range clicontext.Args() {
|
for _, target := range clicontext.Args() {
|
||||||
if err := namespaces.Delete(ctx, target); err != nil {
|
if err := namespaces.Delete(ctx, target); err != nil {
|
||||||
|
@ -43,10 +43,11 @@ var pushObjectCommand = cli.Command{
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
cs, err := getContentStore(clicontext)
|
client, err := newClient(clicontext)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
cs := client.ContentStore()
|
||||||
|
|
||||||
info, err := cs.Info(ctx, dgst)
|
info, err := cs.Info(ctx, dgst)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -40,10 +40,11 @@ var listSnapshotCommand = cli.Command{
|
|||||||
ctx, cancel := appContext(clicontext)
|
ctx, cancel := appContext(clicontext)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
snapshotter, err := getSnapshotter(clicontext)
|
client, err := newClient(clicontext)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
snapshotter := client.SnapshotService(clicontext.GlobalString("snapshotter"))
|
||||||
|
|
||||||
tw := tabwriter.NewWriter(os.Stdout, 1, 8, 1, ' ', 0)
|
tw := tabwriter.NewWriter(os.Stdout, 1, 8, 1, ' ', 0)
|
||||||
fmt.Fprintln(tw, "KEY\tPARENT\tKIND\t")
|
fmt.Fprintln(tw, "KEY\tPARENT\tKIND\t")
|
||||||
@ -87,10 +88,11 @@ var usageSnapshotCommand = cli.Command{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
snapshotter, err := getSnapshotter(clicontext)
|
client, err := newClient(clicontext)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
snapshotter := client.SnapshotService(clicontext.GlobalString("snapshotter"))
|
||||||
|
|
||||||
tw := tabwriter.NewWriter(os.Stdout, 1, 8, 1, ' ', 0)
|
tw := tabwriter.NewWriter(os.Stdout, 1, 8, 1, ' ', 0)
|
||||||
fmt.Fprintln(tw, "KEY\tSIZE\tINODES\t")
|
fmt.Fprintln(tw, "KEY\tSIZE\tINODES\t")
|
||||||
@ -129,10 +131,11 @@ var removeSnapshotCommand = cli.Command{
|
|||||||
ctx, cancel := appContext(clicontext)
|
ctx, cancel := appContext(clicontext)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
snapshotter, err := getSnapshotter(clicontext)
|
client, err := newClient(clicontext)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
snapshotter := client.SnapshotService(clicontext.GlobalString("snapshotter"))
|
||||||
|
|
||||||
for _, key := range clicontext.Args() {
|
for _, key := range clicontext.Args() {
|
||||||
err = snapshotter.Remove(ctx, key)
|
err = snapshotter.Remove(ctx, key)
|
||||||
@ -167,10 +170,11 @@ var prepareSnapshotCommand = cli.Command{
|
|||||||
key := clicontext.Args().Get(0)
|
key := clicontext.Args().Get(0)
|
||||||
parent := clicontext.Args().Get(1)
|
parent := clicontext.Args().Get(1)
|
||||||
|
|
||||||
snapshotter, err := getSnapshotter(clicontext)
|
client, err := newClient(clicontext)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
snapshotter := client.SnapshotService(clicontext.GlobalString("snapshotter"))
|
||||||
|
|
||||||
mounts, err := snapshotter.Prepare(ctx, key, parent)
|
mounts, err := snapshotter.Prepare(ctx, key, parent)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -207,10 +211,11 @@ var viewSnapshotCommand = cli.Command{
|
|||||||
key := clicontext.Args().Get(0)
|
key := clicontext.Args().Get(0)
|
||||||
parent := clicontext.Args().Get(1)
|
parent := clicontext.Args().Get(1)
|
||||||
|
|
||||||
snapshotter, err := getSnapshotter(clicontext)
|
client, err := newClient(clicontext)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
snapshotter := client.SnapshotService(clicontext.GlobalString("snapshotter"))
|
||||||
|
|
||||||
mounts, err := snapshotter.View(ctx, key, parent)
|
mounts, err := snapshotter.View(ctx, key, parent)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -240,10 +245,11 @@ var mountSnapshotCommand = cli.Command{
|
|||||||
|
|
||||||
target := clicontext.Args().Get(0)
|
target := clicontext.Args().Get(0)
|
||||||
key := clicontext.Args().Get(1)
|
key := clicontext.Args().Get(1)
|
||||||
snapshotter, err := getSnapshotter(clicontext)
|
client, err := newClient(clicontext)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
snapshotter := client.SnapshotService(clicontext.GlobalString("snapshotter"))
|
||||||
|
|
||||||
mounts, err := snapshotter.Mounts(ctx, key)
|
mounts, err := snapshotter.Mounts(ctx, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -271,10 +277,11 @@ var commitSnapshotCommand = cli.Command{
|
|||||||
key := clicontext.Args().Get(0)
|
key := clicontext.Args().Get(0)
|
||||||
active := clicontext.Args().Get(1)
|
active := clicontext.Args().Get(1)
|
||||||
|
|
||||||
snapshotter, err := getSnapshotter(clicontext)
|
client, err := newClient(clicontext)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
snapshotter := client.SnapshotService(clicontext.GlobalString("snapshotter"))
|
||||||
|
|
||||||
return snapshotter.Commit(ctx, key, active)
|
return snapshotter.Commit(ctx, key, active)
|
||||||
},
|
},
|
||||||
@ -287,10 +294,11 @@ var treeSnapshotCommand = cli.Command{
|
|||||||
ctx, cancel := appContext(clicontext)
|
ctx, cancel := appContext(clicontext)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
snapshotter, err := getSnapshotter(clicontext)
|
client, err := newClient(clicontext)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
snapshotter := client.SnapshotService(clicontext.GlobalString("snapshotter"))
|
||||||
|
|
||||||
tree := make(map[string]*snapshotTreeNode)
|
tree := make(map[string]*snapshotTreeNode)
|
||||||
|
|
||||||
@ -328,10 +336,11 @@ var infoSnapshotCommand = cli.Command{
|
|||||||
|
|
||||||
key := clicontext.Args().Get(0)
|
key := clicontext.Args().Get(0)
|
||||||
|
|
||||||
snapshotter, err := getSnapshotter(clicontext)
|
client, err := newClient(clicontext)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
snapshotter := client.SnapshotService(clicontext.GlobalString("snapshotter"))
|
||||||
|
|
||||||
info, err := snapshotter.Stat(ctx, key)
|
info, err := snapshotter.Stat(ctx, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -357,10 +366,11 @@ var labelSnapshotCommand = cli.Command{
|
|||||||
ctx, cancel := appContext(clicontext)
|
ctx, cancel := appContext(clicontext)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
snapshotter, err := getSnapshotter(clicontext)
|
client, err := newClient(clicontext)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
snapshotter := client.SnapshotService(clicontext.GlobalString("snapshotter"))
|
||||||
|
|
||||||
info := snapshot.Info{
|
info := snapshot.Info{
|
||||||
Name: key,
|
Name: key,
|
||||||
|
@ -18,35 +18,18 @@ import (
|
|||||||
|
|
||||||
"github.com/containerd/console"
|
"github.com/containerd/console"
|
||||||
"github.com/containerd/containerd"
|
"github.com/containerd/containerd"
|
||||||
containersapi "github.com/containerd/containerd/api/services/containers/v1"
|
|
||||||
contentapi "github.com/containerd/containerd/api/services/content/v1"
|
|
||||||
diffapi "github.com/containerd/containerd/api/services/diff/v1"
|
|
||||||
"github.com/containerd/containerd/api/services/events/v1"
|
|
||||||
imagesapi "github.com/containerd/containerd/api/services/images/v1"
|
|
||||||
namespacesapi "github.com/containerd/containerd/api/services/namespaces/v1"
|
|
||||||
snapshotapi "github.com/containerd/containerd/api/services/snapshot/v1"
|
|
||||||
"github.com/containerd/containerd/api/services/tasks/v1"
|
|
||||||
versionservice "github.com/containerd/containerd/api/services/version/v1"
|
|
||||||
"github.com/containerd/containerd/content"
|
"github.com/containerd/containerd/content"
|
||||||
"github.com/containerd/containerd/diff"
|
|
||||||
"github.com/containerd/containerd/images"
|
"github.com/containerd/containerd/images"
|
||||||
"github.com/containerd/containerd/namespaces"
|
"github.com/containerd/containerd/namespaces"
|
||||||
"github.com/containerd/containerd/platforms"
|
"github.com/containerd/containerd/platforms"
|
||||||
"github.com/containerd/containerd/remotes"
|
"github.com/containerd/containerd/remotes"
|
||||||
"github.com/containerd/containerd/remotes/docker"
|
"github.com/containerd/containerd/remotes/docker"
|
||||||
"github.com/containerd/containerd/rootfs"
|
"github.com/containerd/containerd/rootfs"
|
||||||
contentservice "github.com/containerd/containerd/services/content"
|
|
||||||
diffservice "github.com/containerd/containerd/services/diff"
|
|
||||||
imagesservice "github.com/containerd/containerd/services/images"
|
|
||||||
namespacesservice "github.com/containerd/containerd/services/namespaces"
|
|
||||||
snapshotservice "github.com/containerd/containerd/services/snapshot"
|
|
||||||
"github.com/containerd/containerd/snapshot"
|
|
||||||
ocispec "github.com/opencontainers/image-spec/specs-go/v1"
|
ocispec "github.com/opencontainers/image-spec/specs-go/v1"
|
||||||
specs "github.com/opencontainers/runtime-spec/specs-go"
|
specs "github.com/opencontainers/runtime-spec/specs-go"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
"github.com/urfave/cli"
|
"github.com/urfave/cli"
|
||||||
"google.golang.org/grpc"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -83,8 +66,6 @@ var (
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
var grpcConn *grpc.ClientConn
|
|
||||||
|
|
||||||
// appContext returns the context for a command. Should only be called once per
|
// appContext returns the context for a command. Should only be called once per
|
||||||
// command, near the start.
|
// command, near the start.
|
||||||
//
|
//
|
||||||
@ -109,83 +90,10 @@ func appContext(clicontext *cli.Context) (gocontext.Context, gocontext.CancelFun
|
|||||||
return ctx, cancel
|
return ctx, cancel
|
||||||
}
|
}
|
||||||
|
|
||||||
func getNamespacesService(clicontext *cli.Context) (namespaces.Store, error) {
|
|
||||||
conn, err := getGRPCConnection(clicontext)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return namespacesservice.NewStoreFromClient(namespacesapi.NewNamespacesClient(conn)), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func newClient(context *cli.Context) (*containerd.Client, error) {
|
func newClient(context *cli.Context) (*containerd.Client, error) {
|
||||||
return containerd.New(context.GlobalString("address"))
|
return containerd.New(context.GlobalString("address"))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getContainersService(context *cli.Context) (containersapi.ContainersClient, error) {
|
|
||||||
conn, err := getGRPCConnection(context)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return containersapi.NewContainersClient(conn), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func getTasksService(context *cli.Context) (tasks.TasksClient, error) {
|
|
||||||
conn, err := getGRPCConnection(context)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return tasks.NewTasksClient(conn), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func getEventsService(context *cli.Context) (events.EventsClient, error) {
|
|
||||||
conn, err := getGRPCConnection(context)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return events.NewEventsClient(conn), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func getContentStore(context *cli.Context) (content.Store, error) {
|
|
||||||
conn, err := getGRPCConnection(context)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return contentservice.NewStoreFromClient(contentapi.NewContentClient(conn)), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func getSnapshotter(context *cli.Context) (snapshot.Snapshotter, error) {
|
|
||||||
conn, err := getGRPCConnection(context)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return snapshotservice.NewSnapshotterFromClient(snapshotapi.NewSnapshotsClient(conn), context.GlobalString("snapshotter")), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func getImageStore(clicontext *cli.Context) (images.Store, error) {
|
|
||||||
conn, err := getGRPCConnection(clicontext)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return imagesservice.NewStoreFromClient(imagesapi.NewImagesClient(conn)), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func getDiffService(context *cli.Context) (diff.Differ, error) {
|
|
||||||
conn, err := getGRPCConnection(context)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return diffservice.NewDiffServiceFromClient(diffapi.NewDiffClient(conn)), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func getVersionService(context *cli.Context) (versionservice.VersionClient, error) {
|
|
||||||
conn, err := getGRPCConnection(context)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return versionservice.NewVersionClient(conn), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func passwordPrompt() (string, error) {
|
func passwordPrompt() (string, error) {
|
||||||
c := console.Current()
|
c := console.Current()
|
||||||
defer c.Reset()
|
defer c.Reset()
|
||||||
|
@ -4,18 +4,12 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
gocontext "context"
|
gocontext "context"
|
||||||
"fmt"
|
|
||||||
"io"
|
"io"
|
||||||
"net"
|
|
||||||
"os"
|
"os"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/containerd/fifo"
|
"github.com/containerd/fifo"
|
||||||
"github.com/pkg/errors"
|
|
||||||
"github.com/urfave/cli"
|
|
||||||
"golang.org/x/sys/unix"
|
"golang.org/x/sys/unix"
|
||||||
"google.golang.org/grpc"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func prepareStdio(stdin, stdout, stderr string, console bool) (wg *sync.WaitGroup, err error) {
|
func prepareStdio(stdin, stdout, stderr string, console bool) (wg *sync.WaitGroup, err error) {
|
||||||
@ -72,25 +66,3 @@ func prepareStdio(stdin, stdout, stderr string, console bool) (wg *sync.WaitGrou
|
|||||||
|
|
||||||
return wg, nil
|
return wg, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func getGRPCConnection(context *cli.Context) (*grpc.ClientConn, error) {
|
|
||||||
if grpcConn != nil {
|
|
||||||
return grpcConn, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
bindSocket := context.GlobalString("address")
|
|
||||||
dialOpts := []grpc.DialOption{grpc.WithInsecure(), grpc.WithTimeout(100 * time.Second)}
|
|
||||||
dialOpts = append(dialOpts,
|
|
||||||
grpc.WithDialer(func(addr string, timeout time.Duration) (net.Conn, error) {
|
|
||||||
return net.DialTimeout("unix", bindSocket, timeout)
|
|
||||||
},
|
|
||||||
))
|
|
||||||
|
|
||||||
conn, err := grpc.Dial(fmt.Sprintf("unix://%s", bindSocket), dialOpts...)
|
|
||||||
if err != nil {
|
|
||||||
return nil, errors.Wrapf(err, "failed to dial %q", bindSocket)
|
|
||||||
}
|
|
||||||
|
|
||||||
grpcConn = conn
|
|
||||||
return grpcConn, nil
|
|
||||||
}
|
|
||||||
|
@ -6,38 +6,13 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"sync"
|
"sync"
|
||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/Microsoft/go-winio"
|
"github.com/Microsoft/go-winio"
|
||||||
clog "github.com/containerd/containerd/log"
|
clog "github.com/containerd/containerd/log"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/urfave/cli"
|
|
||||||
"golang.org/x/sys/windows"
|
"golang.org/x/sys/windows"
|
||||||
"google.golang.org/grpc"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func getGRPCConnection(context *cli.Context) (*grpc.ClientConn, error) {
|
|
||||||
if grpcConn != nil {
|
|
||||||
return grpcConn, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
bindAddress := context.GlobalString("address")
|
|
||||||
dialOpts := []grpc.DialOption{grpc.WithInsecure(), grpc.WithTimeout(100 * time.Second)}
|
|
||||||
dialOpts = append(dialOpts,
|
|
||||||
grpc.WithDialer(func(addr string, timeout time.Duration) (net.Conn, error) {
|
|
||||||
return winio.DialPipe(bindAddress, &timeout)
|
|
||||||
},
|
|
||||||
))
|
|
||||||
|
|
||||||
conn, err := grpc.Dial(bindAddress, dialOpts...)
|
|
||||||
if err != nil {
|
|
||||||
return nil, errors.Wrapf(err, "failed to dial %q", bindAddress)
|
|
||||||
}
|
|
||||||
|
|
||||||
grpcConn = conn
|
|
||||||
return grpcConn, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func prepareStdio(stdin, stdout, stderr string, console bool) (*sync.WaitGroup, error) {
|
func prepareStdio(stdin, stdout, stderr string, console bool) (*sync.WaitGroup, error) {
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user