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

Commitf2fcc25

Browse files
committed
Merge branch 'main' into provisionerservice
2 parentsce4a9fb +2b922b1 commitf2fcc25

File tree

8 files changed

+74
-72
lines changed

8 files changed

+74
-72
lines changed

‎.github/workflows/coder.yaml‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ on:
1010

1111
pull_request:
1212
branches:
13-
-main
14-
-"release/*"
13+
-"*"
1514

1615
workflow_dispatch:
1716

@@ -160,7 +159,7 @@ jobs:
160159
run:
161160
DB=true gotestsum --jsonfile="gotests.json" --packages="./..." --
162161
-covermode=atomic -coverprofile="gotests.coverage" -timeout=3m
163-
-count=1 -race -parallel=2
162+
-count=1 -race -parallel=1
164163

165164
-uses:codecov/codecov-action@v2
166165
with:

‎.golangci.yml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,7 @@ linters:
241241
-staticcheck
242242
-structcheck
243243
-tenv
244+
-tparallel
244245
-typecheck
245246
-unconvert
246247
-unused

‎coderd/projectparameter/projectparameter.go‎

Lines changed: 51 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -34,159 +34,142 @@ type Value struct {
3434
}
3535

3636
// Compute accepts a scope in which parameter values are sourced.
37-
// These sources are iterated in ahierarchial fashion to determine
38-
// the runtime parametervaues for a project.
37+
// These sources are iterated in ahierarchical fashion to determine
38+
// the runtime parametervalues for a project.
3939
funcCompute(ctx context.Context,db database.Store,scopeScope) ([]Value,error) {
4040
compute:=&compute{
41-
parameterByName:map[string]Value{},
42-
projectParameterByName:map[string]database.ProjectParameter{},
41+
db:db,
42+
computedParameterByName:map[string]Value{},
43+
projectHistoryParametersByName:map[string]database.ProjectParameter{},
4344
}
4445

4546
// All parameters for the project version!
4647
projectHistoryParameters,err:=db.GetProjectParametersByHistoryID(ctx,scope.ProjectHistoryID)
4748
iferrors.Is(err,sql.ErrNoRows) {
48-
// It's valid to have no parameters!
49+
// This occurs when the project history has defined
50+
// no parameters, so we have nothing to compute!
4951
return []Value{},nil
5052
}
5153
iferr!=nil {
5254
returnnil,xerrors.Errorf("get project parameters: %w",err)
5355
}
54-
for_,projectParameter:=rangeprojectHistoryParameters {
55-
compute.projectParameterByName[projectParameter.Name]=projectParameter
56+
for_,projectHistoryParameter:=rangeprojectHistoryParameters {
57+
compute.projectHistoryParametersByName[projectHistoryParameter.Name]=projectHistoryParameter
5658
}
5759

5860
// Organization parameters come first!
59-
organizationParameters,err:=db.GetParameterValuesByScope(ctx, database.GetParameterValuesByScopeParams{
61+
err=compute.inject(ctx, database.GetParameterValuesByScopeParams{
6062
Scope:database.ParameterScopeOrganization,
6163
ScopeID:scope.OrganizationID,
6264
})
63-
iferrors.Is(err,sql.ErrNoRows) {
64-
err=nil
65-
}
6665
iferr!=nil {
67-
returnnil,xerrors.Errorf("get organization parameters: %w",err)
68-
}
69-
err=compute.inject(organizationParameters)
70-
iferr!=nil {
71-
returnnil,xerrors.Errorf("inject organization parameters: %w",err)
66+
returnnil,err
7267
}
7368

7469
// Default project parameter values come second!
75-
for_,projectParameter:=rangeprojectHistoryParameters {
76-
if!projectParameter.DefaultSourceValue.Valid {
70+
for_,projectHistoryParameter:=rangeprojectHistoryParameters {
71+
if!projectHistoryParameter.DefaultSourceValue.Valid {
7772
continue
7873
}
79-
if!projectParameter.DefaultDestinationValue.Valid {
74+
if!projectHistoryParameter.DefaultDestinationValue.Valid {
8075
continue
8176
}
8277

83-
destinationScheme,err:=convertDestinationScheme(projectParameter.DefaultDestinationScheme)
78+
destinationScheme,err:=convertDestinationScheme(projectHistoryParameter.DefaultDestinationScheme)
8479
iferr!=nil {
85-
returnnil,xerrors.Errorf("convert default destination scheme for project parameter %q: %w",projectParameter.Name,err)
80+
returnnil,xerrors.Errorf("convert default destination scheme for projecthistoryparameter %q: %w",projectHistoryParameter.Name,err)
8681
}
8782

88-
switchprojectParameter.DefaultSourceScheme {
83+
switchprojectHistoryParameter.DefaultSourceScheme {
8984
casedatabase.ParameterSourceSchemeData:
90-
compute.parameterByName[projectParameter.Name]=Value{
85+
compute.computedParameterByName[projectHistoryParameter.Name]=Value{
9186
Proto:&proto.ParameterValue{
9287
DestinationScheme:destinationScheme,
93-
Name:projectParameter.DefaultDestinationValue.String,
94-
Value:projectParameter.DefaultSourceValue.String,
88+
Name:projectHistoryParameter.DefaultDestinationValue.String,
89+
Value:projectHistoryParameter.DefaultSourceValue.String,
9590
},
9691
DefaultValue:true,
9792
Scope:database.ParameterScopeProject,
9893
ScopeID:scope.ProjectID.String(),
9994
}
10095
default:
101-
returnnil,xerrors.Errorf("unsupported source scheme for project parameter %q: %q",projectParameter.Name,string(projectParameter.DefaultSourceScheme))
96+
returnnil,xerrors.Errorf("unsupported source scheme for projecthistoryparameter %q: %q",projectHistoryParameter.Name,string(projectHistoryParameter.DefaultSourceScheme))
10297
}
10398
}
10499

105100
// Project parameters come third!
106-
projectParameters,err:=db.GetParameterValuesByScope(ctx, database.GetParameterValuesByScopeParams{
101+
err=compute.inject(ctx, database.GetParameterValuesByScopeParams{
107102
Scope:database.ParameterScopeProject,
108103
ScopeID:scope.ProjectID.String(),
109104
})
110-
iferrors.Is(err,sql.ErrNoRows) {
111-
err=nil
112-
}
113-
iferr!=nil {
114-
returnnil,xerrors.Errorf("get project parameters: %w",err)
115-
}
116-
err=compute.inject(projectParameters)
117105
iferr!=nil {
118-
returnnil,xerrors.Errorf("inject project parameters: %w",err)
106+
returnnil,err
119107
}
120108

121109
// User parameters come fourth!
122-
userParameters,err:=db.GetParameterValuesByScope(ctx, database.GetParameterValuesByScopeParams{
110+
err=compute.inject(ctx, database.GetParameterValuesByScopeParams{
123111
Scope:database.ParameterScopeUser,
124112
ScopeID:scope.UserID,
125113
})
126-
iferrors.Is(err,sql.ErrNoRows) {
127-
err=nil
128-
}
129114
iferr!=nil {
130-
returnnil,xerrors.Errorf("get user parameters: %w",err)
131-
}
132-
err=compute.inject(userParameters)
133-
iferr!=nil {
134-
returnnil,xerrors.Errorf("inject user parameters: %w",err)
115+
returnnil,err
135116
}
136117

137118
// Workspace parameters come last!
138-
workspaceParameters,err:=db.GetParameterValuesByScope(ctx, database.GetParameterValuesByScopeParams{
119+
err=compute.inject(ctx, database.GetParameterValuesByScopeParams{
139120
Scope:database.ParameterScopeWorkspace,
140121
ScopeID:scope.WorkspaceID.String(),
141122
})
142-
iferrors.Is(err,sql.ErrNoRows) {
143-
err=nil
144-
}
145-
iferr!=nil {
146-
returnnil,xerrors.Errorf("get workspace parameters: %w",err)
147-
}
148-
err=compute.inject(workspaceParameters)
149123
iferr!=nil {
150-
returnnil,xerrors.Errorf("inject workspace parameters: %w",err)
124+
returnnil,err
151125
}
152126

153-
for_,projectParameter:=rangecompute.projectParameterByName {
154-
if_,ok:=compute.parameterByName[projectParameter.Name];ok {
127+
for_,projectHistoryParameter:=rangecompute.projectHistoryParametersByName {
128+
if_,ok:=compute.computedParameterByName[projectHistoryParameter.Name];ok {
155129
continue
156130
}
157131
returnnil,NoValueError{
158-
ParameterID:projectParameter.ID,
159-
ParameterName:projectParameter.Name,
132+
ParameterID:projectHistoryParameter.ID,
133+
ParameterName:projectHistoryParameter.Name,
160134
}
161135
}
162136

163-
values:=make([]Value,0,len(compute.parameterByName))
164-
for_,value:=rangecompute.parameterByName {
137+
values:=make([]Value,0,len(compute.computedParameterByName))
138+
for_,value:=rangecompute.computedParameterByName {
165139
values=append(values,value)
166140
}
167141
returnvalues,nil
168142
}
169143

170144
typecomputestruct {
171-
parameterByNamemap[string]Value
172-
projectParameterByNamemap[string]database.ProjectParameter
145+
db database.Store
146+
computedParameterByNamemap[string]Value
147+
projectHistoryParametersByNamemap[string]database.ProjectParameter
173148
}
174149

175150
// Validates and computes the value for parameters; setting the value on "parameterByName".
176-
func (c*compute)inject(scopedParameters []database.ParameterValue)error {
151+
func (c*compute)inject(ctx context.Context,scopeParams database.GetParameterValuesByScopeParams)error {
152+
scopedParameters,err:=c.db.GetParameterValuesByScope(ctx,scopeParams)
153+
iferrors.Is(err,sql.ErrNoRows) {
154+
err=nil
155+
}
156+
iferr!=nil {
157+
returnxerrors.Errorf("get %s parameters: %w",scopeParams.Scope,err)
158+
}
159+
177160
for_,scopedParameter:=rangescopedParameters {
178-
projectParameter,hasProjectParameter:=c.projectParameterByName[scopedParameter.Name]
179-
if!hasProjectParameter {
161+
projectHistoryParameter,hasProjectHistoryParameter:=c.projectHistoryParametersByName[scopedParameter.Name]
162+
if!hasProjectHistoryParameter {
180163
// Don't inject parameters that aren't defined by the project.
181164
continue
182165
}
183166

184-
_,hasExistingParameter:=c.parameterByName[scopedParameter.Name]
167+
_,hasExistingParameter:=c.computedParameterByName[scopedParameter.Name]
185168
ifhasExistingParameter {
186169
// If a parameter already exists, check if this variable can override it.
187170
// Injection hierarchy is the responsibility of the caller. This check ensures
188171
// project parameters cannot be overridden if already set.
189-
if!projectParameter.AllowOverrideSource&&scopedParameter.Scope!=database.ParameterScopeProject {
172+
if!projectHistoryParameter.AllowOverrideSource&&scopedParameter.Scope!=database.ParameterScopeProject {
190173
continue
191174
}
192175
}
@@ -198,15 +181,15 @@ func (c *compute) inject(scopedParameters []database.ParameterValue) error {
198181

199182
switchscopedParameter.SourceScheme {
200183
casedatabase.ParameterSourceSchemeData:
201-
c.parameterByName[projectParameter.Name]=Value{
184+
c.computedParameterByName[projectHistoryParameter.Name]=Value{
202185
Proto:&proto.ParameterValue{
203186
DestinationScheme:destinationScheme,
204187
Name:scopedParameter.SourceValue,
205188
Value:scopedParameter.DestinationValue,
206189
},
207190
}
208191
default:
209-
returnxerrors.Errorf("unsupported source scheme: %q",string(projectParameter.DefaultSourceScheme))
192+
returnxerrors.Errorf("unsupported source scheme: %q",string(projectHistoryParameter.DefaultSourceScheme))
210193
}
211194
}
212195
returnnil

‎database/pubsub_memory_test.go‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ func TestPubsubMemory(t *testing.T) {
1414
t.Parallel()
1515

1616
t.Run("Memory",func(t*testing.T) {
17+
t.Parallel()
18+
1719
pubsub:=database.NewPubsubInMemory()
1820
event:="test"
1921
data:="testing"

‎database/query.sql‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@
44
-- Run "make gen" to generate models and query functions.
55
;
66

7+
-- Acquires the lock for a single job that isn't started, completed,
8+
-- cancelled, and that matches an array of provisioner types.
9+
--
10+
-- SKIP LOCKED is used to jump over locked rows. This prevents
11+
-- multiple provisioners from acquiring the same jobs. See:
12+
-- https://www.postgresql.org/docs/9.5/sql-select.html#SQL-FOR-UPDATE-SHARE
713
-- name: AcquireProvisionerJob :one
814
UPDATE
915
provisioner_job

‎database/query.sql.go‎

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

‎provisioner/terraform/provision_test.go‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,9 @@ func TestProvision(t *testing.T) {
123123
require.NoError(t,err)
124124
for {
125125
msg,err:=response.Recv()
126+
ifmsg!=nil&&msg.GetLog()!=nil {
127+
continue
128+
}
126129
iftestCase.Error {
127130
require.Error(t,err)
128131
return

‎provisionersdk/serve_test.go‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@ func TestProvisionerSDK(t *testing.T) {
3535
}()
3636

3737
api:=proto.NewDRPCProvisionerClient(drpcconn.New(client))
38-
_,err:=api.Parse(context.Background(),&proto.Parse_Request{})
38+
stream,err:=api.Parse(context.Background(),&proto.Parse_Request{})
39+
require.NoError(t,err)
40+
_,err=stream.Recv()
3941
require.Equal(t,drpcerr.Unimplemented,int(drpcerr.Code(err)))
4042
})
4143
t.Run("ServeClosedPipe",func(t*testing.T) {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp