MCPcopy Index your code
hub / github.com/coder/coder / resolveAutostart

Method resolveAutostart

coderd/workspaces.go:1994–2078  ·  view source on GitHub ↗

@Summary Resolve workspace autostart by id. @ID resolve-workspace-autostart-by-id @Security CoderSessionToken @Produce json @Tags Workspaces @Param workspace path string true "Workspace ID" format(uuid) @Success 200 {object} codersdk.ResolveAutostartResponse @Router /api/v2/workspaces/{workspace}/re

(rw http.ResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

1992// @Success 200 {object} codersdk.ResolveAutostartResponse
1993// @Router /api/v2/workspaces/{workspace}/resolve-autostart [get]
1994func (api *API) resolveAutostart(rw http.ResponseWriter, r *http.Request) {
1995 var (
1996 ctx = r.Context()
1997 workspace = httpmw.WorkspaceParam(r)
1998 )
1999
2000 template, err := api.Database.GetTemplateByID(ctx, workspace.TemplateID)
2001 if err != nil {
2002 httpapi.InternalServerError(rw, err)
2003 return
2004 }
2005
2006 templateAccessControl := (*(api.AccessControlStore.Load())).GetTemplateAccessControl(template)
2007 useActiveVersion := templateAccessControl.RequireActiveVersion || workspace.AutomaticUpdates == database.AutomaticUpdatesAlways
2008 if !useActiveVersion {
2009 httpapi.Write(ctx, rw, http.StatusOK, codersdk.ResolveAutostartResponse{})
2010 return
2011 }
2012
2013 build, err := api.Database.GetLatestWorkspaceBuildByWorkspaceID(ctx, workspace.ID)
2014 if err != nil {
2015 httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
2016 Message: "Internal error fetching latest workspace build.",
2017 Detail: err.Error(),
2018 })
2019 return
2020 }
2021
2022 if build.TemplateVersionID == template.ActiveVersionID {
2023 httpapi.Write(ctx, rw, http.StatusOK, codersdk.ResolveAutostartResponse{})
2024 return
2025 }
2026
2027 version, err := api.Database.GetTemplateVersionByID(ctx, template.ActiveVersionID)
2028 if err != nil {
2029 httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
2030 Message: "Internal error fetching template version.",
2031 Detail: err.Error(),
2032 })
2033 return
2034 }
2035
2036 dbVersionParams, err := api.Database.GetTemplateVersionParameters(ctx, version.ID)
2037 if err != nil {
2038 httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
2039 Message: "Internal error fetching template version parameters.",
2040 Detail: err.Error(),
2041 })
2042 return
2043 }
2044
2045 dbBuildParams, err := api.Database.GetWorkspaceBuildParameters(ctx, build.ID)
2046 if err != nil {
2047 httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
2048 Message: "Internal error fetching latest workspace build parameters.",
2049 Detail: err.Error(),
2050 })
2051 return

Callers

nothing calls this directly

Calls 15

ValidateResolveMethod · 0.95
WorkspaceParamFunction · 0.92
InternalServerErrorFunction · 0.92
WriteFunction · 0.92
WorkspaceBuildParametersFunction · 0.92
ContextMethod · 0.65
GetTemplateByIDMethod · 0.65

Tested by

no test coverage detected