Skip to content

Commit 9b96767

Browse files
committed
pr comments
1 parent 8e19b79 commit 9b96767

File tree

4 files changed

+54
-46
lines changed

4 files changed

+54
-46
lines changed

cli/restart.go

Lines changed: 6 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,10 @@ import (
77

88
"golang.org/x/xerrors"
99

10-
"github.com/coder/pretty"
11-
1210
"github.com/coder/coder/v2/cli/clibase"
1311
"github.com/coder/coder/v2/cli/cliui"
1412
"github.com/coder/coder/v2/codersdk"
13+
"github.com/coder/pretty"
1514
)
1615

1716
func (r *RootCmd) restart() *clibase.Cmd {
@@ -88,29 +87,14 @@ func (r *RootCmd) restart() *clibase.Cmd {
8887
// It's possible for a workspace build to fail due to the template requiring starting
8988
// workspaces with the active version.
9089
if cerr, ok := codersdk.AsError(err); ok && cerr.StatusCode() == http.StatusUnauthorized {
91-
template, err := client.Template(inv.Context(), workspace.TemplateID)
92-
if err != nil {
93-
return xerrors.Errorf("get template: %w", err)
94-
}
95-
96-
buildParameters, err := prepStartWorkspace(inv, client, prepStartWorkspaceArgs{
97-
Action: WorkspaceStart,
98-
TemplateVersionID: template.ActiveVersionID,
99-
90+
build, err = startWorkspaceActiveVersion(inv, client, startWorkspaceActiveVersionArgs{
91+
BuildOptions: buildOptions,
10092
LastBuildParameters: lastBuildParameters,
101-
102-
PromptBuildOptions: parameterFlags.promptBuildOptions,
103-
BuildOptions: buildOptions,
93+
PromptBuildOptions: parameterFlags.promptBuildOptions,
94+
Workspace: workspace,
10495
})
10596
if err != nil {
106-
return err
107-
}
108-
109-
req.RichParameterValues = buildParameters
110-
req.TemplateVersionID = template.ActiveVersionID
111-
build, err = client.CreateWorkspaceBuild(inv.Context(), workspace.ID, req)
112-
if err != nil {
113-
return err
97+
return xerrors.Errorf("start workspace with active template version: %w", err)
11498
}
11599
} else if err != nil {
116100
return err

cli/start.go

Lines changed: 46 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,8 @@ import (
55
"net/http"
66
"time"
77

8-
"golang.org/x/xerrors"
9-
108
"github.com/google/uuid"
9+
"golang.org/x/xerrors"
1110

1211
"github.com/coder/coder/v2/cli/clibase"
1312
"github.com/coder/coder/v2/cli/cliui"
@@ -66,29 +65,14 @@ func (r *RootCmd) start() *clibase.Cmd {
6665
// It's possible for a workspace build to fail due to the template requiring starting
6766
// workspaces with the active version.
6867
if cerr, ok := codersdk.AsError(err); ok && cerr.StatusCode() == http.StatusUnauthorized {
69-
template, err := client.Template(inv.Context(), workspace.TemplateID)
70-
if err != nil {
71-
return xerrors.Errorf("get template: %w", err)
72-
}
73-
74-
buildParameters, err = prepStartWorkspace(inv, client, prepStartWorkspaceArgs{
75-
Action: WorkspaceStart,
76-
TemplateVersionID: template.ActiveVersionID,
77-
68+
build, err = startWorkspaceActiveVersion(inv, client, startWorkspaceActiveVersionArgs{
69+
BuildOptions: buildOptions,
7870
LastBuildParameters: lastBuildParameters,
79-
80-
PromptBuildOptions: parameterFlags.promptBuildOptions,
81-
BuildOptions: buildOptions,
71+
PromptBuildOptions: parameterFlags.promptBuildOptions,
72+
Workspace: workspace,
8273
})
8374
if err != nil {
84-
return err
85-
}
86-
87-
req.RichParameterValues = buildParameters
88-
req.TemplateVersionID = template.ActiveVersionID
89-
build, err = client.CreateWorkspaceBuild(inv.Context(), workspace.ID, req)
90-
if err != nil {
91-
return err
75+
return xerrors.Errorf("start workspace with active template version: %w", err)
9276
}
9377
} else if err != nil {
9478
return err
@@ -138,3 +122,43 @@ func prepStartWorkspace(inv *clibase.Invocation, client *codersdk.Client, args p
138122
WithBuildOptions(args.BuildOptions)
139123
return resolver.Resolve(inv, args.Action, templateVersionParameters)
140124
}
125+
126+
type startWorkspaceActiveVersionArgs struct {
127+
BuildOptions []codersdk.WorkspaceBuildParameter
128+
LastBuildParameters []codersdk.WorkspaceBuildParameter
129+
PromptBuildOptions bool
130+
Workspace codersdk.Workspace
131+
}
132+
133+
func startWorkspaceActiveVersion(inv *clibase.Invocation, client *codersdk.Client, args startWorkspaceActiveVersionArgs) (codersdk.WorkspaceBuild, error) {
134+
_, _ = fmt.Fprintln(inv.Stdout, "Failed to restart with the template version from your last build. Policy may require you to restart with the current active template version.")
135+
136+
template, err := client.Template(inv.Context(), args.Workspace.TemplateID)
137+
if err != nil {
138+
return codersdk.WorkspaceBuild{}, xerrors.Errorf("get template: %w", err)
139+
}
140+
141+
buildParameters, err := prepStartWorkspace(inv, client, prepStartWorkspaceArgs{
142+
Action: WorkspaceStart,
143+
TemplateVersionID: template.ActiveVersionID,
144+
145+
LastBuildParameters: args.LastBuildParameters,
146+
147+
PromptBuildOptions: args.PromptBuildOptions,
148+
BuildOptions: args.BuildOptions,
149+
})
150+
if err != nil {
151+
return codersdk.WorkspaceBuild{}, err
152+
}
153+
154+
build, err := client.CreateWorkspaceBuild(inv.Context(), args.Workspace.ID, codersdk.CreateWorkspaceBuildRequest{
155+
Transition: codersdk.WorkspaceTransitionStart,
156+
RichParameterValues: buildParameters,
157+
TemplateVersionID: template.ActiveVersionID,
158+
})
159+
if err != nil {
160+
return codersdk.WorkspaceBuild{}, err
161+
}
162+
163+
return build, nil
164+
}

cli/templatecreate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ func (r *RootCmd) templateCreate() *clibase.Cmd {
6565

6666
if requireActiveVersion {
6767
if !entitlements.Features[codersdk.FeatureAccessControl].Enabled {
68-
return xerrors.Errorf("your license is not entitled to use template access control, so you cannot set --require-active-version")
68+
return xerrors.Errorf("your license is not entitled to use enterprise access control, so you cannot set --require-active-version")
6969
}
7070

7171
experiments, exErr := client.Experiments(inv.Context())

cli/templateedit.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ func (r *RootCmd) templateEdit() *clibase.Cmd {
6868

6969
if requireActiveVersion {
7070
if !entitlements.Features[codersdk.FeatureAccessControl].Enabled {
71-
return xerrors.Errorf("your license is not entitled to use template access control, so you cannot set --require-active-version")
71+
return xerrors.Errorf("your license is not entitled to use enterprise access control, so you cannot set --require-active-version")
7272
}
7373

7474
experiments, exErr := client.Experiments(inv.Context())

0 commit comments

Comments
 (0)