Signed-off-by: Tibor Vass <tibor@docker.com>
| ... | ... |
@@ -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 |
} |