package coderd import ( "net/http" "net/url" "github.com/coder/coder/v2/buildinfo" "github.com/coder/coder/v2/coderd/httpapi" "github.com/coder/coder/v2/coderd/rbac" "github.com/coder/coder/v2/codersdk" ) // @Summary Get deployment config // @ID get-deployment-config // @Security CoderSessionToken // @Produce json // @Tags General // @Success 200 {object} codersdk.DeploymentConfig // @Router /deployment/config [get] func (api *API) deploymentValues(rw http.ResponseWriter, r *http.Request) { if !api.Authorize(r, rbac.ActionRead, rbac.ResourceDeploymentValues) { httpapi.Forbidden(rw) return } values, err := api.DeploymentValues.WithoutSecrets() if err != nil { httpapi.InternalServerError(rw, err) return } httpapi.Write( r.Context(), rw, http.StatusOK, codersdk.DeploymentConfig{ Values: values, Options: api.DeploymentOptions, }, ) } // @Summary Get deployment stats // @ID get-deployment-stats // @Security CoderSessionToken // @Produce json // @Tags General // @Success 200 {object} codersdk.DeploymentStats // @Router /deployment/stats [get] func (api *API) deploymentStats(rw http.ResponseWriter, r *http.Request) { if !api.Authorize(r, rbac.ActionRead, rbac.ResourceDeploymentStats) { httpapi.Forbidden(rw) return } stats, ok := api.metricsCache.DeploymentStats() if !ok { httpapi.Write(r.Context(), rw, http.StatusBadRequest, codersdk.Response{ Message: "Deployment stats are still processing!", }) return } httpapi.Write(r.Context(), rw, http.StatusOK, stats) } // @Summary Build info // @ID build-info // @Produce json // @Tags General // @Success 200 {object} codersdk.BuildInfoResponse // @Router /buildinfo [get] func buildInfo(accessURL *url.URL, upgradeMessage string) http.HandlerFunc { return func(rw http.ResponseWriter, r *http.Request) { httpapi.Write(r.Context(), rw, http.StatusOK, codersdk.BuildInfoResponse{ ExternalURL: buildinfo.ExternalURL(), Version: buildinfo.Version(), AgentAPIVersion: AgentAPIVersionREST, DashboardURL: accessURL.String(), WorkspaceProxy: false, UpgradeMessage: upgradeMessage, }) } } // @Summary SSH Config // @ID ssh-config // @Security CoderSessionToken // @Produce json // @Tags General // @Success 200 {object} codersdk.SSHConfigResponse // @Router /deployment/ssh [get] func (api *API) sshConfig(rw http.ResponseWriter, r *http.Request) { httpapi.Write(r.Context(), rw, http.StatusOK, api.SSHConfig) }