Skip to content

feat: add OpenIn option to coder_app #15743

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 29 commits into from
Jan 3, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
5483426
work on OpenIn implementation
defelmnq Dec 4, 2024
1752f40
improve open_in parameter handling
defelmnq Dec 4, 2024
0e69ff4
Update provisioner.proto
defelmnq Dec 4, 2024
bd9d40b
add open_in logic
defelmnq Dec 17, 2024
8596e92
add open_in logic
defelmnq Dec 17, 2024
9a99df5
Merge remote-tracking branch 'origin/main' into coder_app-open_in
defelmnq Dec 17, 2024
451bf3b
up generated doc
defelmnq Dec 17, 2024
6b8858e
work on ts tests
defelmnq Dec 18, 2024
90fd0e3
work on ts tests
defelmnq Dec 18, 2024
5c207ec
work on tests for tf
defelmnq Dec 18, 2024
803fe24
reset failing tests
defelmnq Dec 18, 2024
82d4f8f
Merge remote-tracking branch 'origin/main' into coder_app-open_in
defelmnq Dec 20, 2024
f97a385
bump go.mod
defelmnq Dec 20, 2024
bfdaefd
merge
defelmnq Dec 20, 2024
c6d18a6
change database type for enum
defelmnq Dec 20, 2024
b81b84d
change database type for enum
defelmnq Dec 20, 2024
05db2b7
Merge branch 'main' into coder_app-open_in
defelmnq Dec 23, 2024
9a06745
up gomod
defelmnq Dec 23, 2024
079e474
work on tests in dbmem
defelmnq Dec 23, 2024
6e368bf
work on tests
defelmnq Dec 23, 2024
1dec106
work on tests
defelmnq Dec 23, 2024
54f3a70
increase minor version of provisioner api
defelmnq Jan 3, 2025
5730ea0
Merge remote-tracking branch 'origin/main' into coder_app-open_in
defelmnq Jan 3, 2025
8f76203
improve constant and code logic
defelmnq Jan 3, 2025
4ca1aa0
increase migration idx
defelmnq Jan 3, 2025
c64973d
Merge remote-tracking branch 'origin/main' into coder_app-open_in
defelmnq Jan 3, 2025
4698162
increase migration idx
defelmnq Jan 3, 2025
2122b3b
make gen
defelmnq Jan 3, 2025
bb801f0
add version history in the provisioner version
defelmnq Jan 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
848 changes: 429 additions & 419 deletions agent/proto/agent.pb.go

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions agent/proto/agent.proto
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ message WorkspaceApp {
}
Health health = 12;
bool hidden = 13;
string open_in = 14;
}

message WorkspaceAgentScript {
Expand Down
3 changes: 3 additions & 0 deletions coderd/agentapi/apps_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ func TestBatchUpdateAppHealths(t *testing.T) {
DisplayName: "code-server 1",
HealthcheckUrl: "http://localhost:3000",
Health: database.WorkspaceAppHealthInitializing,
OpenIn: database.WorkspaceAppOpenInSlimWindow,
}
app2 = database.WorkspaceApp{
ID: uuid.New(),
Expand All @@ -38,6 +39,7 @@ func TestBatchUpdateAppHealths(t *testing.T) {
DisplayName: "code-server 2",
HealthcheckUrl: "http://localhost:3001",
Health: database.WorkspaceAppHealthHealthy,
OpenIn: database.WorkspaceAppOpenInSlimWindow,
}
)

Expand Down Expand Up @@ -163,6 +165,7 @@ func TestBatchUpdateAppHealths(t *testing.T) {
AgentID: agent.ID,
Slug: "code-server-3",
DisplayName: "code-server 3",
OpenIn: database.WorkspaceAppOpenInSlimWindow,
}

dbM := dbmock.NewMockStore(gomock.NewController(t))
Expand Down
3 changes: 3 additions & 0 deletions coderd/apidoc/docs.go

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

3 changes: 3 additions & 0 deletions coderd/apidoc/swagger.json

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

7 changes: 4 additions & 3 deletions coderd/database/dbauthz/dbauthz_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2502,7 +2502,7 @@ func (s *MethodTestSuite) TestSystemFunctions() {
check.Args(time.Now()).Asserts(rbac.ResourceSystem, policy.ActionRead)
}))
s.Run("GetWorkspaceAppsCreatedAfter", s.Subtest(func(db database.Store, check *expects) {
_ = dbgen.WorkspaceApp(s.T(), db, database.WorkspaceApp{CreatedAt: time.Now().Add(-time.Hour)})
_ = dbgen.WorkspaceApp(s.T(), db, database.WorkspaceApp{CreatedAt: time.Now().Add(-time.Hour), OpenIn: database.WorkspaceAppOpenInSlimWindow})
check.Args(time.Now()).Asserts(rbac.ResourceSystem, policy.ActionRead)
}))
s.Run("GetWorkspaceResourcesCreatedAfter", s.Subtest(func(db database.Store, check *expects) {
Expand Down Expand Up @@ -2551,13 +2551,13 @@ func (s *MethodTestSuite) TestSystemFunctions() {
aBuild := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{WorkspaceID: aWs.ID, JobID: uuid.New()})
aRes := dbgen.WorkspaceResource(s.T(), db, database.WorkspaceResource{JobID: aBuild.JobID})
aAgt := dbgen.WorkspaceAgent(s.T(), db, database.WorkspaceAgent{ResourceID: aRes.ID})
a := dbgen.WorkspaceApp(s.T(), db, database.WorkspaceApp{AgentID: aAgt.ID})
a := dbgen.WorkspaceApp(s.T(), db, database.WorkspaceApp{AgentID: aAgt.ID, OpenIn: database.WorkspaceAppOpenInSlimWindow})

bWs := dbgen.Workspace(s.T(), db, database.WorkspaceTable{})
bBuild := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{WorkspaceID: bWs.ID, JobID: uuid.New()})
bRes := dbgen.WorkspaceResource(s.T(), db, database.WorkspaceResource{JobID: bBuild.JobID})
bAgt := dbgen.WorkspaceAgent(s.T(), db, database.WorkspaceAgent{ResourceID: bRes.ID})
b := dbgen.WorkspaceApp(s.T(), db, database.WorkspaceApp{AgentID: bAgt.ID})
b := dbgen.WorkspaceApp(s.T(), db, database.WorkspaceApp{AgentID: bAgt.ID, OpenIn: database.WorkspaceAppOpenInSlimWindow})

check.Args([]uuid.UUID{a.AgentID, b.AgentID}).
Asserts(rbac.ResourceSystem, policy.ActionRead).
Expand Down Expand Up @@ -2611,6 +2611,7 @@ func (s *MethodTestSuite) TestSystemFunctions() {
ID: uuid.New(),
Health: database.WorkspaceAppHealthDisabled,
SharingLevel: database.AppSharingLevelOwner,
OpenIn: database.WorkspaceAppOpenInSlimWindow,
}).Asserts(rbac.ResourceSystem, policy.ActionCreate)
}))
s.Run("InsertWorkspaceResourceMetadata", s.Subtest(func(db database.Store, check *expects) {
Expand Down
1 change: 1 addition & 0 deletions coderd/database/dbgen/dbgen.go
Original file line number Diff line number Diff line change
Expand Up @@ -659,6 +659,7 @@ func WorkspaceApp(t testing.TB, db database.Store, orig database.WorkspaceApp) d
Health: takeFirst(orig.Health, database.WorkspaceAppHealthHealthy),
DisplayOrder: takeFirst(orig.DisplayOrder, 1),
Hidden: orig.Hidden,
OpenIn: takeFirst(orig.OpenIn, database.WorkspaceAppOpenInSlimWindow),
})
require.NoError(t, err, "insert app")
return resource
Expand Down
5 changes: 5 additions & 0 deletions coderd/database/dbmem/dbmem.go
Original file line number Diff line number Diff line change
Expand Up @@ -8348,6 +8348,10 @@ func (q *FakeQuerier) InsertWorkspaceApp(_ context.Context, arg database.InsertW
arg.SharingLevel = database.AppSharingLevelOwner
}

if arg.OpenIn == "" {
arg.OpenIn = database.WorkspaceAppOpenInSlimWindow
}

// nolint:gosimple
workspaceApp := database.WorkspaceApp{
ID: arg.ID,
Expand All @@ -8367,6 +8371,7 @@ func (q *FakeQuerier) InsertWorkspaceApp(_ context.Context, arg database.InsertW
Health: arg.Health,
Hidden: arg.Hidden,
DisplayOrder: arg.DisplayOrder,
OpenIn: arg.OpenIn,
}
q.workspaceApps = append(q.workspaceApps, workspaceApp)
return workspaceApp, nil
Expand Down
9 changes: 8 additions & 1 deletion coderd/database/dump.sql

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

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
ALTER TABLE workspace_apps DROP COLUMN open_in;

DROP TYPE workspace_app_open_in;
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
CREATE TYPE workspace_app_open_in AS ENUM ('tab', 'window', 'slim-window');

ALTER TABLE workspace_apps ADD COLUMN open_in workspace_app_open_in NOT NULL DEFAULT 'slim-window'::workspace_app_open_in;
64 changes: 63 additions & 1 deletion coderd/database/models.go

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

20 changes: 14 additions & 6 deletions coderd/database/queries.sql.go

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

5 changes: 3 additions & 2 deletions coderd/database/queries/workspaceapps.sql
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,11 @@ INSERT INTO
healthcheck_threshold,
health,
display_order,
hidden
hidden,
open_in
)
VALUES
($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17) RETURNING *;
($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18) RETURNING *;

-- name: UpdateWorkspaceAppHealthByID :exec
UPDATE
Expand Down
10 changes: 10 additions & 0 deletions coderd/provisionerdserver/provisionerdserver.go
Original file line number Diff line number Diff line change
Expand Up @@ -1509,6 +1509,7 @@ func (s *server) CompleteJob(ctx context.Context, completed *proto.CompletedJob)
dur := time.Duration(protoAgent.GetConnectionTimeoutSeconds()) * time.Second
agentTimeouts[dur] = true
}

err = InsertWorkspaceResource(ctx, db, job.ID, workspaceBuild.Transition, protoResource, telemetrySnapshot)
if err != nil {
return xerrors.Errorf("insert provisioner job: %w", err)
Expand Down Expand Up @@ -2012,6 +2013,14 @@ func InsertWorkspaceResource(ctx context.Context, db database.Store, jobID uuid.
sharingLevel = database.AppSharingLevelPublic
}

openIn := database.WorkspaceAppOpenInSlimWindow
switch app.OpenIn {
case sdkproto.AppOpenIn_TAB:
openIn = database.WorkspaceAppOpenInTab
case sdkproto.AppOpenIn_WINDOW:
openIn = database.WorkspaceAppOpenInWindow
}

dbApp, err := db.InsertWorkspaceApp(ctx, database.InsertWorkspaceAppParams{
ID: uuid.New(),
CreatedAt: dbtime.Now(),
Expand All @@ -2036,6 +2045,7 @@ func InsertWorkspaceResource(ctx context.Context, db database.Store, jobID uuid.
Health: health,
DisplayOrder: int32(app.Order),
Hidden: app.Hidden,
OpenIn: openIn,
})
if err != nil {
return xerrors.Errorf("insert app: %w", err)
Expand Down
1 change: 1 addition & 0 deletions coderd/telemetry/telemetry_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ func TestTelemetry(t *testing.T) {
_ = dbgen.WorkspaceApp(t, db, database.WorkspaceApp{
SharingLevel: database.AppSharingLevelOwner,
Health: database.WorkspaceAppHealthDisabled,
OpenIn: database.WorkspaceAppOpenInSlimWindow,
})
group := dbgen.Group(t, db, database.Group{})
_ = dbgen.GroupMember(t, db, database.GroupMemberTable{UserID: user.ID, GroupID: group.ID})
Expand Down
2 changes: 2 additions & 0 deletions codersdk/agentsdk/convert.go
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,7 @@ func AppFromProto(protoApp *proto.WorkspaceApp) (codersdk.WorkspaceApp, error) {
},
Health: health,
Hidden: protoApp.Hidden,
OpenIn: protoApp.OpenIn,
}, nil
}

Expand Down Expand Up @@ -285,6 +286,7 @@ func ProtoFromApp(a codersdk.WorkspaceApp) (*proto.WorkspaceApp, error) {
},
Health: proto.WorkspaceApp_Health(health),
Hidden: a.Hidden,
OpenIn: a.OpenIn,
}, nil
}

Expand Down
Loading
Loading