Skip to content

Commit baeef1a

Browse files
authored
Merge pull request #38 from depot/feat/acquire-machine-engine
feat: expose functions to acquire engines of various types and versions
2 parents 47ab5b3 + ca51a4b commit baeef1a

File tree

1 file changed

+44
-5
lines changed

1 file changed

+44
-5
lines changed

machine/machine.go

+44-5
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,35 @@ type Machine struct {
3232
reportHealthDone chan struct{}
3333
}
3434

35+
type EngineKind int
36+
37+
const (
38+
EngineKindBuildkit EngineKind = iota
39+
EngineKindDagger
40+
)
41+
3542
// Platform can be "amd64" or "arm64".
3643
// This reports health continually to the Depot API and waits for the buildkit
37-
// machine to be ready. This can be canceled by canceling the context.
44+
// machine and engine to be ready. This can be canceled by canceling the context.
3845
func Acquire(ctx context.Context, buildID, token, platform string) (*Machine, error) {
46+
return AcquireMachineEngine(ctx, buildID, token, platform, EngineKindBuildkit, "")
47+
}
48+
49+
// Platform can be "amd64" or "arm64".
50+
// This reports health continually to the Depot API and waits for the buildkit
51+
// machine and engine to be ready. This can be canceled by canceling the context.
52+
func AcquireBuildkit(ctx context.Context, buildID, token, platform string) (*Machine, error) {
53+
return AcquireMachineEngine(ctx, buildID, token, platform, EngineKindBuildkit, "")
54+
}
55+
56+
// Platform can be "amd64" or "arm64".
57+
// This reports health continually to the Depot API and waits for the machine with the dagger version to be ready.
58+
// This can be canceled by canceling the context.
59+
func AcquireDagger(ctx context.Context, buildID, token, platform, engineVersion string) (*Machine, error) {
60+
return AcquireMachineEngine(ctx, buildID, token, platform, EngineKindDagger, engineVersion)
61+
}
62+
63+
func AcquireMachineEngine(ctx context.Context, buildID, token, platform string, engineKind EngineKind, engineVersion string) (*Machine, error) {
3964
m := &Machine{
4065
BuildID: buildID,
4166
Token: token,
@@ -56,12 +81,26 @@ func Acquire(ctx context.Context, buildID, token, platform string) (*Machine, er
5681
}
5782

5883
client := api.NewBuildClient()
84+
req := cliv1.GetBuildKitConnectionRequest{
85+
BuildId: m.BuildID,
86+
Platform: builderPlatform,
87+
}
88+
switch engineKind {
89+
case EngineKindBuildkit:
90+
req.RequiredEngine = &cliv1.GetBuildKitConnectionRequest_RequiredEngine{
91+
Engine: &cliv1.GetBuildKitConnectionRequest_RequiredEngine_Buildkit{
92+
Buildkit: &cliv1.GetBuildKitConnectionRequest_RequiredEngine_BuildKitEngine{},
93+
},
94+
}
95+
case EngineKindDagger:
96+
req.RequiredEngine = &cliv1.GetBuildKitConnectionRequest_RequiredEngine{
97+
Engine: &cliv1.GetBuildKitConnectionRequest_RequiredEngine_Dagger{
98+
Dagger: &cliv1.GetBuildKitConnectionRequest_RequiredEngine_DaggerEngine{Version: engineVersion},
99+
},
100+
}
101+
}
59102

60103
for {
61-
req := cliv1.GetBuildKitConnectionRequest{
62-
BuildId: m.BuildID,
63-
Platform: builderPlatform,
64-
}
65104
resp, err := client.GetBuildKitConnection(ctx, api.WithAuthentication(connect.NewRequest(&req), m.Token))
66105
if err != nil {
67106
return nil, err

0 commit comments

Comments
 (0)