Skip to content
Merged
2 changes: 1 addition & 1 deletion packages/api/internal/handlers/sandbox.go
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ func (a *APIStore) startSandboxInternal(
zap.String("end_time", endTime.Format("2006-01-02 15:04:05 -07:00")),
zap.String("auto_resume_policy", autoResumePolicy),
zap.Bool("auto_pause", sbx.AutoPause),
zap.String("parent_template_id", sbx.BaseTemplateID),
zap.String("template_id", sbx.BaseTemplateID),
)

return sbx, nil
Expand Down
4 changes: 2 additions & 2 deletions packages/api/internal/handlers/sandbox_get.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ func (a *APIStore) GetSandboxesSandboxID(c *gin.Context, id string) {
// Sandbox exists and belongs to the team - return running sandbox sbx
sandbox := api.SandboxDetail{
ClientID: sbx.ClientID,
TemplateID: sbx.TemplateID,
TemplateID: sbx.BaseTemplateID,
Alias: sbx.Alias,
SandboxID: sbx.SandboxID,
StartedAt: sbx.StartTime,
Expand Down Expand Up @@ -202,7 +202,7 @@ func (a *APIStore) GetSandboxesSandboxID(c *gin.Context, id string) {

sandbox := api.SandboxDetail{
ClientID: consts.ClientID, // for backwards compatibility we need to return a client id
TemplateID: lastSnapshot.Snapshot.EnvID,
TemplateID: lastSnapshot.Snapshot.BaseEnvID,
SandboxID: lastSnapshot.Snapshot.SandboxID,
StartedAt: lastSnapshot.Snapshot.SandboxStartedAt.Time,
CpuCount: cpuCount,
Expand Down
3 changes: 3 additions & 0 deletions packages/api/internal/orchestrator/create_instance_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@ func TestCreateSandbox_StaleDataAfterConcurrentPause(t *testing.T) {
)
require.Nil(t, apiErr)
assert.Equal(t, "tpl-v1", sbx1.TemplateID)
assert.Equal(t, "base-tpl", sbx1.BaseTemplateID)

// Clean up reservation.
o.sandboxStore.Remove(t.Context(), team.Team.ID, sandboxID)
Expand All @@ -172,6 +173,8 @@ func TestCreateSandbox_StaleDataAfterConcurrentPause(t *testing.T) {
// The sandbox SHOULD have been created with V2 (fresh) data.
assert.Equal(t, "tpl-v2", sbx2.TemplateID,
"CreateSandbox must use the latest snapshot data, not stale pre-lock values")
assert.Equal(t, "base-tpl", sbx2.BaseTemplateID,
"CreateSandbox must preserve the base template ID")
assert.Equal(t, "v2", sbx2.Metadata["snapshot"],
"CreateSandbox must use the latest metadata, not stale pre-lock values")
})
Expand Down
2 changes: 1 addition & 1 deletion packages/api/internal/sandbox/sandbox.go
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ type Sandbox struct {
func (s Sandbox) ToAPISandbox() *api.Sandbox {
return &api.Sandbox{
SandboxID: s.SandboxID,
TemplateID: s.TemplateID,
TemplateID: s.BaseTemplateID,
ClientID: s.ClientID,
Alias: s.Alias,
EnvdVersion: s.EnvdVersion,
Expand Down
7 changes: 5 additions & 2 deletions packages/db/queries/get_sandbox_record.sql.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 5 additions & 2 deletions packages/db/queries/sandboxes/get_sandbox_record.sql
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
-- name: GetSandboxRecordByTeamAndSandboxID :one
SELECT
sl.sandbox_id,
sl.env_id AS template_id,
COALESCE(s.base_env_id, sl.env_id) AS template_id,
sl.vcpu,
sl.ram_mb,
sl.total_disk_size_mb,
Expand All @@ -12,10 +12,13 @@ SELECT
FROM billing.sandbox_logs sl
LEFT JOIN public.teams t ON t.id = sl.team_id
LEFT JOIN public.clusters c ON c.id = t.cluster_id
LEFT JOIN public.snapshots s
ON s.sandbox_id = sl.sandbox_id
AND s.team_id = sl.team_id
LEFT JOIN LATERAL (
SELECT ea.alias
FROM public.env_aliases ea
WHERE ea.env_id = sl.env_id
WHERE ea.env_id = COALESCE(s.base_env_id, sl.env_id)
ORDER BY ea.alias
LIMIT 1
) template_alias ON TRUE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,15 @@ func TestSandboxConnect(t *testing.T) {
require.Equal(t, http.StatusCreated, sbxConnect.StatusCode())
require.NotNil(t, sbxConnect.JSON201)
assert.Equal(t, sbxConnect.JSON201.SandboxID, sbxId)
assert.Equal(t, sbx.TemplateID, sbxConnect.JSON201.TemplateID)

// Check if the sandbox is running
res, err := c.GetSandboxesSandboxIDWithResponse(t.Context(), sbxId, setup.WithAPIKey())
require.NoError(t, err)
require.Equal(t, http.StatusOK, res.StatusCode())
require.NotNil(t, res.JSON200)
assert.Equal(t, api.Running, res.JSON200.State)
assert.Equal(t, sbx.TemplateID, res.JSON200.TemplateID)
})

t.Run("connect to running sandbox", func(t *testing.T) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ func TestSandboxDetailReturnsLifecycleAndNetworkConfig(t *testing.T) {

returnedSbx := response.JSON200
assert.Equal(t, sbx.SandboxID, returnedSbx.SandboxID)
assert.Equal(t, sbx.TemplateID, returnedSbx.TemplateID)
assert.Equal(t, expectedState, returnedSbx.State)

require.NotNil(t, returnedSbx.AllowInternetAccess)
Expand Down Expand Up @@ -98,6 +99,7 @@ func TestSandboxDetailPaused(t *testing.T) {
require.Equal(t, http.StatusOK, response.StatusCode())
returnedSbx := response.JSON200
assert.Equal(t, sbx.SandboxID, returnedSbx.SandboxID)
assert.Equal(t, sbx.TemplateID, returnedSbx.TemplateID)
}

func TestSandboxDetailPausingSandbox(t *testing.T) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ func TestSandboxResume(t *testing.T) {
require.Equal(t, http.StatusCreated, sbxResume.StatusCode())
require.NotNil(t, sbxResume.JSON201)
assert.Equal(t, sbxResume.JSON201.SandboxID, sbxId)
assert.Equal(t, sbx.TemplateID, sbxResume.JSON201.TemplateID)
})

t.Run("concurrent resumes", func(t *testing.T) {
Expand Down Expand Up @@ -76,6 +77,7 @@ func TestSandboxResume(t *testing.T) {
require.Equal(t, http.StatusOK, res.StatusCode())
require.NotNil(t, res.JSON200)
assert.Equal(t, api.Running, res.JSON200.State)
assert.Equal(t, sbx.TemplateID, res.JSON200.TemplateID)

assert.True(t, resumed.Load(), "at least one resume should succeed")
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ func TestSandboxCreate(t *testing.T) {
})

assert.Equal(t, http.StatusCreated, resp.StatusCode())
require.NotNil(t, resp.JSON201)
assert.Equal(t, setup.SandboxTemplateID, resp.JSON201.TemplateID)
}

func TestSandboxResumeUnknownSandbox(t *testing.T) {
Expand Down Expand Up @@ -96,6 +98,7 @@ func TestSandboxResumeWithSecuredEnvd(t *testing.T) {
})

assert.Equal(t, sbxResume.JSON201.SandboxID, sbxCreate.JSON201.SandboxID)
assert.Equal(t, sbxCreate.JSON201.TemplateID, sbxResume.JSON201.TemplateID)
assert.Equal(t, sbxResume.JSON201.EnvdAccessToken, sbxCreate.JSON201.EnvdAccessToken)
}

Expand Down
Loading