Skip to content

Commit 1044051

Browse files
committed
add has_external_agent to workspace builds
1 parent 4bfdb83 commit 1044051

31 files changed

+400
-233
lines changed

cli/root.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,6 @@ func (r *RootCmd) CoreSubcommands() []*serpent.Command {
106106
r.version(defaultVersionInfo),
107107

108108
// Workspace Commands
109-
r.attach(),
110109
r.autoupdate(),
111110
r.configSSH(),
112111
r.create(),

cli/testdata/coder_--help.golden

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ USAGE:
1414
$ coder templates init
1515

1616
SUBCOMMANDS:
17-
attach Create a workspace and attach an external agent to it
1817
autoupdate Toggle auto-update policy for a workspace
1918
completion Install or update shell completion scripts for the
2019
detected or chosen shell.

coderd/apidoc/docs.go

Lines changed: 4 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/apidoc/swagger.json

Lines changed: 4 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/dbauthz/dbauthz.go

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4695,7 +4695,7 @@ func (q *querier) UpdateTemplateVersionDescriptionByJobID(ctx context.Context, a
46954695
return q.db.UpdateTemplateVersionDescriptionByJobID(ctx, arg)
46964696
}
46974697

4698-
func (q *querier) UpdateTemplateVersionExternalAgentsByJobID(ctx context.Context, arg database.UpdateTemplateVersionExternalAgentsByJobIDParams) error {
4698+
func (q *querier) UpdateTemplateVersionExternalAgentByJobID(ctx context.Context, arg database.UpdateTemplateVersionExternalAgentByJobIDParams) error {
46994699
// An actor is allowed to update the template version AI task flag if they are authorized to update the template.
47004700
tv, err := q.db.GetTemplateVersionByJobID(ctx, arg.JobID)
47014701
if err != nil {
@@ -4714,7 +4714,7 @@ func (q *querier) UpdateTemplateVersionExternalAgentsByJobID(ctx context.Context
47144714
if err := q.authorizeContext(ctx, policy.ActionUpdate, obj); err != nil {
47154715
return err
47164716
}
4717-
return q.db.UpdateTemplateVersionExternalAgentsByJobID(ctx, arg)
4717+
return q.db.UpdateTemplateVersionExternalAgentByJobID(ctx, arg)
47184718
}
47194719

47204720
func (q *querier) UpdateTemplateVersionExternalAuthProvidersByJobID(ctx context.Context, arg database.UpdateTemplateVersionExternalAuthProvidersByJobIDParams) error {
@@ -5073,6 +5073,24 @@ func (q *querier) UpdateWorkspaceBuildDeadlineByID(ctx context.Context, arg data
50735073
return q.db.UpdateWorkspaceBuildDeadlineByID(ctx, arg)
50745074
}
50755075

5076+
func (q *querier) UpdateWorkspaceBuildExternalAgentByID(ctx context.Context, arg database.UpdateWorkspaceBuildExternalAgentByIDParams) error {
5077+
build, err := q.db.GetWorkspaceBuildByID(ctx, arg.ID)
5078+
if err != nil {
5079+
return err
5080+
}
5081+
5082+
workspace, err := q.db.GetWorkspaceByID(ctx, build.WorkspaceID)
5083+
if err != nil {
5084+
return err
5085+
}
5086+
5087+
err = q.authorizeContext(ctx, policy.ActionUpdate, workspace.RBACObject())
5088+
if err != nil {
5089+
return err
5090+
}
5091+
return q.db.UpdateWorkspaceBuildExternalAgentByID(ctx, arg)
5092+
}
5093+
50765094
func (q *querier) UpdateWorkspaceBuildProvisionerStateByID(ctx context.Context, arg database.UpdateWorkspaceBuildProvisionerStateByIDParams) error {
50775095
if err := q.authorizeContext(ctx, policy.ActionUpdate, rbac.ResourceSystem); err != nil {
50785096
return err

coderd/database/dbmetrics/querymetrics.go

Lines changed: 17 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/dbmock/dbmock.go

Lines changed: 20 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/dump.sql

Lines changed: 4 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/migrations/000351_external_agents.down.sql

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
ALTER TABLE template_versions DROP COLUMN has_external_agents;
1+
ALTER TABLE template_versions DROP COLUMN has_external_agent;
2+
3+
DROP VIEW template_version_with_user;
24

35
-- Recreate `template_version_with_user` as defined in dump.sql
46
CREATE VIEW template_version_with_user AS
@@ -29,3 +31,48 @@ FROM
2931
);
3032

3133
COMMENT ON VIEW template_version_with_user IS 'Joins in the username + avatar url of the created by user.';
34+
35+
ALTER TABLE workspace_builds DROP COLUMN has_external_agent;
36+
37+
DROP VIEW workspace_build_with_user;
38+
39+
-- We're adding the has_external_agent column.
40+
CREATE VIEW workspace_build_with_user AS
41+
SELECT
42+
workspace_builds.id,
43+
workspace_builds.created_at,
44+
workspace_builds.updated_at,
45+
workspace_builds.workspace_id,
46+
workspace_builds.template_version_id,
47+
workspace_builds.build_number,
48+
workspace_builds.transition,
49+
workspace_builds.initiator_id,
50+
workspace_builds.provisioner_state,
51+
workspace_builds.job_id,
52+
workspace_builds.deadline,
53+
workspace_builds.reason,
54+
workspace_builds.daily_cost,
55+
workspace_builds.max_deadline,
56+
workspace_builds.template_version_preset_id,
57+
workspace_builds.has_ai_task,
58+
workspace_builds.ai_task_sidebar_app_id,
59+
COALESCE(
60+
visible_users.avatar_url,
61+
'' :: text
62+
) AS initiator_by_avatar_url,
63+
COALESCE(
64+
visible_users.username,
65+
'' :: text
66+
) AS initiator_by_username,
67+
COALESCE(visible_users.name, '' :: text) AS initiator_by_name
68+
FROM
69+
(
70+
workspace_builds
71+
LEFT JOIN visible_users ON (
72+
(
73+
workspace_builds.initiator_id = visible_users.id
74+
)
75+
)
76+
);
77+
78+
COMMENT ON VIEW workspace_build_with_user IS 'Joins in the username + avatar url of the initiated by user.';

coderd/database/migrations/000351_external_agents.up.sql

Lines changed: 54 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
-- Determines if a coder_ai_task resource is defined in a template version.
1+
-- Determines if a coder_external_agent resource is defined in a template version.
22
ALTER TABLE
33
template_versions
44
ADD
5-
COLUMN has_external_agents BOOLEAN;
5+
COLUMN has_external_agent BOOLEAN;
66

77
DROP VIEW template_version_with_user;
88

@@ -23,7 +23,7 @@ SELECT
2323
template_versions.archived,
2424
template_versions.source_example_id,
2525
template_versions.has_ai_task,
26-
template_versions.has_external_agents,
26+
template_versions.has_external_agent,
2727
COALESCE(visible_users.avatar_url, '' :: text) AS created_by_avatar_url,
2828
COALESCE(visible_users.username, '' :: text) AS created_by_username,
2929
COALESCE(visible_users.name, '' :: text) AS created_by_name
@@ -36,3 +36,54 @@ FROM
3636
);
3737

3838
COMMENT ON VIEW template_version_with_user IS 'Joins in the username + avatar url of the created by user.';
39+
40+
-- Determines if a coder_external_agent resource was included in a
41+
-- workspace build.
42+
ALTER TABLE
43+
workspace_builds
44+
ADD
45+
COLUMN has_external_agent BOOLEAN;
46+
47+
DROP VIEW workspace_build_with_user;
48+
49+
-- We're adding the has_external_agent column.
50+
CREATE VIEW workspace_build_with_user AS
51+
SELECT
52+
workspace_builds.id,
53+
workspace_builds.created_at,
54+
workspace_builds.updated_at,
55+
workspace_builds.workspace_id,
56+
workspace_builds.template_version_id,
57+
workspace_builds.build_number,
58+
workspace_builds.transition,
59+
workspace_builds.initiator_id,
60+
workspace_builds.provisioner_state,
61+
workspace_builds.job_id,
62+
workspace_builds.deadline,
63+
workspace_builds.reason,
64+
workspace_builds.daily_cost,
65+
workspace_builds.max_deadline,
66+
workspace_builds.template_version_preset_id,
67+
workspace_builds.has_ai_task,
68+
workspace_builds.ai_task_sidebar_app_id,
69+
workspace_builds.has_external_agent,
70+
COALESCE(
71+
visible_users.avatar_url,
72+
'' :: text
73+
) AS initiator_by_avatar_url,
74+
COALESCE(
75+
visible_users.username,
76+
'' :: text
77+
) AS initiator_by_username,
78+
COALESCE(visible_users.name, '' :: text) AS initiator_by_name
79+
FROM
80+
(
81+
workspace_builds
82+
LEFT JOIN visible_users ON (
83+
(
84+
workspace_builds.initiator_id = visible_users.id
85+
)
86+
)
87+
);
88+
89+
COMMENT ON VIEW workspace_build_with_user IS 'Joins in the username + avatar url of the initiated by user.';

0 commit comments

Comments
 (0)