Skip to content

Commit 3993283

Browse files
committed
Merge branch 'main' into fixresourceorder
2 parents 9708203 + 2a085d1 commit 3993283

File tree

66 files changed

+907
-395
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+907
-395
lines changed

cli/state.go

+13-12
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"fmt"
55
"io"
66
"os"
7+
"strconv"
78
"time"
89

910
"github.com/spf13/cobra"
@@ -22,7 +23,7 @@ func state() *cobra.Command {
2223
}
2324

2425
func statePull() *cobra.Command {
25-
var buildName string
26+
var buildNumber int
2627
cmd := &cobra.Command{
2728
Use: "pull <workspace> [file]",
2829
Args: cobra.MinimumNArgs(1),
@@ -31,15 +32,15 @@ func statePull() *cobra.Command {
3132
if err != nil {
3233
return err
3334
}
34-
workspace, err := namedWorkspace(cmd, client, args[0])
35-
if err != nil {
36-
return err
37-
}
3835
var build codersdk.WorkspaceBuild
39-
if buildName == "latest" {
36+
if buildNumber == 0 {
37+
workspace, err := namedWorkspace(cmd, client, args[0])
38+
if err != nil {
39+
return err
40+
}
4041
build = workspace.LatestBuild
4142
} else {
42-
build, err = client.WorkspaceBuildByName(cmd.Context(), workspace.ID, buildName)
43+
build, err = client.WorkspaceBuildByUsernameAndWorkspaceNameAndBuildNumber(cmd.Context(), codersdk.Me, args[0], strconv.Itoa(buildNumber))
4344
if err != nil {
4445
return err
4546
}
@@ -58,12 +59,12 @@ func statePull() *cobra.Command {
5859
return os.WriteFile(args[1], state, 0600)
5960
},
6061
}
61-
cmd.Flags().StringVarP(&buildName, "build", "b", "latest", "Specify a workspace build to target by name.")
62+
cmd.Flags().IntVarP(&buildNumber, "build", "b", 0, "Specify a workspace build to target by name.")
6263
return cmd
6364
}
6465

6566
func statePush() *cobra.Command {
66-
var buildName string
67+
var buildNumber int
6768
cmd := &cobra.Command{
6869
Use: "push <workspace> <file>",
6970
Args: cobra.ExactArgs(2),
@@ -77,10 +78,10 @@ func statePush() *cobra.Command {
7778
return err
7879
}
7980
var build codersdk.WorkspaceBuild
80-
if buildName == "latest" {
81+
if buildNumber == 0 {
8182
build = workspace.LatestBuild
8283
} else {
83-
build, err = client.WorkspaceBuildByName(cmd.Context(), workspace.ID, buildName)
84+
build, err = client.WorkspaceBuildByUsernameAndWorkspaceNameAndBuildNumber(cmd.Context(), codersdk.Me, args[0], strconv.Itoa(buildNumber))
8485
if err != nil {
8586
return err
8687
}
@@ -108,6 +109,6 @@ func statePush() *cobra.Command {
108109
return cliui.WorkspaceBuild(cmd.Context(), cmd.OutOrStderr(), client, build.ID, before)
109110
},
110111
}
111-
cmd.Flags().StringVarP(&buildName, "build", "b", "latest", "Specify a workspace build to target by name.")
112+
cmd.Flags().IntVarP(&buildNumber, "build", "b", 0, "Specify a workspace build to target by name.")
112113
return cmd
113114
}

cli/state_test.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"bytes"
55
"os"
66
"path/filepath"
7+
"strconv"
78
"strings"
89
"testing"
910

@@ -113,7 +114,7 @@ func TestStatePush(t *testing.T) {
113114
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
114115
workspace := coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID)
115116
coderdtest.AwaitWorkspaceBuildJob(t, client, workspace.LatestBuild.ID)
116-
cmd, root := clitest.New(t, "state", "push", "--build", workspace.LatestBuild.Name, workspace.Name, "-")
117+
cmd, root := clitest.New(t, "state", "push", "--build", strconv.Itoa(int(workspace.LatestBuild.BuildNumber)), workspace.Name, "-")
117118
clitest.SetupConfig(t, client, root)
118119
cmd.SetIn(strings.NewReader("some magic state"))
119120
err := cmd.Execute()

cli/templatecreate.go

+5
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"path/filepath"
77
"strings"
88
"time"
9+
"unicode/utf8"
910

1011
"github.com/briandowns/spinner"
1112
"github.com/spf13/cobra"
@@ -49,6 +50,10 @@ func templateCreate() *cobra.Command {
4950
templateName = args[0]
5051
}
5152

53+
if utf8.RuneCountInString(templateName) > 31 {
54+
return xerrors.Errorf("Template name must be less than 32 characters")
55+
}
56+
5257
_, err = client.TemplateByName(cmd.Context(), organization.ID, templateName)
5358
if err == nil {
5459
return xerrors.Errorf("A template already exists named %q!", templateName)

cli/templatecreate_test.go

+15
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,21 @@ func TestTemplateCreate(t *testing.T) {
241241
err = create()
242242
require.NoError(t, err, "Template must be recreated without error")
243243
})
244+
245+
t.Run("WithParameterExceedingCharLimit", func(t *testing.T) {
246+
t.Parallel()
247+
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
248+
coderdtest.CreateFirstUser(t, client)
249+
cmd, root := clitest.New(t, "templates", "create", "1234567890123456789012345678901234567891", "--test.provisioner", string(database.ProvisionerTypeEcho))
250+
clitest.SetupConfig(t, client, root)
251+
252+
execDone := make(chan error)
253+
go func() {
254+
execDone <- cmd.Execute()
255+
}()
256+
257+
require.EqualError(t, <-execDone, "Template name must be less than 32 characters")
258+
})
244259
}
245260

246261
func createTestParseResponse() []*proto.Parse_Response {

coderd/autobuild/executor/lifecycle_executor.go

-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66
"time"
77

88
"github.com/google/uuid"
9-
"github.com/moby/moby/pkg/namesgenerator"
109
"golang.org/x/sync/errgroup"
1110
"golang.org/x/xerrors"
1211

@@ -290,7 +289,6 @@ func build(ctx context.Context, store database.Store, workspace database.Workspa
290289
WorkspaceID: workspace.ID,
291290
TemplateVersionID: priorHistory.TemplateVersionID,
292291
BuildNumber: priorBuildNumber + 1,
293-
Name: namesgenerator.GetRandomName(1),
294292
ProvisionerState: priorHistory.ProvisionerState,
295293
InitiatorID: workspace.OwnerID,
296294
Transition: trans,

coderd/coderd.go

-1
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,6 @@ func New(options *Options) *API {
434434
r.Route("/builds", func(r chi.Router) {
435435
r.Get("/", api.workspaceBuilds)
436436
r.Post("/", api.postWorkspaceBuilds)
437-
r.Get("/{workspacebuildname}", api.workspaceBuildByName)
438437
})
439438
r.Route("/autostart", func(r chi.Router) {
440439
r.Put("/", api.putWorkspaceAutostart)

coderd/coderdtest/authtest.go

-5
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,6 @@ func NewAuthTester(ctx context.Context, t *testing.T, options *Options) *AuthTes
126126
"{workspace}": workspace.ID.String(),
127127
"{workspacebuild}": workspace.LatestBuild.ID.String(),
128128
"{workspacename}": workspace.Name,
129-
"{workspacebuildname}": workspace.LatestBuild.Name,
130129
"{workspaceagent}": workspaceResources[0].Agents[0].ID.String(),
131130
"{buildnumber}": strconv.FormatInt(int64(workspace.LatestBuild.BuildNumber), 10),
132131
"{template}": template.ID.String(),
@@ -211,10 +210,6 @@ func AGPLRoutes(a *AuthTester) (map[string]string, map[string]RouteCheck) {
211210
AssertObject: rbac.ResourceWorkspace,
212211
AssertAction: rbac.ActionRead,
213212
},
214-
"GET:/api/v2/workspaces/{workspace}/builds/{workspacebuildname}": {
215-
AssertAction: rbac.ActionRead,
216-
AssertObject: workspaceRBACObj,
217-
},
218213
"GET:/api/v2/workspacebuilds/{workspacebuild}": {
219214
AssertAction: rbac.ActionRead,
220215
AssertObject: workspaceRBACObj,

coderd/database/databasefake/databasefake.go

-17
Original file line numberDiff line numberDiff line change
@@ -774,22 +774,6 @@ func (q *fakeQuerier) GetWorkspaceBuildByWorkspaceID(_ context.Context,
774774
return history, nil
775775
}
776776

777-
func (q *fakeQuerier) GetWorkspaceBuildByWorkspaceIDAndName(_ context.Context, arg database.GetWorkspaceBuildByWorkspaceIDAndNameParams) (database.WorkspaceBuild, error) {
778-
q.mutex.RLock()
779-
defer q.mutex.RUnlock()
780-
781-
for _, workspaceBuild := range q.workspaceBuilds {
782-
if workspaceBuild.WorkspaceID.String() != arg.WorkspaceID.String() {
783-
continue
784-
}
785-
if !strings.EqualFold(workspaceBuild.Name, arg.Name) {
786-
continue
787-
}
788-
return workspaceBuild, nil
789-
}
790-
return database.WorkspaceBuild{}, sql.ErrNoRows
791-
}
792-
793777
func (q *fakeQuerier) GetWorkspaceBuildByWorkspaceIDAndBuildNumber(_ context.Context, arg database.GetWorkspaceBuildByWorkspaceIDAndBuildNumberParams) (database.WorkspaceBuild, error) {
794778
q.mutex.RLock()
795779
defer q.mutex.RUnlock()
@@ -1926,7 +1910,6 @@ func (q *fakeQuerier) InsertWorkspaceBuild(_ context.Context, arg database.Inser
19261910
CreatedAt: arg.CreatedAt,
19271911
UpdatedAt: arg.UpdatedAt,
19281912
WorkspaceID: arg.WorkspaceID,
1929-
Name: arg.Name,
19301913
TemplateVersionID: arg.TemplateVersionID,
19311914
BuildNumber: arg.BuildNumber,
19321915
Transition: arg.Transition,

coderd/database/dump.sql

-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ALTER TABLE workspace_builds
2+
ADD COLUMN name character varying(64) NOT NULL;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ALTER TABLE workspace_builds
2+
DROP COLUMN name;

coderd/database/models.go

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/querier.go

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)