mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
feat(coderd): add has_external_agent flag to template_versions and workspace_builds (#19285)
This pull request introduces support for external workspace management, allowing users to register and manage workspaces that are provisioned and managed outside of the Coder. * Added has_external_agent field to workspace builds and template versions
This commit is contained in:
@@ -72,6 +72,12 @@ WHERE
|
||||
ELSE true
|
||||
END
|
||||
|
||||
-- Filter by has_external_agent in latest version
|
||||
AND CASE
|
||||
WHEN sqlc.narg('has_external_agent') :: boolean IS NOT NULL THEN
|
||||
tv.has_external_agent = sqlc.narg('has_external_agent') :: boolean
|
||||
ELSE true
|
||||
END
|
||||
-- Authorize Filter clause will be injected below in GetAuthorizedTemplates
|
||||
-- @authorize_filter
|
||||
ORDER BY (t.name, t.id) ASC
|
||||
|
||||
@@ -122,15 +122,6 @@ SET
|
||||
WHERE
|
||||
job_id = $1;
|
||||
|
||||
-- name: UpdateTemplateVersionAITaskByJobID :exec
|
||||
UPDATE
|
||||
template_versions
|
||||
SET
|
||||
has_ai_task = $2,
|
||||
updated_at = $3
|
||||
WHERE
|
||||
job_id = $1;
|
||||
|
||||
-- name: GetPreviousTemplateVersion :one
|
||||
SELECT
|
||||
*
|
||||
@@ -241,3 +232,13 @@ SELECT EXISTS (
|
||||
FROM template_versions
|
||||
WHERE id = $1 AND has_ai_task = TRUE
|
||||
);
|
||||
|
||||
-- name: UpdateTemplateVersionFlagsByJobID :exec
|
||||
UPDATE
|
||||
template_versions
|
||||
SET
|
||||
has_ai_task = $2,
|
||||
has_external_agent = $3,
|
||||
updated_at = $4
|
||||
WHERE
|
||||
job_id = $1;
|
||||
|
||||
@@ -145,15 +145,6 @@ SET
|
||||
updated_at = @updated_at::timestamptz
|
||||
WHERE id = @id::uuid;
|
||||
|
||||
-- name: UpdateWorkspaceBuildAITaskByID :exec
|
||||
UPDATE
|
||||
workspace_builds
|
||||
SET
|
||||
has_ai_task = @has_ai_task,
|
||||
ai_task_sidebar_app_id = @sidebar_app_id,
|
||||
updated_at = @updated_at::timestamptz
|
||||
WHERE id = @id::uuid;
|
||||
|
||||
-- name: GetActiveWorkspaceBuildsByTemplateID :many
|
||||
SELECT wb.*
|
||||
FROM (
|
||||
@@ -247,3 +238,13 @@ WHERE
|
||||
AND pj.job_status = 'failed'
|
||||
ORDER BY
|
||||
tv.name ASC, wb.build_number DESC;
|
||||
|
||||
-- name: UpdateWorkspaceBuildFlagsByID :exec
|
||||
UPDATE
|
||||
workspace_builds
|
||||
SET
|
||||
has_ai_task = @has_ai_task,
|
||||
ai_task_sidebar_app_id = @sidebar_app_id,
|
||||
has_external_agent = @has_external_agent,
|
||||
updated_at = @updated_at::timestamptz
|
||||
WHERE id = @id::uuid;
|
||||
|
||||
@@ -117,7 +117,8 @@ SELECT
|
||||
latest_build.error as latest_build_error,
|
||||
latest_build.transition as latest_build_transition,
|
||||
latest_build.job_status as latest_build_status,
|
||||
latest_build.has_ai_task as latest_build_has_ai_task
|
||||
latest_build.has_ai_task as latest_build_has_ai_task,
|
||||
latest_build.has_external_agent as latest_build_has_external_agent
|
||||
FROM
|
||||
workspaces_expanded as workspaces
|
||||
JOIN
|
||||
@@ -130,6 +131,7 @@ LEFT JOIN LATERAL (
|
||||
workspace_builds.transition,
|
||||
workspace_builds.template_version_id,
|
||||
workspace_builds.has_ai_task,
|
||||
workspace_builds.has_external_agent,
|
||||
template_versions.name AS template_version_name,
|
||||
provisioner_jobs.id AS provisioner_job_id,
|
||||
provisioner_jobs.started_at,
|
||||
@@ -370,6 +372,12 @@ WHERE
|
||||
)) = (sqlc.narg('has_ai_task') :: boolean)
|
||||
ELSE true
|
||||
END
|
||||
-- Filter by has_external_agent in latest build
|
||||
AND CASE
|
||||
WHEN sqlc.narg('has_external_agent') :: boolean IS NOT NULL THEN
|
||||
latest_build.has_external_agent = sqlc.narg('has_external_agent') :: boolean
|
||||
ELSE true
|
||||
END
|
||||
-- Authorize Filter clause will be injected below in GetAuthorizedWorkspaces
|
||||
-- @authorize_filter
|
||||
), filtered_workspaces_order AS (
|
||||
@@ -439,7 +447,8 @@ WHERE
|
||||
'', -- latest_build_error
|
||||
'start'::workspace_transition, -- latest_build_transition
|
||||
'unknown'::provisioner_job_status, -- latest_build_status
|
||||
false -- latest_build_has_ai_task
|
||||
false, -- latest_build_has_ai_task
|
||||
false -- latest_build_has_external_agent
|
||||
WHERE
|
||||
@with_summary :: boolean = true
|
||||
), total_count AS (
|
||||
|
||||
Reference in New Issue
Block a user