Skip to content

Commit

Permalink
feat: expose functions to acquire engines of various types and versions
Browse files Browse the repository at this point in the history
Signed-off-by: Chris Goller <goller@gmail.com>
  • Loading branch information
goller committed Oct 17, 2024
1 parent 47ab5b3 commit ca51a4b
Showing 1 changed file with 44 additions and 5 deletions.
49 changes: 44 additions & 5 deletions machine/machine.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,35 @@ type Machine struct {
reportHealthDone chan struct{}
}

type EngineKind int

const (
EngineKindBuildkit EngineKind = iota
EngineKindDagger
)

// Platform can be "amd64" or "arm64".
// This reports health continually to the Depot API and waits for the buildkit
// machine to be ready. This can be canceled by canceling the context.
// machine and engine to be ready. This can be canceled by canceling the context.
func Acquire(ctx context.Context, buildID, token, platform string) (*Machine, error) {
return AcquireMachineEngine(ctx, buildID, token, platform, EngineKindBuildkit, "")
}

// Platform can be "amd64" or "arm64".
// This reports health continually to the Depot API and waits for the buildkit
// machine and engine to be ready. This can be canceled by canceling the context.
func AcquireBuildkit(ctx context.Context, buildID, token, platform string) (*Machine, error) {
return AcquireMachineEngine(ctx, buildID, token, platform, EngineKindBuildkit, "")
}

// Platform can be "amd64" or "arm64".
// This reports health continually to the Depot API and waits for the machine with the dagger version to be ready.
// This can be canceled by canceling the context.
func AcquireDagger(ctx context.Context, buildID, token, platform, engineVersion string) (*Machine, error) {
return AcquireMachineEngine(ctx, buildID, token, platform, EngineKindDagger, engineVersion)
}

func AcquireMachineEngine(ctx context.Context, buildID, token, platform string, engineKind EngineKind, engineVersion string) (*Machine, error) {
m := &Machine{
BuildID: buildID,
Token: token,
Expand All @@ -56,12 +81,26 @@ func Acquire(ctx context.Context, buildID, token, platform string) (*Machine, er
}

client := api.NewBuildClient()
req := cliv1.GetBuildKitConnectionRequest{
BuildId: m.BuildID,
Platform: builderPlatform,
}
switch engineKind {
case EngineKindBuildkit:
req.RequiredEngine = &cliv1.GetBuildKitConnectionRequest_RequiredEngine{
Engine: &cliv1.GetBuildKitConnectionRequest_RequiredEngine_Buildkit{
Buildkit: &cliv1.GetBuildKitConnectionRequest_RequiredEngine_BuildKitEngine{},
},
}
case EngineKindDagger:
req.RequiredEngine = &cliv1.GetBuildKitConnectionRequest_RequiredEngine{
Engine: &cliv1.GetBuildKitConnectionRequest_RequiredEngine_Dagger{
Dagger: &cliv1.GetBuildKitConnectionRequest_RequiredEngine_DaggerEngine{Version: engineVersion},
},
}
}

for {
req := cliv1.GetBuildKitConnectionRequest{
BuildId: m.BuildID,
Platform: builderPlatform,
}
resp, err := client.GetBuildKitConnection(ctx, api.WithAuthentication(connect.NewRequest(&req), m.Token))
if err != nil {
return nil, err
Expand Down

0 comments on commit ca51a4b

Please sign in to comment.