mirror of
https://github.com/coder/coder.git
synced 2025-07-13 21:36:50 +00: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:
@ -175,28 +175,57 @@ func (c *Client) WorkspaceBuildParameters(ctx context.Context, build uuid.UUID)
|
||||
return params, json.NewDecoder(res.Body).Decode(¶ms)
|
||||
}
|
||||
|
||||
type TimingStage string
|
||||
|
||||
const (
|
||||
// Based on ProvisionerJobTimingStage
|
||||
TimingStageInit TimingStage = "init"
|
||||
TimingStagePlan TimingStage = "plan"
|
||||
TimingStageGraph TimingStage = "graph"
|
||||
TimingStageApply TimingStage = "apply"
|
||||
// Based on WorkspaceAgentScriptTimingStage
|
||||
TimingStageStart TimingStage = "start"
|
||||
TimingStageStop TimingStage = "stop"
|
||||
TimingStageCron TimingStage = "cron"
|
||||
// Custom timing stage to represent the time taken to connect to an agent
|
||||
TimingStageConnect TimingStage = "connect"
|
||||
)
|
||||
|
||||
type ProvisionerTiming struct {
|
||||
JobID uuid.UUID `json:"job_id" format:"uuid"`
|
||||
StartedAt time.Time `json:"started_at" format:"date-time"`
|
||||
EndedAt time.Time `json:"ended_at" format:"date-time"`
|
||||
Stage string `json:"stage"`
|
||||
Source string `json:"source"`
|
||||
Action string `json:"action"`
|
||||
Resource string `json:"resource"`
|
||||
JobID uuid.UUID `json:"job_id" format:"uuid"`
|
||||
StartedAt time.Time `json:"started_at" format:"date-time"`
|
||||
EndedAt time.Time `json:"ended_at" format:"date-time"`
|
||||
Stage TimingStage `json:"stage"`
|
||||
Source string `json:"source"`
|
||||
Action string `json:"action"`
|
||||
Resource string `json:"resource"`
|
||||
}
|
||||
|
||||
type AgentScriptTiming struct {
|
||||
StartedAt time.Time `json:"started_at" format:"date-time"`
|
||||
EndedAt time.Time `json:"ended_at" format:"date-time"`
|
||||
ExitCode int32 `json:"exit_code"`
|
||||
Stage string `json:"stage"`
|
||||
Status string `json:"status"`
|
||||
DisplayName string `json:"display_name"`
|
||||
StartedAt time.Time `json:"started_at" format:"date-time"`
|
||||
EndedAt time.Time `json:"ended_at" format:"date-time"`
|
||||
ExitCode int32 `json:"exit_code"`
|
||||
Stage TimingStage `json:"stage"`
|
||||
Status string `json:"status"`
|
||||
DisplayName string `json:"display_name"`
|
||||
WorkspaceAgentID string `json:"workspace_agent_id"`
|
||||
WorkspaceAgentName string `json:"workspace_agent_name"`
|
||||
}
|
||||
|
||||
type AgentConnectionTiming struct {
|
||||
StartedAt time.Time `json:"started_at" format:"date-time"`
|
||||
EndedAt time.Time `json:"ended_at" format:"date-time"`
|
||||
Stage TimingStage `json:"stage"`
|
||||
WorkspaceAgentID string `json:"workspace_agent_id"`
|
||||
WorkspaceAgentName string `json:"workspace_agent_name"`
|
||||
}
|
||||
|
||||
type WorkspaceBuildTimings struct {
|
||||
ProvisionerTimings []ProvisionerTiming `json:"provisioner_timings"`
|
||||
AgentScriptTimings []AgentScriptTiming `json:"agent_script_timings"`
|
||||
// TODO: Consolidate agent-related timing metrics into a single struct when
|
||||
// updating the API version
|
||||
AgentScriptTimings []AgentScriptTiming `json:"agent_script_timings"`
|
||||
AgentConnectionTimings []AgentConnectionTiming `json:"agent_connection_timings"`
|
||||
}
|
||||
|
||||
func (c *Client) WorkspaceBuildTimings(ctx context.Context, build uuid.UUID) (WorkspaceBuildTimings, error) {
|
||||
|
Reference in New Issue
Block a user