driver: docker driver base

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
pull/10/head
Tonis Tiigi 6 years ago
parent 8438557ff7
commit 49f67b7e96

@ -0,0 +1,35 @@
package docker
import (
"context"
dockertypes "github.com/docker/docker/api/types"
"github.com/moby/buildkit/client"
"github.com/pkg/errors"
"github.com/tonistiigi/buildx/driver"
)
type Driver struct {
config driver.InitConfig
version dockertypes.Version
}
func (d *Driver) Bootstrap(context.Context, driver.Logger) error {
return errors.Errorf("bootstrap not implemented for %T", d)
}
func (d *Driver) Info(context.Context) (driver.Info, error) {
return driver.Info{}, errors.Errorf("info not implemented for %T", d)
}
func (d *Driver) Stop(ctx context.Context, force bool) error {
return errors.Errorf("stop not implemented for %T", d)
}
func (d *Driver) Rm(ctx context.Context, force bool) error {
return errors.Errorf("rm not implemented for %T", d)
}
func (d *Driver) Client() (*client.Client, error) {
return nil, errors.Errorf("client not implemented for %T", d)
}

@ -0,0 +1,40 @@
package docker
import (
"context"
"github.com/pkg/errors"
"github.com/tonistiigi/buildx/driver"
)
func init() {
driver.Register(&factory{})
}
type factory struct {
}
func (*factory) Name() string {
return "docker"
}
func (*factory) Usage() string {
return "docker"
}
func (*factory) Priority() int {
return 30
}
func (*factory) New(ctx context.Context, cfg driver.InitConfig) (driver.Driver, error) {
if cfg.DockerAPI == nil {
return nil, errors.Errorf("docker driver requires docker API access")
}
v, err := cfg.DockerAPI.ServerVersion(ctx)
if err != nil {
return nil, errors.Wrapf(driver.ErrNotConnecting, err.Error())
}
return &Driver{config: cfg, version: v}, nil
}

@ -8,6 +8,9 @@ import (
"github.com/pkg/errors" "github.com/pkg/errors"
) )
var ErrNotRunning = errors.Errorf("driver not running")
var ErrNotConnecting = errors.Errorf("driver not connection")
type Logger func(*client.SolveStatus) type Logger func(*client.SolveStatus)
type Status int type Status int
@ -25,12 +28,10 @@ type Info struct {
Platforms []specs.Platform Platforms []specs.Platform
} }
var ErrNotRunning = errors.Errorf("driver not running")
type Driver interface { type Driver interface {
Bootstrap(context.Context, Logger) error Bootstrap(context.Context, Logger) error
Info(context.Context) (Info, error) Info(context.Context) (Info, error)
Stop(ctx context.Context, force bool) error Stop(ctx context.Context, force bool) error
Rm(ctx context.Context, force bool) error Rm(ctx context.Context, force bool) error
Client() (client.Client, error) Client() (*client.Client, error)
} }

Loading…
Cancel
Save