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

Function buildWorkspaceStartRequest

cli/start.go:143–205  ·  view source on GitHub ↗
(inv *serpent.Invocation, client *codersdk.Client, workspace codersdk.Workspace, parameterFlags workspaceParameterFlags, buildFlags buildFlags, action WorkspaceCLIAction)

Source from the content-addressed store, hash-verified

141}
142
143func buildWorkspaceStartRequest(inv *serpent.Invocation, client *codersdk.Client, workspace codersdk.Workspace, parameterFlags workspaceParameterFlags, buildFlags buildFlags, action WorkspaceCLIAction) (codersdk.CreateWorkspaceBuildRequest, error) {
144 version := workspace.LatestBuild.TemplateVersionID
145
146 if workspace.AutomaticUpdates == codersdk.AutomaticUpdatesAlways || workspace.TemplateRequireActiveVersion || action == WorkspaceUpdate {
147 version = workspace.TemplateActiveVersionID
148 if version != workspace.LatestBuild.TemplateVersionID {
149 action = WorkspaceUpdate
150 }
151 }
152
153 lastBuildParameters, err := client.WorkspaceBuildParameters(inv.Context(), workspace.LatestBuild.ID)
154 if err != nil {
155 return codersdk.CreateWorkspaceBuildRequest{}, err
156 }
157
158 ephemeralParameters, err := asWorkspaceBuildParameters(parameterFlags.ephemeralParameters)
159 if err != nil {
160 return codersdk.CreateWorkspaceBuildRequest{}, xerrors.Errorf("unable to parse build options: %w", err)
161 }
162
163 cliRichParameters, err := asWorkspaceBuildParameters(parameterFlags.richParameters)
164 if err != nil {
165 return codersdk.CreateWorkspaceBuildRequest{}, xerrors.Errorf("unable to parse rich parameters: %w", err)
166 }
167
168 cliRichParameterDefaults, err := asWorkspaceBuildParameters(parameterFlags.richParameterDefaults)
169 if err != nil {
170 return codersdk.CreateWorkspaceBuildRequest{}, xerrors.Errorf("unable to parse rich parameter defaults: %w", err)
171 }
172
173 buildParameters, err := prepWorkspaceBuild(inv, client, prepWorkspaceBuildArgs{
174 Action: action,
175 TemplateVersionID: version,
176 NewWorkspaceName: workspace.Name,
177 LastBuildParameters: lastBuildParameters,
178 Owner: workspace.OwnerID.String(),
179
180 PromptEphemeralParameters: parameterFlags.promptEphemeralParameters,
181 EphemeralParameters: ephemeralParameters,
182 PromptRichParameters: parameterFlags.promptRichParameters,
183 RichParameters: cliRichParameters,
184 RichParameterFile: parameterFlags.richParameterFile,
185 RichParameterDefaults: cliRichParameterDefaults,
186 UseParameterDefaults: parameterFlags.useParameterDefaults,
187 })
188 if err != nil {
189 return codersdk.CreateWorkspaceBuildRequest{}, err
190 }
191
192 wbr := codersdk.CreateWorkspaceBuildRequest{
193 Transition: codersdk.WorkspaceTransitionStart,
194 RichParameterValues: buildParameters,
195 TemplateVersionID: version,
196 }
197 if buildFlags.provisionerLogDebug {
198 wbr.LogLevel = codersdk.ProvisionerLogLevelDebug
199 }
200 if buildFlags.reason != "" {

Callers 2

startWorkspaceFunction · 0.85
restartMethod · 0.85

Calls 7

prepWorkspaceBuildFunction · 0.85
ContextMethod · 0.65
ErrorfMethod · 0.45
StringMethod · 0.45

Tested by

no test coverage detected