From 05c5d20a2cd8b2073901828b83deaa493220bce6 Mon Sep 17 00:00:00 2001 From: Tibor Vass Date: Tue, 2 Apr 2019 04:08:51 +0000 Subject: [PATCH] grpc: register BuildKit controller to /grpc Signed-off-by: Tibor Vass --- api/server/backend/build/backend.go | 8 ++++++++ builder/builder-next/builder.go | 6 ++++++ cmd/dockerd/daemon.go | 11 +++++++++++ 3 files changed, 25 insertions(+) diff --git a/api/server/backend/build/backend.go b/api/server/backend/build/backend.go index 00fb5b8d2c..ff7a5a9b42 100644 --- a/api/server/backend/build/backend.go +++ b/api/server/backend/build/backend.go @@ -14,6 +14,7 @@ import ( "github.com/docker/docker/pkg/stringid" "github.com/pkg/errors" "golang.org/x/sync/errgroup" + "google.golang.org/grpc" ) // ImageComponent provides an interface for working with images @@ -40,6 +41,13 @@ func NewBackend(components ImageComponent, builder Builder, fsCache *fscache.FSC return &Backend{imageComponent: components, builder: builder, fsCache: fsCache, buildkit: buildkit}, nil } +// RegisterGRPC registers buildkit controller to the grpc server. +func (b *Backend) RegisterGRPC(s *grpc.Server) { + if b.buildkit != nil { + b.buildkit.RegisterGRPC(s) + } +} + // Build builds an image from a Source func (b *Backend) Build(ctx context.Context, config backend.BuildConfig) (string, error) { options := config.Options diff --git a/builder/builder-next/builder.go b/builder/builder-next/builder.go index 859a65f7f1..c6041d2d34 100644 --- a/builder/builder-next/builder.go +++ b/builder/builder-next/builder.go @@ -31,6 +31,7 @@ import ( "github.com/moby/buildkit/util/tracing" "github.com/pkg/errors" "golang.org/x/sync/errgroup" + "google.golang.org/grpc" grpcmetadata "google.golang.org/grpc/metadata" ) @@ -104,6 +105,11 @@ func New(opt Opt) (*Builder, error) { return b, nil } +// RegisterGRPC registers controller to the grpc server. +func (b *Builder) RegisterGRPC(s *grpc.Server) { + b.controller.Register(s) +} + // Cancel cancels a build using ID func (b *Builder) Cancel(ctx context.Context, id string) error { b.mu.Lock() diff --git a/cmd/dockerd/daemon.go b/cmd/dockerd/daemon.go index caef9d1c57..9a795046b6 100644 --- a/cmd/dockerd/daemon.go +++ b/cmd/dockerd/daemon.go @@ -21,6 +21,7 @@ import ( checkpointrouter "github.com/docker/docker/api/server/router/checkpoint" "github.com/docker/docker/api/server/router/container" distributionrouter "github.com/docker/docker/api/server/router/distribution" + grpcrouter "github.com/docker/docker/api/server/router/grpc" "github.com/docker/docker/api/server/router/image" "github.com/docker/docker/api/server/router/network" pluginrouter "github.com/docker/docker/api/server/router/plugin" @@ -481,6 +482,16 @@ func initRouter(opts routerOptions) { distributionrouter.NewRouter(opts.daemon.ImageService()), } + grpcBackends := []grpcrouter.Backend{} + for _, b := range []interface{}{opts.daemon, opts.buildBackend} { + if b, ok := b.(grpcrouter.Backend); ok { + grpcBackends = append(grpcBackends, b) + } + } + if len(grpcBackends) > 0 { + routers = append(routers, grpcrouter.NewRouter(grpcBackends...)) + } + if opts.daemon.NetworkControllerEnabled() { routers = append(routers, network.NewRouter(opts.daemon, opts.cluster)) }