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

Commit703ad9d

Browse files
committed
add workspace modules and workspace resources's ModulePath to telemetry
1 parent82e1582 commit703ad9d

File tree

12 files changed

+151
-6
lines changed

12 files changed

+151
-6
lines changed

‎coderd/database/dbauthz/dbauthz.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2673,6 +2673,13 @@ func (q *querier) GetWorkspaceModulesByJobID(ctx context.Context, jobID uuid.UUI
26732673
returnq.db.GetWorkspaceModulesByJobID(ctx,jobID)
26742674
}
26752675

2676+
func (q*querier)GetWorkspaceModulesCreatedAfter(ctx context.Context,createdAt time.Time) ([]database.WorkspaceModule,error) {
2677+
iferr:=q.authorizeContext(ctx,policy.ActionRead,rbac.ResourceSystem);err!=nil {
2678+
returnnil,err
2679+
}
2680+
returnq.db.GetWorkspaceModulesCreatedAfter(ctx,createdAt)
2681+
}
2682+
26762683
func (q*querier)GetWorkspaceProxies(ctx context.Context) ([]database.WorkspaceProxy,error) {
26772684
returnfetchWithPostFilter(q.auth,policy.ActionRead,func(ctx context.Context,_interface{}) ([]database.WorkspaceProxy,error) {
26782685
returnq.db.GetWorkspaceProxies(ctx)

‎coderd/database/dbauthz/dbauthz_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2919,6 +2919,9 @@ func (s *MethodTestSuite) TestSystemFunctions() {
29192919
s.Run("GetWorkspaceModulesByJobID",s.Subtest(func(db database.Store,check*expects) {
29202920
check.Args(uuid.New()).Asserts(rbac.ResourceSystem,policy.ActionRead)
29212921
}))
2922+
s.Run("GetWorkspaceModulesCreatedAfter",s.Subtest(func(db database.Store,check*expects) {
2923+
check.Args(dbtime.Now()).Asserts(rbac.ResourceSystem,policy.ActionRead)
2924+
}))
29222925
}
29232926

29242927
func (s*MethodTestSuite)TestNotifications() {

‎coderd/database/dbgen/dbgen.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -666,6 +666,20 @@ func WorkspaceResource(t testing.TB, db database.Store, orig database.WorkspaceR
666666
returnresource
667667
}
668668

669+
funcWorkspaceModule(t testing.TB,db database.Store,orig database.WorkspaceModule) database.WorkspaceModule {
670+
module,err:=db.InsertWorkspaceModule(genCtx, database.InsertWorkspaceModuleParams{
671+
ID:takeFirst(orig.ID,uuid.New()),
672+
JobID:takeFirst(orig.JobID,uuid.New()),
673+
Transition:takeFirst(orig.Transition,database.WorkspaceTransitionStart),
674+
Source:takeFirst(orig.Source,"test-source"),
675+
Version:takeFirst(orig.Version,"v1.0.0"),
676+
Key:takeFirst(orig.Key,"test-key"),
677+
CreatedAt:takeFirst(orig.CreatedAt,dbtime.Now()),
678+
})
679+
require.NoError(t,err,"insert workspace module")
680+
returnmodule
681+
}
682+
669683
funcWorkspaceResourceMetadatums(t testing.TB,db database.Store,seed database.WorkspaceResourceMetadatum) []database.WorkspaceResourceMetadatum {
670684
meta,err:=db.InsertWorkspaceResourceMetadata(genCtx, database.InsertWorkspaceResourceMetadataParams{
671685
WorkspaceResourceID:takeFirst(seed.WorkspaceResourceID,uuid.New()),

‎coderd/database/dbmem/dbmem.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6674,6 +6674,19 @@ func (q *FakeQuerier) GetWorkspaceModulesByJobID(_ context.Context, jobID uuid.U
66746674
returnmodules,nil
66756675
}
66766676

6677+
func (q*FakeQuerier)GetWorkspaceModulesCreatedAfter(_ context.Context,createdAt time.Time) ([]database.WorkspaceModule,error) {
6678+
q.mutex.RLock()
6679+
deferq.mutex.RUnlock()
6680+
6681+
modules:=make([]database.WorkspaceModule,0)
6682+
for_,module:=rangeq.workspaceModules {
6683+
ifmodule.CreatedAt.After(createdAt) {
6684+
modules=append(modules,module)
6685+
}
6686+
}
6687+
returnmodules,nil
6688+
}
6689+
66776690
func (q*FakeQuerier)GetWorkspaceProxies(_ context.Context) ([]database.WorkspaceProxy,error) {
66786691
q.mutex.RLock()
66796692
deferq.mutex.RUnlock()

‎coderd/database/dbmetrics/querymetrics.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/dbmock/dbmock.go

Lines changed: 15 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: 1 addition & 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: 35 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/queries/workspacemodules.sql

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,6 @@ FROM
1111
workspace_modules
1212
WHERE
1313
job_id= $1;
14+
15+
-- name: GetWorkspaceModulesCreatedAfter :many
16+
SELECT*FROM workspace_modulesWHERE created_at> $1;

‎coderd/provisionerdserver/provisionerdserver.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1279,7 +1279,7 @@ func (s *server) CompleteJob(ctx context.Context, completed *proto.CompletedJob)
12791279
slog.F("module_key",module.Key),
12801280
slog.F("transition",transition))
12811281

1282-
err=InsertWorkspaceModule(ctx,s.Database,jobID,transition,module)
1282+
err=InsertWorkspaceModule(ctx,s.Database,jobID,transition,module,telemetrySnapshot)
12831283
iferr!=nil {
12841284
returnnil,xerrors.Errorf("insert module: %w",err)
12851285
}
@@ -1491,7 +1491,7 @@ func (s *server) CompleteJob(ctx context.Context, completed *proto.CompletedJob)
14911491
}
14921492
}
14931493
for_,module:=rangejobType.WorkspaceBuild.Modules {
1494-
err=InsertWorkspaceModule(ctx,db,job.ID,workspaceBuild.Transition,module)
1494+
err=InsertWorkspaceModule(ctx,db,job.ID,workspaceBuild.Transition,module,telemetrySnapshot)
14951495
iferr!=nil {
14961496
returnxerrors.Errorf("insert provisioner job module: %w",err)
14971497
}
@@ -1683,7 +1683,7 @@ func (s *server) CompleteJob(ctx context.Context, completed *proto.CompletedJob)
16831683
slog.F("module_source",module.Source),
16841684
)
16851685

1686-
err=InsertWorkspaceModule(ctx,s.Database,jobID,database.WorkspaceTransitionStart,module)
1686+
err=InsertWorkspaceModule(ctx,s.Database,jobID,database.WorkspaceTransitionStart,module,telemetrySnapshot)
16871687
iferr!=nil {
16881688
returnnil,xerrors.Errorf("insert module: %w",err)
16891689
}
@@ -1769,8 +1769,8 @@ func (s *server) startTrace(ctx context.Context, name string, opts ...trace.Span
17691769
))...)
17701770
}
17711771

1772-
funcInsertWorkspaceModule(ctx context.Context,db database.Store,jobID uuid.UUID,transition database.WorkspaceTransition,protoModule*sdkproto.Module)error {
1773-
_,err:=db.InsertWorkspaceModule(ctx, database.InsertWorkspaceModuleParams{
1772+
funcInsertWorkspaceModule(ctx context.Context,db database.Store,jobID uuid.UUID,transition database.WorkspaceTransition,protoModule*sdkproto.Module,snapshot*telemetry.Snapshot)error {
1773+
module,err:=db.InsertWorkspaceModule(ctx, database.InsertWorkspaceModuleParams{
17741774
ID:uuid.New(),
17751775
CreatedAt:dbtime.Now(),
17761776
JobID:jobID,
@@ -1782,6 +1782,7 @@ func InsertWorkspaceModule(ctx context.Context, db database.Store, jobID uuid.UU
17821782
iferr!=nil {
17831783
returnxerrors.Errorf("insert provisioner job module %q: %w",protoModule.Source,err)
17841784
}
1785+
snapshot.WorkspaceModules=append(snapshot.WorkspaceModules,telemetry.ConvertWorkspaceModule(module))
17851786
returnnil
17861787
}
17871788

‎coderd/telemetry/telemetry.go

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -456,6 +456,17 @@ func (r *remoteReporter) createSnapshot() (*Snapshot, error) {
456456
}
457457
returnnil
458458
})
459+
eg.Go(func()error {
460+
workspaceModules,err:=r.options.Database.GetWorkspaceModulesCreatedAfter(ctx,createdAfter)
461+
iferr!=nil {
462+
returnxerrors.Errorf("get workspace modules: %w",err)
463+
}
464+
snapshot.WorkspaceModules=make([]WorkspaceModule,0,len(workspaceModules))
465+
for_,module:=rangeworkspaceModules {
466+
snapshot.WorkspaceModules=append(snapshot.WorkspaceModules,ConvertWorkspaceModule(module))
467+
}
468+
returnnil
469+
})
459470
eg.Go(func()error {
460471
licenses,err:=r.options.Database.GetUnexpiredLicenses(ctx)
461472
iferr!=nil {
@@ -642,14 +653,18 @@ func ConvertWorkspaceApp(app database.WorkspaceApp) WorkspaceApp {
642653

643654
// ConvertWorkspaceResource anonymizes a workspace resource.
644655
funcConvertWorkspaceResource(resource database.WorkspaceResource)WorkspaceResource {
645-
returnWorkspaceResource{
656+
r:=WorkspaceResource{
646657
ID:resource.ID,
647658
JobID:resource.JobID,
648659
CreatedAt:resource.CreatedAt,
649660
Transition:resource.Transition,
650661
Type:resource.Type,
651662
InstanceType:resource.InstanceType.String,
652663
}
664+
ifresource.ModulePath.Valid {
665+
r.ModulePath=&resource.ModulePath.String
666+
}
667+
returnr
653668
}
654669

655670
// ConvertWorkspaceResourceMetadata anonymizes workspace metadata.
@@ -661,6 +676,18 @@ func ConvertWorkspaceResourceMetadata(metadata database.WorkspaceResourceMetadat
661676
}
662677
}
663678

679+
funcConvertWorkspaceModule(module database.WorkspaceModule)WorkspaceModule {
680+
returnWorkspaceModule{
681+
ID:module.ID,
682+
JobID:module.JobID,
683+
Transition:module.Transition,
684+
Source:module.Source,
685+
Version:module.Version,
686+
Key:module.Key,
687+
CreatedAt:module.CreatedAt,
688+
}
689+
}
690+
664691
// ConvertUser anonymizes a user.
665692
funcConvertUser(dbUser database.User)User {
666693
emailHashed:=""
@@ -810,6 +837,7 @@ type Snapshot struct {
810837
WorkspaceProxies []WorkspaceProxy`json:"workspace_proxies"`
811838
WorkspaceResourceMetadata []WorkspaceResourceMetadata`json:"workspace_resource_metadata"`
812839
WorkspaceResources []WorkspaceResource`json:"workspace_resources"`
840+
WorkspaceModules []WorkspaceModule`json:"workspace_modules"`
813841
Workspaces []Workspace`json:"workspaces"`
814842
NetworkEvents []NetworkEvent`json:"network_events"`
815843
}
@@ -878,6 +906,11 @@ type WorkspaceResource struct {
878906
Transition database.WorkspaceTransition`json:"transition"`
879907
Typestring`json:"type"`
880908
InstanceTypestring`json:"instance_type"`
909+
// ModulePath is nullable because it was added a long time after the
910+
// original workspace resource telemetry was added. All new resources
911+
// will have a module path, but deployments with older resources still
912+
// in the database will not.
913+
ModulePath*string`json:"module_path"`
881914
}
882915

883916
typeWorkspaceResourceMetadatastruct {
@@ -886,6 +919,16 @@ type WorkspaceResourceMetadata struct {
886919
Sensitivebool`json:"sensitive"`
887920
}
888921

922+
typeWorkspaceModulestruct {
923+
ID uuid.UUID`json:"id"`
924+
CreatedAt time.Time`json:"created_at"`
925+
JobID uuid.UUID`json:"job_id"`
926+
Transition database.WorkspaceTransition`json:"transition"`
927+
Keystring`json:"key"`
928+
Versionstring`json:"version"`
929+
Sourcestring`json:"source"`
930+
}
931+
889932
typeWorkspaceAgentstruct {
890933
ID uuid.UUID`json:"id"`
891934
CreatedAt time.Time`json:"created_at"`

‎coderd/telemetry/telemetry_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@ func TestTelemetry(t *testing.T) {
8787
assert.NoError(t,err)
8888
_,_=dbgen.WorkspaceProxy(t,db, database.WorkspaceProxy{})
8989

90+
_=dbgen.WorkspaceModule(t,db, database.WorkspaceModule{})
91+
9092
_,snapshot:=collectSnapshot(t,db,nil)
9193
require.Len(t,snapshot.ProvisionerJobs,1)
9294
require.Len(t,snapshot.Licenses,1)
@@ -103,6 +105,7 @@ func TestTelemetry(t *testing.T) {
103105
require.Len(t,snapshot.WorkspaceResources,1)
104106
require.Len(t,snapshot.WorkspaceAgentStats,1)
105107
require.Len(t,snapshot.WorkspaceProxies,1)
108+
require.Len(t,snapshot.WorkspaceModules,1)
106109

107110
wsa:=snapshot.WorkspaceAgents[0]
108111
require.Len(t,wsa.Subsystems,2)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp