@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)
| 1992 | // @Success 200 {object} codersdk.ResolveAutostartResponse |
| 1993 | // @Router /api/v2/workspaces/{workspace}/resolve-autostart [get] |
| 1994 | func (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 |
nothing calls this directly
no test coverage detected