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

Commit8a28112

Browse files
authored
feat: Add backend API support for resource metadata (#3242)
* Initial support for metadata in provisioner API and Terraform provisioner* add support for nullable metadata fields* handle metadata fields in provisionerd and API
1 parent8775192 commit8a28112

24 files changed

+1231
-214
lines changed

‎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.

‎coderd/database/queries.sql.go

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

‎coderd/database/queries/workspaceresources.sql

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,25 @@ INSERT INTO
2222
workspace_resources (id, created_at, job_id, transition, type, name)
2323
VALUES
2424
($1, $2, $3, $4, $5, $6) RETURNING*;
25+
26+
-- name: GetWorkspaceResourceMetadataByResourceID :many
27+
SELECT
28+
*
29+
FROM
30+
workspace_resource_metadata
31+
WHERE
32+
workspace_resource_id= $1;
33+
34+
-- name: GetWorkspaceResourceMetadataByResourceIDs :many
35+
SELECT
36+
*
37+
FROM
38+
workspace_resource_metadata
39+
WHERE
40+
workspace_resource_id= ANY(@ids :: uuid [ ]);
41+
42+
-- name: InsertWorkspaceResourceMetadata :one
43+
INSERT INTO
44+
workspace_resource_metadata (workspace_resource_id, key, value, sensitive)
45+
VALUES
46+
($1, $2, $3, $4) RETURNING*;

‎coderd/provisionerdaemons.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -829,6 +829,25 @@ func insertWorkspaceResource(ctx context.Context, db database.Store, jobID uuid.
829829
snapshot.WorkspaceApps=append(snapshot.WorkspaceApps,telemetry.ConvertWorkspaceApp(dbApp))
830830
}
831831
}
832+
833+
for_,metadatum:=rangeprotoResource.Metadata {
834+
varvalue sql.NullString
835+
if!metadatum.IsNull {
836+
value.String=metadatum.Value
837+
value.Valid=true
838+
}
839+
840+
_,err:=db.InsertWorkspaceResourceMetadata(ctx, database.InsertWorkspaceResourceMetadataParams{
841+
WorkspaceResourceID:resource.ID,
842+
Key:metadatum.Key,
843+
Value:value,
844+
Sensitive:metadatum.Sensitive,
845+
})
846+
iferr!=nil {
847+
returnxerrors.Errorf("insert metadata: %w",err)
848+
}
849+
}
850+
832851
returnnil
833852
}
834853

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp