mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
feat(site): add agent connection timings (#15276)
Local preview: <img width="1260" alt="Screenshot 2024-10-29 at 16 16 01" src="https://github.com/user-attachments/assets/10fdb20d-1f2a-4b0a-a8a1-171050ee620d"> Close https://github.com/coder/internal/issues/116 --------- Co-authored-by: Danny Kopping <danny@coder.com>
This commit is contained in:
co-authored by
Danny Kopping
parent
18ef954a03
commit
e232aee011
@@ -957,15 +957,29 @@ func (api *API) buildTimings(ctx context.Context, build database.WorkspaceBuild)
|
||||
return codersdk.WorkspaceBuildTimings{}, xerrors.Errorf("fetching workspace agent script timings: %w", err)
|
||||
}
|
||||
|
||||
resources, err := api.Database.GetWorkspaceResourcesByJobID(ctx, build.JobID)
|
||||
if err != nil && !errors.Is(err, sql.ErrNoRows) {
|
||||
return codersdk.WorkspaceBuildTimings{}, xerrors.Errorf("fetching workspace resources: %w", err)
|
||||
}
|
||||
resourceIDs := make([]uuid.UUID, 0, len(resources))
|
||||
for _, resource := range resources {
|
||||
resourceIDs = append(resourceIDs, resource.ID)
|
||||
}
|
||||
agents, err := api.Database.GetWorkspaceAgentsByResourceIDs(ctx, resourceIDs)
|
||||
if err != nil && !errors.Is(err, sql.ErrNoRows) {
|
||||
return codersdk.WorkspaceBuildTimings{}, xerrors.Errorf("fetching workspace agents: %w", err)
|
||||
}
|
||||
|
||||
res := codersdk.WorkspaceBuildTimings{
|
||||
ProvisionerTimings: make([]codersdk.ProvisionerTiming, 0, len(provisionerTimings)),
|
||||
AgentScriptTimings: make([]codersdk.AgentScriptTiming, 0, len(agentScriptTimings)),
|
||||
ProvisionerTimings: make([]codersdk.ProvisionerTiming, 0, len(provisionerTimings)),
|
||||
AgentScriptTimings: make([]codersdk.AgentScriptTiming, 0, len(agentScriptTimings)),
|
||||
AgentConnectionTimings: make([]codersdk.AgentConnectionTiming, 0, len(agents)),
|
||||
}
|
||||
|
||||
for _, t := range provisionerTimings {
|
||||
res.ProvisionerTimings = append(res.ProvisionerTimings, codersdk.ProvisionerTiming{
|
||||
JobID: t.JobID,
|
||||
Stage: string(t.Stage),
|
||||
Stage: codersdk.TimingStage(t.Stage),
|
||||
Source: t.Source,
|
||||
Action: t.Action,
|
||||
Resource: t.Resource,
|
||||
@@ -975,12 +989,23 @@ func (api *API) buildTimings(ctx context.Context, build database.WorkspaceBuild)
|
||||
}
|
||||
for _, t := range agentScriptTimings {
|
||||
res.AgentScriptTimings = append(res.AgentScriptTimings, codersdk.AgentScriptTiming{
|
||||
StartedAt: t.StartedAt,
|
||||
EndedAt: t.EndedAt,
|
||||
ExitCode: t.ExitCode,
|
||||
Stage: string(t.Stage),
|
||||
Status: string(t.Status),
|
||||
DisplayName: t.DisplayName,
|
||||
StartedAt: t.StartedAt,
|
||||
EndedAt: t.EndedAt,
|
||||
ExitCode: t.ExitCode,
|
||||
Stage: codersdk.TimingStage(t.Stage),
|
||||
Status: string(t.Status),
|
||||
DisplayName: t.DisplayName,
|
||||
WorkspaceAgentID: t.WorkspaceAgentID.String(),
|
||||
WorkspaceAgentName: t.WorkspaceAgentName,
|
||||
})
|
||||
}
|
||||
for _, agent := range agents {
|
||||
res.AgentConnectionTimings = append(res.AgentConnectionTimings, codersdk.AgentConnectionTiming{
|
||||
WorkspaceAgentID: agent.ID.String(),
|
||||
WorkspaceAgentName: agent.Name,
|
||||
StartedAt: agent.CreatedAt,
|
||||
Stage: codersdk.TimingStageConnect,
|
||||
EndedAt: agent.FirstConnectedAt.Time,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user