Introduce a client interface, to abstract from buildkit client.

This will allow further enhancement like caching remote driver responses.

Signed-off-by: Silvin Lubecki <silvin.lubecki@docker.com>
This commit is contained in:
Silvin Lubecki
2023-08-08 14:44:42 +02:00
parent 561a4330cf
commit 2aa6d52b06
9 changed files with 36 additions and 17 deletions

20
driver/client.go Normal file
View File

@@ -0,0 +1,20 @@
package driver
import (
"context"
controlapi "github.com/moby/buildkit/api/services/control"
"github.com/moby/buildkit/client"
gateway "github.com/moby/buildkit/frontend/gateway/client"
)
type Client interface {
Build(ctx context.Context, opt client.SolveOpt, product string, buildFunc gateway.BuildFunc, statusChan chan *client.SolveStatus) (*client.SolveResponse, error)
ListWorkers(ctx context.Context, opts ...client.ListWorkersOption) ([]*client.WorkerInfo, error)
Info(ctx context.Context) (*client.Info, error)
DiskUsage(ctx context.Context, opts ...client.DiskUsageOption) ([]*client.UsageInfo, error)
Prune(ctx context.Context, ch chan client.UsageInfo, opts ...client.PruneOption) error
ControlClient() controlapi.ControlClient
Close() error
Wait(ctx context.Context) error
}