Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit68a6c99

Browse files
committed
Merge branch 'main' into abhineetjain/create-workspace-errors
2 parentsce2b2f3 +bd785dd commit68a6c99

File tree

32 files changed

+1500
-231
lines changed

32 files changed

+1500
-231
lines changed

‎cli/update.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ func update() *cobra.Command {
1818

1919
cmd:=&cobra.Command{
2020
Annotations:workspaceCommand,
21-
Use:"update",
21+
Use:"update <workspace>",
22+
Args:cobra.ExactArgs(1),
2223
Short:"Update a workspace to the latest template version",
2324
RunE:func(cmd*cobra.Command,args []string)error {
2425
client,err:=createClient(cmd)

‎cli/update_test.go

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
package cli_test
2+
3+
import (
4+
"context"
5+
"fmt"
6+
"testing"
7+
8+
"github.com/stretchr/testify/assert"
9+
"github.com/stretchr/testify/require"
10+
11+
"github.com/coder/coder/cli/clitest"
12+
"github.com/coder/coder/coderd/coderdtest"
13+
"github.com/coder/coder/codersdk"
14+
"github.com/coder/coder/provisioner/echo"
15+
"github.com/coder/coder/pty/ptytest"
16+
)
17+
18+
funcTestUpdate(t*testing.T) {
19+
t.Parallel()
20+
21+
// Test that the function does not panic on missing arg.
22+
t.Run("NoArgs",func(t*testing.T) {
23+
t.Parallel()
24+
25+
cmd,_:=clitest.New(t,"update")
26+
err:=cmd.Execute()
27+
require.Error(t,err)
28+
})
29+
30+
t.Run("OK",func(t*testing.T) {
31+
t.Parallel()
32+
33+
client:=coderdtest.New(t,&coderdtest.Options{IncludeProvisionerD:true})
34+
user:=coderdtest.CreateFirstUser(t,client)
35+
version1:=coderdtest.CreateTemplateVersion(t,client,user.OrganizationID,nil)
36+
37+
coderdtest.AwaitTemplateVersionJob(t,client,version1.ID)
38+
template:=coderdtest.CreateTemplate(t,client,user.OrganizationID,version1.ID)
39+
40+
cmd,root:=clitest.New(t,"create",
41+
"my-workspace",
42+
"--template",template.Name,
43+
"-y",
44+
)
45+
clitest.SetupConfig(t,client,root)
46+
47+
err:=cmd.Execute()
48+
require.NoError(t,err)
49+
50+
ws,err:=client.WorkspaceByOwnerAndName(context.Background(),"testuser","my-workspace", codersdk.WorkspaceOptions{})
51+
require.NoError(t,err)
52+
require.Equal(t,version1.ID.String(),ws.LatestBuild.TemplateVersionID.String())
53+
54+
version2:=coderdtest.UpdateTemplateVersion(t,client,user.OrganizationID,&echo.Responses{
55+
Parse:echo.ParseComplete,
56+
Provision:echo.ProvisionComplete,
57+
ProvisionDryRun:echo.ProvisionComplete,
58+
},template.ID)
59+
_=coderdtest.AwaitTemplateVersionJob(t,client,version2.ID)
60+
61+
err=client.UpdateActiveTemplateVersion(context.Background(),template.ID, codersdk.UpdateActiveTemplateVersion{
62+
ID:version2.ID,
63+
})
64+
require.NoError(t,err)
65+
66+
cmd,root=clitest.New(t,"update",ws.Name)
67+
clitest.SetupConfig(t,client,root)
68+
69+
err=cmd.Execute()
70+
require.NoError(t,err)
71+
72+
ws,err=client.WorkspaceByOwnerAndName(context.Background(),"testuser","my-workspace", codersdk.WorkspaceOptions{})
73+
require.NoError(t,err)
74+
require.Equal(t,version2.ID.String(),ws.LatestBuild.TemplateVersionID.String())
75+
})
76+
77+
t.Run("WithParameter",func(t*testing.T) {
78+
t.Parallel()
79+
80+
client:=coderdtest.New(t,&coderdtest.Options{IncludeProvisionerD:true})
81+
user:=coderdtest.CreateFirstUser(t,client)
82+
version1:=coderdtest.CreateTemplateVersion(t,client,user.OrganizationID,nil)
83+
84+
coderdtest.AwaitTemplateVersionJob(t,client,version1.ID)
85+
template:=coderdtest.CreateTemplate(t,client,user.OrganizationID,version1.ID)
86+
87+
cmd,root:=clitest.New(t,"create",
88+
"my-workspace",
89+
"--template",template.Name,
90+
"-y",
91+
)
92+
clitest.SetupConfig(t,client,root)
93+
94+
err:=cmd.Execute()
95+
require.NoError(t,err)
96+
97+
ws,err:=client.WorkspaceByOwnerAndName(context.Background(),"testuser","my-workspace", codersdk.WorkspaceOptions{})
98+
require.NoError(t,err)
99+
require.Equal(t,version1.ID.String(),ws.LatestBuild.TemplateVersionID.String())
100+
101+
defaultValue:="something"
102+
version2:=coderdtest.UpdateTemplateVersion(t,client,user.OrganizationID,&echo.Responses{
103+
Parse:createTestParseResponseWithDefault(defaultValue),
104+
Provision:echo.ProvisionComplete,
105+
ProvisionDryRun:echo.ProvisionComplete,
106+
},template.ID)
107+
coderdtest.AwaitTemplateVersionJob(t,client,version2.ID)
108+
109+
err=client.UpdateActiveTemplateVersion(context.Background(),template.ID, codersdk.UpdateActiveTemplateVersion{
110+
ID:version2.ID,
111+
})
112+
require.NoError(t,err)
113+
114+
cmd,root=clitest.New(t,"update",ws.Name)
115+
clitest.SetupConfig(t,client,root)
116+
117+
pty:=ptytest.New(t)
118+
cmd.SetIn(pty.Input())
119+
cmd.SetOut(pty.Output())
120+
121+
doneChan:=make(chanstruct{})
122+
gofunc() {
123+
deferclose(doneChan)
124+
err:=cmd.Execute()
125+
assert.NoError(t,err)
126+
}()
127+
128+
matches:= []string{
129+
fmt.Sprintf("Enter a value (default: %q):",defaultValue),"bingo",
130+
"Enter a value:","boingo",
131+
}
132+
fori:=0;i<len(matches);i+=2 {
133+
match:=matches[i]
134+
value:=matches[i+1]
135+
pty.ExpectMatch(match)
136+
pty.WriteLine(value)
137+
}
138+
139+
<-doneChan
140+
})
141+
}

‎coder.service

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[Unit]
22
Description="Coder - Self-hosted developer workspaces on your infra"
3-
Documentation=https://coder.com/docs/
3+
Documentation=https://coder.com/docs/coder-oss
44
Requires=network-online.target
55
After=network-online.target
66
ConditionFileNotEmpty=/etc/coder.d/coder.env

‎coderd/database/databasefake/databasefake.go

Lines changed: 75 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -26,21 +26,22 @@ func New() database.Store {
2626
organizations:make([]database.Organization,0),
2727
users:make([]database.User,0),
2828

29-
auditLogs:make([]database.AuditLog,0),
30-
files:make([]database.File,0),
31-
gitSSHKey:make([]database.GitSSHKey,0),
32-
parameterSchemas:make([]database.ParameterSchema,0),
33-
parameterValues:make([]database.ParameterValue,0),
34-
provisionerDaemons:make([]database.ProvisionerDaemon,0),
35-
provisionerJobAgents:make([]database.WorkspaceAgent,0),
36-
provisionerJobLogs:make([]database.ProvisionerJobLog,0),
37-
provisionerJobResources:make([]database.WorkspaceResource,0),
38-
provisionerJobs:make([]database.ProvisionerJob,0),
39-
templateVersions:make([]database.TemplateVersion,0),
40-
templates:make([]database.Template,0),
41-
workspaceBuilds:make([]database.WorkspaceBuild,0),
42-
workspaceApps:make([]database.WorkspaceApp,0),
43-
workspaces:make([]database.Workspace,0),
29+
auditLogs:make([]database.AuditLog,0),
30+
files:make([]database.File,0),
31+
gitSSHKey:make([]database.GitSSHKey,0),
32+
parameterSchemas:make([]database.ParameterSchema,0),
33+
parameterValues:make([]database.ParameterValue,0),
34+
provisionerDaemons:make([]database.ProvisionerDaemon,0),
35+
provisionerJobAgents:make([]database.WorkspaceAgent,0),
36+
provisionerJobLogs:make([]database.ProvisionerJobLog,0),
37+
provisionerJobResources:make([]database.WorkspaceResource,0),
38+
provisionerJobResourceMetadata:make([]database.WorkspaceResourceMetadatum,0),
39+
provisionerJobs:make([]database.ProvisionerJob,0),
40+
templateVersions:make([]database.TemplateVersion,0),
41+
templates:make([]database.Template,0),
42+
workspaceBuilds:make([]database.WorkspaceBuild,0),
43+
workspaceApps:make([]database.WorkspaceApp,0),
44+
workspaces:make([]database.Workspace,0),
4445
},
4546
}
4647
}
@@ -74,21 +75,22 @@ type data struct {
7475
users []database.User
7576

7677
// New tables
77-
auditLogs []database.AuditLog
78-
files []database.File
79-
gitSSHKey []database.GitSSHKey
80-
parameterSchemas []database.ParameterSchema
81-
parameterValues []database.ParameterValue
82-
provisionerDaemons []database.ProvisionerDaemon
83-
provisionerJobAgents []database.WorkspaceAgent
84-
provisionerJobLogs []database.ProvisionerJobLog
85-
provisionerJobResources []database.WorkspaceResource
86-
provisionerJobs []database.ProvisionerJob
87-
templateVersions []database.TemplateVersion
88-
templates []database.Template
89-
workspaceBuilds []database.WorkspaceBuild
90-
workspaceApps []database.WorkspaceApp
91-
workspaces []database.Workspace
78+
auditLogs []database.AuditLog
79+
files []database.File
80+
gitSSHKey []database.GitSSHKey
81+
parameterSchemas []database.ParameterSchema
82+
parameterValues []database.ParameterValue
83+
provisionerDaemons []database.ProvisionerDaemon
84+
provisionerJobAgents []database.WorkspaceAgent
85+
provisionerJobLogs []database.ProvisionerJobLog
86+
provisionerJobResources []database.WorkspaceResource
87+
provisionerJobResourceMetadata []database.WorkspaceResourceMetadatum
88+
provisionerJobs []database.ProvisionerJob
89+
templateVersions []database.TemplateVersion
90+
templates []database.Template
91+
workspaceBuilds []database.WorkspaceBuild
92+
workspaceApps []database.WorkspaceApp
93+
workspaces []database.Workspace
9294

9395
deploymentIDstring
9496
}
@@ -1331,6 +1333,34 @@ func (q *fakeQuerier) GetWorkspaceResourcesCreatedAfter(_ context.Context, after
13311333
returnresources,nil
13321334
}
13331335

1336+
func (q*fakeQuerier)GetWorkspaceResourceMetadataByResourceID(_ context.Context,id uuid.UUID) ([]database.WorkspaceResourceMetadatum,error) {
1337+
q.mutex.RLock()
1338+
deferq.mutex.RUnlock()
1339+
1340+
metadata:=make([]database.WorkspaceResourceMetadatum,0)
1341+
for_,metadatum:=rangeq.provisionerJobResourceMetadata {
1342+
ifmetadatum.WorkspaceResourceID.String()==id.String() {
1343+
metadata=append(metadata,metadatum)
1344+
}
1345+
}
1346+
returnmetadata,nil
1347+
}
1348+
1349+
func (q*fakeQuerier)GetWorkspaceResourceMetadataByResourceIDs(_ context.Context,ids []uuid.UUID) ([]database.WorkspaceResourceMetadatum,error) {
1350+
q.mutex.RLock()
1351+
deferq.mutex.RUnlock()
1352+
1353+
metadata:=make([]database.WorkspaceResourceMetadatum,0)
1354+
for_,metadatum:=rangeq.provisionerJobResourceMetadata {
1355+
for_,id:=rangeids {
1356+
ifmetadatum.WorkspaceResourceID.String()==id.String() {
1357+
metadata=append(metadata,metadatum)
1358+
}
1359+
}
1360+
}
1361+
returnmetadata,nil
1362+
}
1363+
13341364
func (q*fakeQuerier)GetProvisionerJobsByIDs(_ context.Context,ids []uuid.UUID) ([]database.ProvisionerJob,error) {
13351365
q.mutex.RLock()
13361366
deferq.mutex.RUnlock()
@@ -1659,6 +1689,21 @@ func (q *fakeQuerier) InsertWorkspaceResource(_ context.Context, arg database.In
16591689
returnresource,nil
16601690
}
16611691

1692+
func (q*fakeQuerier)InsertWorkspaceResourceMetadata(_ context.Context,arg database.InsertWorkspaceResourceMetadataParams) (database.WorkspaceResourceMetadatum,error) {
1693+
q.mutex.Lock()
1694+
deferq.mutex.Unlock()
1695+
1696+
//nolint:gosimple
1697+
metadatum:= database.WorkspaceResourceMetadatum{
1698+
WorkspaceResourceID:arg.WorkspaceResourceID,
1699+
Key:arg.Key,
1700+
Value:arg.Value,
1701+
Sensitive:arg.Sensitive,
1702+
}
1703+
q.provisionerJobResourceMetadata=append(q.provisionerJobResourceMetadata,metadatum)
1704+
returnmetadatum,nil
1705+
}
1706+
16621707
func (q*fakeQuerier)InsertUser(_ context.Context,arg database.InsertUserParams) (database.User,error) {
16631708
q.mutex.Lock()
16641709
deferq.mutex.Unlock()

‎coderd/database/dump.sql

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
DROPTABLE IF EXISTS workspace_resource_metadata;
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CREATETABLEIF NOT EXISTS workspace_resource_metadata (
2+
workspace_resource_id uuidNOT NULL,
3+
keyvarchar(1024)NOT NULL,
4+
valuevarchar(65536),
5+
sensitivebooleanNOT NULL,
6+
PRIMARY KEY (workspace_resource_id, key),
7+
FOREIGN KEY (workspace_resource_id)REFERENCES workspace_resources (id)ON DELETE CASCADE
8+
);

‎coderd/database/models.go

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/querier.go

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp