Skip to content

Commit

Permalink
fix: Remove hard code docker in envd engine init (#1000)
Browse files Browse the repository at this point in the history
* fix: Remove hard code docker in envd engine init

Signed-off-by: Ce Gao <cegao@tensorchord.ai>

* fix: Fix build errors

Signed-off-by: Ce Gao <cegao@tensorchord.ai>

Signed-off-by: Ce Gao <cegao@tensorchord.ai>
  • Loading branch information
gaocegege committed Oct 10, 2022
1 parent cf56f0d commit fec7ada
Show file tree
Hide file tree
Showing 15 changed files with 139 additions and 20 deletions.
8 changes: 7 additions & 1 deletion e2e/e2e_helper.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import (
"github.com/tensorchord/envd/pkg/docker"
"github.com/tensorchord/envd/pkg/envd"
"github.com/tensorchord/envd/pkg/lang/ir"
"github.com/tensorchord/envd/pkg/types"
)

func BuildContextDirWithName(name string) string {
Expand Down Expand Up @@ -70,7 +71,12 @@ func (e *Example) RemoveImage() func() {
}

func GetEngine(ctx context.Context) envd.Engine {
engine, err := envd.New(ctx, "docker")
opt := envd.Options{
Context: &types.Context{
Runner: types.RunnerTypeDocker,
},
}
engine, err := envd.New(ctx, opt)
if err != nil {
panic(err)
}
Expand Down
9 changes: 8 additions & 1 deletion pkg/app/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,14 @@ func build(clicontext *cli.Context) error {
}

func DetectEnvironment(clicontext *cli.Context, buildOpt builder.Options) error {
engine, err := envd.New(clicontext.Context, "docker")
context, err := home.GetManager().ContextGetCurrent()
if err != nil {
return errors.Wrap(err, "failed to get the current context")
}
opt := envd.Options{
Context: context,
}
engine, err := envd.New(clicontext.Context, opt)
if err != nil {
return errors.Wrap(err, "failed to create the docker client")
}
Expand Down
10 changes: 9 additions & 1 deletion pkg/app/destroy.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import (

"github.com/tensorchord/envd/pkg/docker"
"github.com/tensorchord/envd/pkg/envd"
"github.com/tensorchord/envd/pkg/home"
sshconfig "github.com/tensorchord/envd/pkg/ssh/config"
)

Expand Down Expand Up @@ -101,7 +102,14 @@ func destroy(clicontext *cli.Context) error {

func getContainerTag(clicontext *cli.Context, name string) ([]string, error) {
tags := []string{}
envdEngine, err := envd.New(clicontext.Context, "docker")
context, err := home.GetManager().ContextGetCurrent()
if err != nil {
return tags, err
}
opt := envd.Options{
Context: context,
}
envdEngine, err := envd.New(clicontext.Context, opt)
if err != nil {
return tags, err
}
Expand Down
11 changes: 10 additions & 1 deletion pkg/app/env.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,13 @@ import (
"strconv"
"strings"

"github.com/cockroachdb/errors"
"github.com/docker/docker/pkg/stringid"
"github.com/olekukonko/tablewriter"
"github.com/urfave/cli/v2"

"github.com/tensorchord/envd/pkg/envd"
"github.com/tensorchord/envd/pkg/home"
"github.com/tensorchord/envd/pkg/types"
)

Expand All @@ -49,7 +51,14 @@ var CommandListEnv = &cli.Command{
}

func getEnvironment(clicontext *cli.Context) error {
envdEngine, err := envd.New(clicontext.Context, "docker")
context, err := home.GetManager().ContextGetCurrent()
if err != nil {
return errors.Wrap(err, "failed to get the current context")
}
opt := envd.Options{
Context: context,
}
envdEngine, err := envd.New(clicontext.Context, opt)
if err != nil {
return err
}
Expand Down
10 changes: 9 additions & 1 deletion pkg/app/env_describe.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import (
"github.com/urfave/cli/v2"

"github.com/tensorchord/envd/pkg/envd"
"github.com/tensorchord/envd/pkg/home"
"github.com/tensorchord/envd/pkg/types"
)

Expand All @@ -43,7 +44,14 @@ var CommandDescribeEnvironment = &cli.Command{

func getEnvironmentDescriptions(clicontext *cli.Context) error {
envName := clicontext.String("env")
envdEngine, err := envd.New(clicontext.Context, "docker")
context, err := home.GetManager().ContextGetCurrent()
if err != nil {
return errors.Wrap(err, "failed to get the current context")
}
opt := envd.Options{
Context: context,
}
envdEngine, err := envd.New(clicontext.Context, opt)
if err != nil {
return errors.Wrap(err, "failed to create envd engine")
}
Expand Down
11 changes: 10 additions & 1 deletion pkg/app/image.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,14 @@ import (
"strconv"
"time"

"github.com/cockroachdb/errors"
"github.com/docker/docker/pkg/stringid"
"github.com/docker/go-units"
"github.com/olekukonko/tablewriter"
"github.com/urfave/cli/v2"

"github.com/tensorchord/envd/pkg/envd"
"github.com/tensorchord/envd/pkg/home"
"github.com/tensorchord/envd/pkg/types"
)

Expand All @@ -49,7 +51,14 @@ var CommandListImage = &cli.Command{
}

func getImage(clicontext *cli.Context) error {
envdEngine, err := envd.New(clicontext.Context, "docker")
context, err := home.GetManager().ContextGetCurrent()
if err != nil {
return errors.Wrap(err, "failed to get the current context")
}
opt := envd.Options{
Context: context,
}
envdEngine, err := envd.New(clicontext.Context, opt)
if err != nil {
return err
}
Expand Down
10 changes: 9 additions & 1 deletion pkg/app/image_describe.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import (
"github.com/urfave/cli/v2"

"github.com/tensorchord/envd/pkg/envd"
"github.com/tensorchord/envd/pkg/home"
)

var CommandDescribeImage = &cli.Command{
Expand All @@ -42,7 +43,14 @@ func getImageDependency(clicontext *cli.Context) error {
if envName == "" {
return errors.New("image is required")
}
envdEngine, err := envd.New(clicontext.Context, "docker")
context, err := home.GetManager().ContextGetCurrent()
if err != nil {
return errors.Wrap(err, "failed to get the current context")
}
opt := envd.Options{
Context: context,
}
envdEngine, err := envd.New(clicontext.Context, opt)
if err != nil {
return errors.Wrap(err, "failed to create envd engine")
}
Expand Down
10 changes: 9 additions & 1 deletion pkg/app/pause.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"github.com/urfave/cli/v2"

"github.com/tensorchord/envd/pkg/envd"
"github.com/tensorchord/envd/pkg/home"
)

var CommandPause = &cli.Command{
Expand All @@ -43,7 +44,14 @@ func pause(clicontext *cli.Context) error {
if env == "" {
return errors.New("env is required")
}
envdEngine, err := envd.New(clicontext.Context, "docker")
context, err := home.GetManager().ContextGetCurrent()
if err != nil {
return errors.Wrap(err, "failed to get the current context")
}
opt := envd.Options{
Context: context,
}
envdEngine, err := envd.New(clicontext.Context, opt)
if err != nil {
return errors.Wrap(err, "failed to create envd engine")
}
Expand Down
10 changes: 9 additions & 1 deletion pkg/app/resume.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"github.com/urfave/cli/v2"

"github.com/tensorchord/envd/pkg/envd"
"github.com/tensorchord/envd/pkg/home"
)

var CommandResume = &cli.Command{
Expand All @@ -43,7 +44,14 @@ func resume(clicontext *cli.Context) error {
if env == "" {
return errors.New("env is required")
}
envdEngine, err := envd.New(clicontext.Context, "docker")
context, err := home.GetManager().ContextGetCurrent()
if err != nil {
return errors.Wrap(err, "failed to get the current context")
}
opt := envd.Options{
Context: context,
}
envdEngine, err := envd.New(clicontext.Context, opt)
if err != nil {
return errors.Wrap(err, "failed to create envd engine")
}
Expand Down
10 changes: 9 additions & 1 deletion pkg/app/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import (

"github.com/tensorchord/envd/pkg/builder"
"github.com/tensorchord/envd/pkg/envd"
"github.com/tensorchord/envd/pkg/home"
"github.com/tensorchord/envd/pkg/lang/ir"
"github.com/tensorchord/envd/pkg/ssh"
"github.com/tensorchord/envd/pkg/util/fileutil"
Expand Down Expand Up @@ -116,7 +117,14 @@ func run(clicontext *cli.Context) error {
}

// Check if the container is running.
engine, err := envd.New(clicontext.Context, "docker")
context, err := home.GetManager().ContextGetCurrent()
if err != nil {
return errors.Wrap(err, "failed to get the current context")
}
envdOpt := envd.Options{
Context: context,
}
engine, err := envd.New(clicontext.Context, envdOpt)
if err != nil {
return errors.Wrap(err, "failed to create the docker client")
}
Expand Down
10 changes: 9 additions & 1 deletion pkg/app/top.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import (

"github.com/tensorchord/envd/pkg/docker"
"github.com/tensorchord/envd/pkg/envd"
"github.com/tensorchord/envd/pkg/home"
"github.com/tensorchord/envd/pkg/metrics"
"github.com/tensorchord/envd/pkg/types"
)
Expand All @@ -42,7 +43,14 @@ func top(clicontext *cli.Context) error {
return err
}

envdEngine, err := envd.New(clicontext.Context, "docker")
context, err := home.GetManager().ContextGetCurrent()
if err != nil {
return errors.Wrap(err, "failed to get the current context")
}
opt := envd.Options{
Context: context,
}
envdEngine, err := envd.New(clicontext.Context, opt)
if err != nil {
return err
}
Expand Down
10 changes: 9 additions & 1 deletion pkg/app/up.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import (

"github.com/tensorchord/envd/pkg/builder"
"github.com/tensorchord/envd/pkg/envd"
"github.com/tensorchord/envd/pkg/home"
"github.com/tensorchord/envd/pkg/lang/ir"
"github.com/tensorchord/envd/pkg/ssh"
sshconfig "github.com/tensorchord/envd/pkg/ssh/config"
Expand Down Expand Up @@ -180,7 +181,14 @@ func up(clicontext *cli.Context) error {
}

func StartEnvd(clicontext *cli.Context, buildOpt builder.Options, gpu bool, numGPUs int) (int, error) {
engine, err := envd.New(clicontext.Context, "docker")
context, err := home.GetManager().ContextGetCurrent()
if err != nil {
return 0, errors.Wrap(err, "failed to get the current context")
}
opt := envd.Options{
Context: context,
}
engine, err := envd.New(clicontext.Context, opt)
if err != nil {
return 0, errors.Wrap(err, "failed to create the docker client")
}
Expand Down
10 changes: 9 additions & 1 deletion pkg/app/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import (
"github.com/urfave/cli/v2"

"github.com/tensorchord/envd/pkg/envd"
"github.com/tensorchord/envd/pkg/home"
"github.com/tensorchord/envd/pkg/types"
"github.com/tensorchord/envd/pkg/version"
)
Expand Down Expand Up @@ -84,7 +85,14 @@ func printVersion(ctx *cli.Context) error {
}

func getDetailedVersion(clicontext *cli.Context) (detailedVersion, error) {
engine, err := envd.New(clicontext.Context, "docker")
context, err := home.GetManager().ContextGetCurrent()
if err != nil {
return detailedVersion{}, errors.Wrap(err, "failed to get the current context")
}
opt := envd.Options{
Context: context,
}
engine, err := envd.New(clicontext.Context, opt)
if err != nil {
return detailedVersion{}, errors.Wrap(
err, "failed to create engine for docker server",
Expand Down
7 changes: 6 additions & 1 deletion pkg/buildkitd/buildkitd.go
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,12 @@ func (c *generalClient) maybeStart(ctx context.Context,
if err != nil {
return "", err
}
engine, err := envd.New(ctx, "docker")
opt := envd.Options{
Context: &types.Context{
Runner: types.RunnerTypeDocker,
},
}
engine, err := envd.New(ctx, opt)
if err != nil {
return "", err
}
Expand Down
23 changes: 17 additions & 6 deletions pkg/envd/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,25 +17,36 @@ package envd
import (
"context"

"github.com/cockroachdb/errors"
"github.com/docker/docker/client"
envdclient "github.com/tensorchord/envd-server/client"

"github.com/tensorchord/envd/pkg/types"
)

func New(ctx context.Context, backend string) (Engine, error) {
if backend == "docker" {
cli, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation())
type Options struct {
Context *types.Context
}

func New(ctx context.Context, opt Options) (Engine, error) {
if opt.Context == nil {
return nil, errors.New("failed to get the context")
}
if opt.Context.Runner == types.RunnerTypeEnvdServer {
cli, err := envdclient.NewClientWithOpts(envdclient.FromEnv)
if err != nil {
return nil, err
}
return &dockerEngine{
return &envdServerEngine{
Client: cli,
}, nil
} else {
cli, err := envdclient.NewClientWithOpts(envdclient.FromEnv)
cli, err := client.NewClientWithOpts(
client.FromEnv, client.WithAPIVersionNegotiation())
if err != nil {
return nil, err
}
return &envdServerEngine{
return &dockerEngine{
Client: cli,
}, nil
}
Expand Down

0 comments on commit fec7ada

Please sign in to comment.