Skip to content

Commit 9b690bd

Browse files
committed
Add resources as they are reported
1 parent 09fdade commit 9b690bd

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

coderd/provisionerdaemons.go

+16-5
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
"github.com/coder/coder/coderd/httpapi"
2727
"github.com/coder/coder/coderd/parameter"
2828
"github.com/coder/coder/coderd/rbac"
29+
"github.com/coder/coder/coderd/telemetry"
2930
"github.com/coder/coder/provisionerd/proto"
3031
"github.com/coder/coder/provisionersdk"
3132
sdkproto "github.com/coder/coder/provisionersdk/proto"
@@ -80,6 +81,7 @@ func (api *API) ListenProvisionerDaemon(ctx context.Context) (client proto.DRPCP
8081
Database: api.Database,
8182
Pubsub: api.Pubsub,
8283
Provisioners: daemon.Provisioners,
84+
Telemetry: api.Telemetry,
8385
Logger: api.Logger.Named(fmt.Sprintf("provisionerd-%s", daemon.Name)),
8486
})
8587
if err != nil {
@@ -127,6 +129,7 @@ type provisionerdServer struct {
127129
Provisioners []database.ProvisionerType
128130
Database database.Store
129131
Pubsub database.Pubsub
132+
Telemetry telemetry.Reporter
130133
}
131134

132135
// AcquireJob queries the database to lock a job.
@@ -543,6 +546,10 @@ func (server *provisionerdServer) CompleteJob(ctx context.Context, completed *pr
543546
return nil, xerrors.Errorf("you don't have permission to update this job")
544547
}
545548

549+
telemetrySnapshot := &telemetry.Snapshot{}
550+
// Items are added to this snapshot as they complete!
551+
defer server.Telemetry.Report(telemetrySnapshot)
552+
546553
switch jobType := completed.Type.(type) {
547554
case *proto.CompletedJob_TemplateImport_:
548555
for transition, resources := range map[database.WorkspaceTransition][]*sdkproto.Resource{
@@ -556,7 +563,7 @@ func (server *provisionerdServer) CompleteJob(ctx context.Context, completed *pr
556563
slog.F("resource_type", resource.Type),
557564
slog.F("transition", transition))
558565

559-
err = insertWorkspaceResource(ctx, server.Database, jobID, transition, resource)
566+
err = insertWorkspaceResource(ctx, server.Database, jobID, transition, resource, telemetrySnapshot)
560567
if err != nil {
561568
return nil, xerrors.Errorf("insert resource: %w", err)
562569
}
@@ -625,7 +632,7 @@ func (server *provisionerdServer) CompleteJob(ctx context.Context, completed *pr
625632
}
626633
// This could be a bulk insert to improve performance.
627634
for _, protoResource := range jobType.WorkspaceBuild.Resources {
628-
err = insertWorkspaceResource(ctx, db, job.ID, workspaceBuild.Transition, protoResource)
635+
err = insertWorkspaceResource(ctx, db, job.ID, workspaceBuild.Transition, protoResource, telemetrySnapshot)
629636
if err != nil {
630637
return xerrors.Errorf("insert provisioner job: %w", err)
631638
}
@@ -656,7 +663,7 @@ func (server *provisionerdServer) CompleteJob(ctx context.Context, completed *pr
656663
slog.F("resource_name", resource.Name),
657664
slog.F("resource_type", resource.Type))
658665

659-
err = insertWorkspaceResource(ctx, server.Database, jobID, database.WorkspaceTransitionStart, resource)
666+
err = insertWorkspaceResource(ctx, server.Database, jobID, database.WorkspaceTransitionStart, resource, telemetrySnapshot)
660667
if err != nil {
661668
return nil, xerrors.Errorf("insert resource: %w", err)
662669
}
@@ -686,7 +693,7 @@ func (server *provisionerdServer) CompleteJob(ctx context.Context, completed *pr
686693
return &proto.Empty{}, nil
687694
}
688695

689-
func insertWorkspaceResource(ctx context.Context, db database.Store, jobID uuid.UUID, transition database.WorkspaceTransition, protoResource *sdkproto.Resource) error {
696+
func insertWorkspaceResource(ctx context.Context, db database.Store, jobID uuid.UUID, transition database.WorkspaceTransition, protoResource *sdkproto.Resource, snapshot *telemetry.Snapshot) error {
690697
resource, err := db.InsertWorkspaceResource(ctx, database.InsertWorkspaceResourceParams{
691698
ID: uuid.New(),
692699
CreatedAt: database.Now(),
@@ -698,6 +705,8 @@ func insertWorkspaceResource(ctx context.Context, db database.Store, jobID uuid.
698705
if err != nil {
699706
return xerrors.Errorf("insert provisioner job resource %q: %w", protoResource.Name, err)
700707
}
708+
snapshot.WorkspaceResources = append(snapshot.WorkspaceResources, telemetry.ConvertWorkspaceResource(resource))
709+
701710
for _, agent := range protoResource.Agents {
702711
var instanceID sql.NullString
703712
if agent.GetInstanceId() != "" {
@@ -745,9 +754,10 @@ func insertWorkspaceResource(ctx context.Context, db database.Store, jobID uuid.
745754
if err != nil {
746755
return xerrors.Errorf("insert agent: %w", err)
747756
}
757+
snapshot.WorkspaceAgents = append(snapshot.WorkspaceAgents, telemetry.ConvertWorkspaceAgent(dbAgent))
748758

749759
for _, app := range agent.Apps {
750-
_, err := db.InsertWorkspaceApp(ctx, database.InsertWorkspaceAppParams{
760+
dbApp, err := db.InsertWorkspaceApp(ctx, database.InsertWorkspaceAppParams{
751761
ID: uuid.New(),
752762
CreatedAt: database.Now(),
753763
AgentID: dbAgent.ID,
@@ -766,6 +776,7 @@ func insertWorkspaceResource(ctx context.Context, db database.Store, jobID uuid.
766776
if err != nil {
767777
return xerrors.Errorf("insert app: %w", err)
768778
}
779+
snapshot.WorkspaceApps = append(snapshot.WorkspaceApps, telemetry.ConvertWorkspaceApp(dbApp))
769780
}
770781
}
771782
return nil

0 commit comments

Comments
 (0)