Skip to content

Commit e1e0764

Browse files
committed
address PR comments, fix test
1 parent 4fb5852 commit e1e0764

File tree

12 files changed

+67
-39
lines changed

12 files changed

+67
-39
lines changed

packages/api/internal/handlers/template_start_build.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,10 @@ import (
1818
"github.com/e2b-dev/infra/packages/shared/pkg/models"
1919
"github.com/e2b-dev/infra/packages/shared/pkg/models/envbuild"
2020
"github.com/e2b-dev/infra/packages/shared/pkg/telemetry"
21+
"github.com/e2b-dev/infra/packages/shared/pkg/templates"
2122
"github.com/e2b-dev/infra/packages/shared/pkg/utils"
2223
)
2324

24-
const templateBuildV1 = "v1.0.0"
25-
2625
// CheckAndCancelConcurrentBuilds checks for concurrent builds and cancels them if found
2726
func (a *APIStore) CheckAndCancelConcurrentBuilds(ctx context.Context, templateID api.TemplateID, buildID uuid.UUID, teamClusterID uuid.UUID) error {
2827
concurrentlyRunningBuilds, err := a.db.
@@ -162,7 +161,7 @@ func (a *APIStore) PostTemplatesTemplateIDBuildsBuildID(c *gin.Context, template
162161
nil,
163162
apiutils.WithClusterFallback(team.ClusterID),
164163
build.ClusterNodeID,
165-
templateBuildV1,
164+
templates.TemplateV1Version,
166165
)
167166
if buildErr != nil {
168167
telemetry.ReportCriticalError(ctx, "build failed", buildErr, telemetry.WithTemplateID(templateID))

packages/api/internal/handlers/template_start_build_v2.go

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,13 @@ import (
1616
"github.com/e2b-dev/infra/packages/db/queries"
1717
"github.com/e2b-dev/infra/packages/shared/pkg/models/envbuild"
1818
"github.com/e2b-dev/infra/packages/shared/pkg/telemetry"
19+
"github.com/e2b-dev/infra/packages/shared/pkg/templates"
1920
"github.com/e2b-dev/infra/packages/shared/pkg/utils"
2021
)
2122

2223
const (
2324
jsSDKPrefix = "e2b-js-sdk/"
2425
pythonSDKPrefix = "e2b-python-sdk/"
25-
testsUserAgent = "e2b-tests/"
26-
)
27-
28-
const (
29-
buildSystem2Version = "v2.0.0"
30-
buildLatestVersion = "v2.1.0"
3126
)
3227

3328
type dockerfileStore struct {
@@ -130,7 +125,7 @@ func (a *APIStore) PostV2TemplatesTemplateIDBuildsBuildID(c *gin.Context, templa
130125
return
131126
}
132127

133-
version, err := templateUserAgentToVersion(c.Request.UserAgent())
128+
version, err := userAgentToTemplateVersion(c.Request.UserAgent())
134129
if err != nil {
135130
a.sendAPIStoreError(c, http.StatusBadRequest, fmt.Sprintf("Error when parsing user agent: %s", err))
136131
telemetry.ReportCriticalError(ctx, "error when parsing user agent", err, telemetry.WithTemplateID(templateID))
@@ -175,30 +170,28 @@ func (a *APIStore) PostV2TemplatesTemplateIDBuildsBuildID(c *gin.Context, templa
175170
c.Status(http.StatusAccepted)
176171
}
177172

178-
func templateUserAgentToVersion(userAgent string) (string, error) {
179-
version := buildSystem2Version
173+
func userAgentToTemplateVersion(userAgent string) (string, error) {
174+
version := templates.TemplateV2LatestVersion
180175

181176
switch {
182177
case strings.HasPrefix(userAgent, jsSDKPrefix):
183178
sdk := strings.TrimPrefix(userAgent, jsSDKPrefix)
184-
ok, err := utils.IsGTEVersion(sdk, "2.3.0")
179+
ok, err := utils.IsGTEVersion(sdk, templates.SDKDefaultUserVersion)
185180
if err != nil {
186181
return "", fmt.Errorf("parsing JS SDK version: %w", err)
187182
}
188-
if ok {
189-
version = buildLatestVersion
183+
if !ok {
184+
version = templates.TemplateV2BetaVersion
190185
}
191186
case strings.HasPrefix(userAgent, pythonSDKPrefix):
192187
sdk := strings.TrimPrefix(userAgent, pythonSDKPrefix)
193-
ok, err := utils.IsGTEVersion(sdk, "2.3.0")
188+
ok, err := utils.IsGTEVersion(sdk, templates.SDKDefaultUserVersion)
194189
if err != nil {
195190
return "", fmt.Errorf("parsing Python SDK version: %w", err)
196191
}
197-
if ok {
198-
version = buildLatestVersion
192+
if !ok {
193+
version = templates.TemplateV2BetaVersion
199194
}
200-
case strings.HasPrefix(userAgent, testsUserAgent):
201-
version = buildLatestVersion
202195
}
203196

204197
return version, nil

packages/envd/spec/envd.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,6 @@ components:
147147
description: User used for setting the owner, or resolving relative paths.
148148
schema:
149149
type: string
150-
pattern: "^(root|user|.+)$"
151150
Signature:
152151
name: signature
153152
in: query

packages/orchestrator/benchmark_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ func BenchmarkBaseImageLaunch(b *testing.B) {
5858
buildID = "ba6aae36-74f7-487a-b6f7-74fd7c94e479"
5959
useHugePages = false
6060
allowInternetAccess = true
61+
templateVersion = "v2.0.0"
6162
)
6263

6364
// cache paths, to speed up test runs. these paths aren't wiped between tests
@@ -243,7 +244,7 @@ func BenchmarkBaseImageLaunch(b *testing.B) {
243244
// build template
244245
force := true
245246
templateConfig := config.TemplateConfig{
246-
Version: "v2.0.0",
247+
Version: templateVersion,
247248
TemplateID: templateID,
248249
FromImage: baseImage,
249250
Force: &force,

packages/orchestrator/cmd/build-template/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ func buildTemplate(
199199

200200
force := true
201201
template := config.TemplateConfig{
202-
Version: "v2.0.0",
202+
Version: config.,
203203
TeamID: "",
204204
TemplateID: templateID,
205205
FromImage: baseImage,

packages/orchestrator/internal/sandbox/envd.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"github.com/e2b-dev/infra/packages/shared/pkg/consts"
1818
"github.com/e2b-dev/infra/packages/shared/pkg/logger"
1919
"github.com/e2b-dev/infra/packages/shared/pkg/telemetry"
20+
"github.com/e2b-dev/infra/packages/shared/pkg/utils"
2021
)
2122

2223
const (
@@ -140,7 +141,12 @@ func (s *Sandbox) initEnvd(ctx context.Context) error {
140141
}
141142

142143
if response.StatusCode != http.StatusNoContent {
143-
zap.L().Error("envd init request failed", logger.WithSandboxID(s.Runtime.SandboxID), logger.WithEnvdVersion(s.Config.Envd.Version), zap.Int("status_code", response.StatusCode), zap.String("response_body", string(body)))
144+
zap.L().Error("envd init request failed",
145+
logger.WithSandboxID(s.Runtime.SandboxID),
146+
logger.WithEnvdVersion(s.Config.Envd.Version),
147+
zap.Int("status_code", response.StatusCode),
148+
zap.String("response_body", utils.Truncate(string(body), 100)),
149+
)
144150
return fmt.Errorf("unexpected status code: %d", response.StatusCode)
145151
}
146152

packages/orchestrator/internal/template/build/builder.go

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import (
3535
"github.com/e2b-dev/infra/packages/shared/pkg/storage"
3636
"github.com/e2b-dev/infra/packages/shared/pkg/storage/header"
3737
"github.com/e2b-dev/infra/packages/shared/pkg/telemetry"
38+
"github.com/e2b-dev/infra/packages/shared/pkg/templates"
3839
"github.com/e2b-dev/infra/packages/shared/pkg/utils"
3940
)
4041

@@ -101,7 +102,7 @@ type Result struct {
101102
//
102103
// 8. Snapshot
103104
// 9. Upload template (and all not yet uploaded layers)
104-
func (b *Builder) Build(ctx context.Context, template storage.TemplateFiles, config config.TemplateConfig, logsCore zapcore.Core) (r *Result, e error) {
105+
func (b *Builder) Build(ctx context.Context, template storage.TemplateFiles, cfg config.TemplateConfig, logsCore zapcore.Core) (r *Result, e error) {
105106
ctx, childSpan := tracer.Start(ctx, "build")
106107
defer childSpan.End()
107108

@@ -113,20 +114,20 @@ func (b *Builder) Build(ctx context.Context, template storage.TemplateFiles, con
113114
b.metrics.RecordBuildDuration(ctx, duration, success)
114115

115116
if success {
116-
b.metrics.RecordBuildResult(ctx, config.TeamID, true)
117+
b.metrics.RecordBuildResult(ctx, cfg.TeamID, true)
117118
b.metrics.RecordRootfsSize(ctx, r.RootfsSizeMB<<constants.ToMBShift)
118119
} else if !errors.Is(e, context.Canceled) {
119120
// Skip reporting failure metrics only on explicit cancellation
120-
b.metrics.RecordBuildResult(ctx, config.TeamID, false)
121+
b.metrics.RecordBuildResult(ctx, cfg.TeamID, false)
121122
}
122123
}()
123124

124-
cacheScope := config.CacheScope
125+
cacheScope := cfg.CacheScope
125126

126127
// Validate template, update force layers if needed
127-
config = forceSteps(config)
128+
cfg = forceSteps(cfg)
128129

129-
isV1Build := utils.IsVersion(config.Version, "v1.0.0") || (config.FromImage == "" && config.FromTemplate == nil)
130+
isV1Build := utils.IsVersion(cfg.Version, templates.TemplateV1Version) || (cfg.FromImage == "" && cfg.FromTemplate == nil)
130131

131132
logger := zap.New(logsCore)
132133
defer func() {
@@ -143,7 +144,7 @@ func (b *Builder) Build(ctx context.Context, template storage.TemplateFiles, con
143144

144145
defer func() {
145146
if r := recover(); r != nil {
146-
telemetry.ReportCriticalError(ctx, "recovered from panic in template build", nil, attribute.String("panic", fmt.Sprintf("%v", r)), telemetry.WithTemplateID(config.TemplateID), telemetry.WithBuildID(template.BuildID))
147+
telemetry.ReportCriticalError(ctx, "recovered from panic in template build", nil, attribute.String("panic", fmt.Sprintf("%v", r)), telemetry.WithTemplateID(cfg.TemplateID), telemetry.WithBuildID(template.BuildID))
147148
e = errors.New("fatal error occurred during template build, please contact us")
148149
}
149150
}()
@@ -154,7 +155,7 @@ func (b *Builder) Build(ctx context.Context, template storage.TemplateFiles, con
154155
logger = zap.New(hookedCore)
155156
}
156157

157-
logger.Info(fmt.Sprintf("Building template %s/%s", config.TemplateID, template.BuildID))
158+
logger.Info(fmt.Sprintf("Building template %s/%s", cfg.TemplateID, template.BuildID))
158159

159160
defer func(ctx context.Context) {
160161
if e == nil {
@@ -183,13 +184,13 @@ func (b *Builder) Build(ctx context.Context, template storage.TemplateFiles, con
183184
}()
184185

185186
buildContext := buildcontext.BuildContext{
186-
Config: config,
187+
Config: cfg,
187188
Template: template,
188189
UploadErrGroup: &uploadErrGroup,
189190
EnvdVersion: envdVersion,
190191
CacheScope: cacheScope,
191192
IsV1Build: isV1Build,
192-
Version: config.Version,
193+
Version: cfg.Version,
193194
}
194195

195196
return runBuild(ctx, logger, buildContext, b)
@@ -269,7 +270,7 @@ func runBuild(
269270
baseBuilder,
270271
}
271272
// Default user is only set for version TemplateDefaultUserVersion
272-
ok, err := utils.IsGTEVersion(bc.Version, config.TemplateDefaultUserVersion)
273+
ok, err := utils.IsGTEVersion(bc.Version, templates.TemplateDefaultUserVersion)
273274
if err != nil {
274275
return nil, fmt.Errorf("error checking build version: %w", err)
275276
}

packages/orchestrator/internal/template/build/config/config.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ const (
1010
InstanceBuildPrefix = "b"
1111

1212
// TemplateDefaultUser is the default user to use in the template to run all commands.
13-
TemplateDefaultUser = "user"
14-
TemplateDefaultUserVersion = "v2.1.0"
13+
TemplateDefaultUser = "user"
1514
)
1615

1716
type TemplateConfig struct {

packages/orchestrator/internal/template/build/phases/user/hash.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@ import (
55
"github.com/e2b-dev/infra/packages/orchestrator/internal/template/build/storage/cache"
66
)
77

8+
const prefix = "DEFAULT USER"
9+
810
func (ub *UserBuilder) Hash(sourceLayer phases.LayerResult) (string, error) {
911
return cache.HashKeys(
1012
sourceLayer.Hash,
11-
"DEFAULT USER",
13+
prefix,
1214
ub.user,
1315
), nil
1416
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package templates
2+
3+
const (
4+
TemplateV2LatestVersion = "v2.1.0"
5+
6+
TemplateV2BetaVersion = "v2.0.0"
7+
8+
TemplateV1Version = "v1.0.0"
9+
)
10+
11+
const (
12+
SDKDefaultUserVersion = "2.3.0"
13+
TemplateDefaultUserVersion = "v2.1.0"
14+
)

0 commit comments

Comments
 (0)