driver: docker driver base
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>pull/10/head
							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 | ||||||
|  | } | ||||||
					Loading…
					
					
				
		Reference in New Issue
	
	 Tonis Tiigi
						Tonis Tiigi