Browse code

grpc: register BuildKit controller to /grpc

Signed-off-by: Tibor Vass <tibor@docker.com>

Tibor Vass authored on 2019/04/02 13:08:51
Showing 3 changed files
... ...
@@ -14,6 +14,7 @@ import (
14 14
 	"github.com/docker/docker/pkg/stringid"
15 15
 	"github.com/pkg/errors"
16 16
 	"golang.org/x/sync/errgroup"
17
+	"google.golang.org/grpc"
17 18
 )
18 19
 
19 20
 // ImageComponent provides an interface for working with images
... ...
@@ -40,6 +41,13 @@ func NewBackend(components ImageComponent, builder Builder, fsCache *fscache.FSC
40 40
 	return &Backend{imageComponent: components, builder: builder, fsCache: fsCache, buildkit: buildkit}, nil
41 41
 }
42 42
 
43
+// RegisterGRPC registers buildkit controller to the grpc server.
44
+func (b *Backend) RegisterGRPC(s *grpc.Server) {
45
+	if b.buildkit != nil {
46
+		b.buildkit.RegisterGRPC(s)
47
+	}
48
+}
49
+
43 50
 // Build builds an image from a Source
44 51
 func (b *Backend) Build(ctx context.Context, config backend.BuildConfig) (string, error) {
45 52
 	options := config.Options
... ...
@@ -31,6 +31,7 @@ import (
31 31
 	"github.com/moby/buildkit/util/tracing"
32 32
 	"github.com/pkg/errors"
33 33
 	"golang.org/x/sync/errgroup"
34
+	"google.golang.org/grpc"
34 35
 	grpcmetadata "google.golang.org/grpc/metadata"
35 36
 )
36 37
 
... ...
@@ -104,6 +105,11 @@ func New(opt Opt) (*Builder, error) {
104 104
 	return b, nil
105 105
 }
106 106
 
107
+// RegisterGRPC registers controller to the grpc server.
108
+func (b *Builder) RegisterGRPC(s *grpc.Server) {
109
+	b.controller.Register(s)
110
+}
111
+
107 112
 // Cancel cancels a build using ID
108 113
 func (b *Builder) Cancel(ctx context.Context, id string) error {
109 114
 	b.mu.Lock()
... ...
@@ -21,6 +21,7 @@ import (
21 21
 	checkpointrouter "github.com/docker/docker/api/server/router/checkpoint"
22 22
 	"github.com/docker/docker/api/server/router/container"
23 23
 	distributionrouter "github.com/docker/docker/api/server/router/distribution"
24
+	grpcrouter "github.com/docker/docker/api/server/router/grpc"
24 25
 	"github.com/docker/docker/api/server/router/image"
25 26
 	"github.com/docker/docker/api/server/router/network"
26 27
 	pluginrouter "github.com/docker/docker/api/server/router/plugin"
... ...
@@ -481,6 +482,16 @@ func initRouter(opts routerOptions) {
481 481
 		distributionrouter.NewRouter(opts.daemon.ImageService()),
482 482
 	}
483 483
 
484
+	grpcBackends := []grpcrouter.Backend{}
485
+	for _, b := range []interface{}{opts.daemon, opts.buildBackend} {
486
+		if b, ok := b.(grpcrouter.Backend); ok {
487
+			grpcBackends = append(grpcBackends, b)
488
+		}
489
+	}
490
+	if len(grpcBackends) > 0 {
491
+		routers = append(routers, grpcrouter.NewRouter(grpcBackends...))
492
+	}
493
+
484 494
 	if opts.daemon.NetworkControllerEnabled() {
485 495
 		routers = append(routers, network.NewRouter(opts.daemon, opts.cluster))
486 496
 	}