Compare commits

...

3 Commits

Author SHA1 Message Date
Steven Masley de37a56db6 chore: add stage_seq to disambiguate similar stages 2025-11-19 15:36:22 +00:00
Steven Masley 33f870dac9 linting 2025-11-19 15:35:46 +00:00
Steven Masley 03c9417154 chore: measure both terraform graph events 2025-11-19 15:35:46 +00:00
25 changed files with 261 additions and 149 deletions
+1
View File
@@ -1615,6 +1615,7 @@ func provisionerJobTiming(t testing.TB, db database.Store, seed database.Provisi
StartedAt: []time.Time{takeFirst(seed.StartedAt, dbtime.Now())},
EndedAt: []time.Time{takeFirst(seed.EndedAt, dbtime.Now())},
Stage: []database.ProvisionerJobTimingStage{takeFirst(seed.Stage, database.ProvisionerJobTimingStageInit)},
StageSeq: []int32{seed.StageSeq},
Source: []string{takeFirst(seed.Source, "source")},
Action: []string{takeFirst(seed.Action, "action")},
Resource: []string{takeFirst(seed.Resource, "resource")},
+4 -1
View File
@@ -1688,9 +1688,12 @@ CREATE TABLE provisioner_job_timings (
stage provisioner_job_timing_stage NOT NULL,
source text NOT NULL,
action text NOT NULL,
resource text NOT NULL
resource text NOT NULL,
stage_seq integer DEFAULT 0 NOT NULL
);
COMMENT ON COLUMN provisioner_job_timings.stage_seq IS 'Distinguish repeated runs of the same stage within a single build job.';
CREATE TABLE provisioner_jobs (
id uuid NOT NULL,
created_at timestamp with time zone NOT NULL,
@@ -0,0 +1,3 @@
ALTER TABLE ONLY
provisioner_job_timings
DROP COLUMN IF EXISTS stage_seq;
@@ -0,0 +1,7 @@
ALTER TABLE ONLY
provisioner_job_timings
ADD COLUMN stage_seq integer NOT NULL DEFAULT 0;
COMMENT ON COLUMN
provisioner_job_timings.stage_seq IS
'Distinguish repeated runs of the same stage within a single build job.';
+2
View File
@@ -4134,6 +4134,8 @@ type ProvisionerJobTiming struct {
Source string `db:"source" json:"source"`
Action string `db:"action" json:"action"`
Resource string `db:"resource" json:"resource"`
// Distinguish repeated runs of the same stage within a single build job.
StageSeq int32 `db:"stage_seq" json:"stage_seq"`
}
type ProvisionerKey struct {
+9 -4
View File
@@ -10062,7 +10062,7 @@ func (q *sqlQuerier) GetProvisionerJobByIDWithLock(ctx context.Context, id uuid.
}
const getProvisionerJobTimingsByJobID = `-- name: GetProvisionerJobTimingsByJobID :many
SELECT job_id, started_at, ended_at, stage, source, action, resource FROM provisioner_job_timings
SELECT job_id, started_at, ended_at, stage, source, action, resource, stage_seq FROM provisioner_job_timings
WHERE job_id = $1
ORDER BY started_at ASC
`
@@ -10084,6 +10084,7 @@ func (q *sqlQuerier) GetProvisionerJobTimingsByJobID(ctx context.Context, jobID
&i.Source,
&i.Action,
&i.Resource,
&i.StageSeq,
); err != nil {
return nil, err
}
@@ -10676,7 +10677,7 @@ func (q *sqlQuerier) InsertProvisionerJob(ctx context.Context, arg InsertProvisi
}
const insertProvisionerJobTimings = `-- name: InsertProvisionerJobTimings :many
INSERT INTO provisioner_job_timings (job_id, started_at, ended_at, stage, source, action, resource)
INSERT INTO provisioner_job_timings (job_id, started_at, ended_at, stage, source, action, resource, stage_seq)
SELECT
$1::uuid AS provisioner_job_id,
unnest($2::timestamptz[]),
@@ -10684,8 +10685,9 @@ SELECT
unnest($4::provisioner_job_timing_stage[]),
unnest($5::text[]),
unnest($6::text[]),
unnest($7::text[])
RETURNING job_id, started_at, ended_at, stage, source, action, resource
unnest($7::text[]),
unnest($8::integer[])
RETURNING job_id, started_at, ended_at, stage, source, action, resource, stage_seq
`
type InsertProvisionerJobTimingsParams struct {
@@ -10696,6 +10698,7 @@ type InsertProvisionerJobTimingsParams struct {
Source []string `db:"source" json:"source"`
Action []string `db:"action" json:"action"`
Resource []string `db:"resource" json:"resource"`
StageSeq []int32 `db:"stage_seq" json:"stage_seq"`
}
func (q *sqlQuerier) InsertProvisionerJobTimings(ctx context.Context, arg InsertProvisionerJobTimingsParams) ([]ProvisionerJobTiming, error) {
@@ -10707,6 +10710,7 @@ func (q *sqlQuerier) InsertProvisionerJobTimings(ctx context.Context, arg Insert
pq.Array(arg.Source),
pq.Array(arg.Action),
pq.Array(arg.Resource),
pq.Array(arg.StageSeq),
)
if err != nil {
return nil, err
@@ -10723,6 +10727,7 @@ func (q *sqlQuerier) InsertProvisionerJobTimings(ctx context.Context, arg Insert
&i.Source,
&i.Action,
&i.Resource,
&i.StageSeq,
); err != nil {
return nil, err
}
+3 -2
View File
@@ -329,7 +329,7 @@ ORDER BY random()
LIMIT @max_jobs;
-- name: InsertProvisionerJobTimings :many
INSERT INTO provisioner_job_timings (job_id, started_at, ended_at, stage, source, action, resource)
INSERT INTO provisioner_job_timings (job_id, started_at, ended_at, stage, source, action, resource, stage_seq)
SELECT
@job_id::uuid AS provisioner_job_id,
unnest(@started_at::timestamptz[]),
@@ -337,7 +337,8 @@ SELECT
unnest(@stage::provisioner_job_timing_stage[]),
unnest(@source::text[]),
unnest(@action::text[]),
unnest(@resource::text[])
unnest(@resource::text[]),
unnest(@stage_seq::integer[])
RETURNING *;
-- name: GetProvisionerJobTimingsByJobID :many
@@ -2182,6 +2182,7 @@ func (s *server) completeWorkspaceBuildJob(ctx context.Context, job database.Pro
}
params.Stage = append(params.Stage, stg)
params.StageSeq = append(params.StageSeq, t.StageSeq)
params.Source = append(params.Source, t.Source)
params.Resource = append(params.Resource, t.Resource)
params.Action = append(params.Action, t.Action)
+8 -7
View File
@@ -1295,13 +1295,14 @@ func (api *API) buildTimings(ctx context.Context, build database.WorkspaceBuild)
}
res.ProvisionerTimings = append(res.ProvisionerTimings, codersdk.ProvisionerTiming{
JobID: t.JobID,
Stage: codersdk.TimingStage(t.Stage),
Source: t.Source,
Action: t.Action,
Resource: t.Resource,
StartedAt: t.StartedAt,
EndedAt: t.EndedAt,
JobID: t.JobID,
Stage: codersdk.TimingStage(t.Stage),
StageSequence: t.StageSeq,
Source: t.Source,
Action: t.Action,
Resource: t.Resource,
StartedAt: t.StartedAt,
EndedAt: t.EndedAt,
})
}
for _, t := range agentScriptTimings {
+8 -7
View File
@@ -231,13 +231,14 @@ const (
)
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 TimingStage `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"`
StageSequence int32 `json:"stage_sequence"`
Source string `json:"source"`
Action string `json:"action"`
Resource string `json:"resource"`
}
type AgentScriptTiming struct {
+9 -9
View File
@@ -325,7 +325,7 @@ func (e *executor) plan(ctx, killCtx context.Context, env, vars []string, logr l
<-doneErr
}()
endStage := e.timings.startStage(database.ProvisionerJobTimingStagePlan)
endStage := e.timings.startStage(database.ProvisionerJobTimingStagePlan, 0)
err := e.execWriteOutput(ctx, killCtx, args, env, outWriter, errWriter)
endStage(err)
if err != nil {
@@ -333,12 +333,10 @@ func (e *executor) plan(ctx, killCtx context.Context, env, vars []string, logr l
}
// Capture the duration of the call to `terraform graph`.
graphTimings := newTimingAggregator(database.ProvisionerJobTimingStageGraph)
graphTimings.ingest(createGraphTimingsEvent(timingGraphStart))
endGraph := e.timings.startStage(database.ProvisionerJobTimingStageGraph, 0)
state, plan, err := e.planResources(ctx, killCtx, planfilePath)
endGraph(err)
if err != nil {
graphTimings.ingest(createGraphTimingsEvent(timingGraphErrored))
return nil, xerrors.Errorf("plan resources: %w", err)
}
planJSON, err := json.Marshal(plan)
@@ -346,8 +344,6 @@ func (e *executor) plan(ctx, killCtx context.Context, env, vars []string, logr l
return nil, xerrors.Errorf("marshal plan: %w", err)
}
graphTimings.ingest(createGraphTimingsEvent(timingGraphComplete))
var moduleFiles []byte
// Skipping modules archiving is useful if the caller does not need it, eg during
// a workspace build. This removes some added costs of sending the modules
@@ -390,7 +386,7 @@ func (e *executor) plan(ctx, killCtx context.Context, env, vars []string, logr l
Parameters: state.Parameters,
Resources: state.Resources,
ExternalAuthProviders: state.ExternalAuthProviders,
Timings: append(e.timings.aggregate(), graphTimings.aggregate()...),
Timings: e.timings.aggregate(),
Presets: state.Presets,
Plan: planJSON,
ResourceReplacements: resReps,
@@ -599,7 +595,7 @@ func (e *executor) apply(
}()
// `terraform apply`
endStage := e.timings.startStage(database.ProvisionerJobTimingStageApply)
endStage := e.timings.startStage(database.ProvisionerJobTimingStageApply, 0)
err := e.execWriteOutput(ctx, killCtx, args, env, outWriter, errWriter)
endStage(err)
if err != nil {
@@ -607,10 +603,14 @@ func (e *executor) apply(
}
// `terraform show` & `terraform graph`
// The sequence number is `1` as `graph` has already been called during `plan`. (the 0th stage)
endGraph := e.timings.startStage(database.ProvisionerJobTimingStageGraph, 1)
state, err := e.stateResources(ctx, killCtx)
endGraph(err)
if err != nil {
return nil, err
}
statefilePath := e.files.StateFilePath()
stateContent, err := os.ReadFile(statefilePath)
if err != nil {
+2 -2
View File
@@ -109,8 +109,8 @@ func (s *server) Plan(
// The JSON output of `terraform init` doesn't include discrete fields for capturing timings of each plugin,
// so we capture the whole init process.
initTimings := newTimingAggregator(database.ProvisionerJobTimingStageInit)
endStage := initTimings.startStage(database.ProvisionerJobTimingStageInit)
initTimings := newTimingAggregator(database.ProvisionerJobTimingStageInit, 0)
endStage := initTimings.startStage(database.ProvisionerJobTimingStageInit, 0)
err = e.init(ctx, killCtx, sess)
endStage(err)
+1 -1
View File
@@ -170,6 +170,6 @@ func (s *server) executor(files tfpath.Layouter, stage database.ProvisionerJobTi
cliConfigPath: s.cliConfigPath,
files: files,
logger: s.logger.Named("executor"),
timings: newTimingAggregator(stage),
timings: newTimingAggregator(stage, 0),
}
}
+16 -6
View File
@@ -75,7 +75,8 @@ const (
)
type timingAggregator struct {
stage database.ProvisionerJobTimingStage
stage database.ProvisionerJobTimingStage
stageSequence int32
// Protects the stateLookup map.
lookupMu sync.Mutex
@@ -88,16 +89,18 @@ type timingSpan struct {
messageCode initMessageCode
start, end time.Time
stage database.ProvisionerJobTimingStage
stageSeq int32
action, provider, resource string
state proto.TimingState
}
// newTimingAggregator creates a new aggregator which measures the duration of resource init/plan/apply actions; stage
// represents the stage of provisioning the timings are occurring within.
func newTimingAggregator(stage database.ProvisionerJobTimingStage) *timingAggregator {
func newTimingAggregator(stage database.ProvisionerJobTimingStage, seq int32) *timingAggregator {
return &timingAggregator{
stage: stage,
stateLookup: make(map[uint64]*timingSpan),
stage: stage,
stageSequence: seq,
stateLookup: make(map[uint64]*timingSpan),
}
}
@@ -109,7 +112,12 @@ func (t *timingAggregator) ingest(ts time.Time, s *timingSpan) {
return
}
s.stage = t.stage
// Only set the stage if it hasn't already been set on the span.
// Explicitly set stage takes precedence.
if s.stage == "" {
s.stage = t.stage
s.stageSeq = t.stageSequence
}
ts = dbtime.Time(ts.UTC())
switch s.kind {
@@ -184,13 +192,14 @@ func (t *timingAggregator) aggregate() []*proto.Timing {
// should be called to mark the end of the stage. This is used to measure a
// stage's total duration across all it's discrete events and unmeasured
// overhead/events.
func (t *timingAggregator) startStage(stage database.ProvisionerJobTimingStage) (end func(err error)) {
func (t *timingAggregator) startStage(stage database.ProvisionerJobTimingStage, seq int32) (end func(err error)) {
ts := timingSpan{
kind: timingStageStart,
stage: stage,
resource: "coder_stage_" + string(stage),
action: "terraform",
provider: "coder",
stageSeq: seq,
}
endTs := ts
t.ingest(dbtime.Now(), &ts)
@@ -279,6 +288,7 @@ func (e *timingSpan) toProto() *proto.Timing {
Source: e.provider,
Resource: e.resource,
State: e.state,
StageSeq: e.stageSeq,
}
}
@@ -104,7 +104,7 @@ func TestAggregation(t *testing.T) {
require.Truef(t, stage.Valid(), "%q is not a valid stage name; acceptable values: %v",
file.Name, database.AllProvisionerJobTimingStageValues())
agg := newTimingAggregator(stage)
agg := newTimingAggregator(stage, 0)
ingestAllSpans(t, file.Data, agg)
actualTimings = append(actualTimings, agg.aggregate()...)
}
+1 -1
View File
@@ -1,5 +1,5 @@
// Code generated by protoc-gen-go-drpc. DO NOT EDIT.
// protoc-gen-go-drpc version: v0.0.34
// protoc-gen-go-drpc version: (devel)
// source: provisionerd/proto/provisionerd.proto
package proto
+4 -1
View File
@@ -62,9 +62,12 @@ import "github.com/coder/coder/v2/apiversion"
// - Added new field `template_version_id` to `provisioner.Metadata`
// - Added new field `exp_reuse_terraform_workspace` to `provisioner.Job.WorkspaceBuild`
// - Added fields `template_version_id`, `template_id`, and `exp_reuse_terraform_workspace` to `provisioner.Config`
//
// API v1.13:
// - Added new field `stage_seq` to `Timing` to distinguish repeated stages
const (
CurrentMajor = 1
CurrentMinor = 12
CurrentMinor = 13
)
// CurrentVersion is the current provisionerd API version.
+118 -104
View File
@@ -3759,6 +3759,11 @@ type Timing struct {
Resource string `protobuf:"bytes,5,opt,name=resource,proto3" json:"resource,omitempty"`
Stage string `protobuf:"bytes,6,opt,name=stage,proto3" json:"stage,omitempty"`
State TimingState `protobuf:"varint,7,opt,name=state,proto3,enum=provisioner.TimingState" json:"state,omitempty"`
// stage_que distinguishes repeated runs of the same stage.
// 0 is the first occurrence, 1 is the second, etc.
// Repeated stages are not ideal, but they do exist and should be known
// to be unique by this field.
StageSeq int32 `protobuf:"varint,8,opt,name=stage_seq,json=stageSeq,proto3" json:"stage_seq,omitempty"`
}
func (x *Timing) Reset() {
@@ -3842,6 +3847,13 @@ func (x *Timing) GetState() TimingState {
return TimingState_STARTED
}
func (x *Timing) GetStageSeq() int32 {
if x != nil {
return x.StageSeq
}
return 0
}
// CancelRequest requests that the previous request be canceled gracefully.
type CancelRequest struct {
state protoimpl.MessageState
@@ -5026,8 +5038,8 @@ var file_provisionersdk_proto_provisioner_proto_rawDesc = []byte{
0x69, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2e,
0x0a, 0x08, 0x61, 0x69, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x41,
0x49, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x07, 0x61, 0x69, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x22, 0xfa,
0x01, 0x0a, 0x06, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x30, 0x0a, 0x05, 0x73, 0x74, 0x61,
0x49, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x07, 0x61, 0x69, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x97,
0x02, 0x0a, 0x06, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x30, 0x0a, 0x05, 0x73, 0x74, 0x61,
0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x2c, 0x0a, 0x03, 0x65,
@@ -5042,108 +5054,110 @@ var file_provisionersdk_proto_provisioner_proto_rawDesc = []byte{
0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x73,
0x74, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f,
0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x53,
0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x0f, 0x0a, 0x0d, 0x43,
0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x8c, 0x02, 0x0a,
0x07, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66,
0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69,
0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52,
0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x31, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x73, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69,
0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x48, 0x00, 0x52, 0x05, 0x70, 0x61, 0x72, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x70, 0x6c,
0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69,
0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x48, 0x00, 0x52, 0x04, 0x70, 0x6c, 0x61, 0x6e, 0x12, 0x31, 0x0a, 0x05, 0x61, 0x70,
0x70, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x76,
0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x05, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x34, 0x0a,
0x06, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x43, 0x61, 0x6e, 0x63,
0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x06, 0x63, 0x61, 0x6e,
0x63, 0x65, 0x6c, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xc9, 0x02, 0x0a, 0x08,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x03, 0x6c, 0x6f, 0x67, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f,
0x6e, 0x65, 0x72, 0x2e, 0x4c, 0x6f, 0x67, 0x48, 0x00, 0x52, 0x03, 0x6c, 0x6f, 0x67, 0x12, 0x32,
0x0a, 0x05, 0x70, 0x61, 0x72, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x72, 0x73,
0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x00, 0x52, 0x05, 0x70, 0x61, 0x72,
0x73, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x70, 0x6c, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x50,
0x6c, 0x61, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x00, 0x52, 0x04, 0x70,
0x6c, 0x61, 0x6e, 0x12, 0x32, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72,
0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x00,
0x52, 0x05, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x3a, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f,
0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70,
0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x55,
0x70, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x55, 0x70, 0x6c,
0x6f, 0x61, 0x64, 0x12, 0x3a, 0x0a, 0x0b, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x5f, 0x70, 0x69, 0x65,
0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69,
0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x50, 0x69, 0x65, 0x63,
0x65, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x50, 0x69, 0x65, 0x63, 0x65, 0x42,
0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x0a, 0x44, 0x61, 0x74, 0x61,
0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x3c, 0x0a, 0x0b, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64,
0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x70, 0x72,
0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x55, 0x70,
0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64,
0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x68, 0x61, 0x73,
0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x48, 0x61, 0x73,
0x68, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03,
0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x16,
0x0a, 0x06, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
0x63, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x22, 0x67, 0x0a, 0x0a, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x50,
0x69, 0x65, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x24, 0x0a, 0x0e, 0x66, 0x75, 0x6c, 0x6c,
0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c,
0x52, 0x0c, 0x66, 0x75, 0x6c, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1f,
0x0a, 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20,
0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x69, 0x65, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x2a,
0xa8, 0x01, 0x0a, 0x11, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72,
0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54,
0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52,
0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x41, 0x44, 0x49, 0x4f, 0x10, 0x02, 0x12, 0x0c, 0x0a,
0x08, 0x44, 0x52, 0x4f, 0x50, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x49,
0x4e, 0x50, 0x55, 0x54, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x45, 0x58, 0x54, 0x41, 0x52,
0x45, 0x41, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x4c, 0x49, 0x44, 0x45, 0x52, 0x10, 0x06,
0x12, 0x0c, 0x0a, 0x08, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x42, 0x4f, 0x58, 0x10, 0x07, 0x12, 0x0a,
0x0a, 0x06, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x08, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x41,
0x47, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x10, 0x09, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x55, 0x4c,
0x54, 0x49, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x10, 0x0a, 0x2a, 0x3f, 0x0a, 0x08, 0x4c, 0x6f,
0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x52, 0x41, 0x43, 0x45, 0x10,
0x00, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04,
0x49, 0x4e, 0x46, 0x4f, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x41, 0x52, 0x4e, 0x10, 0x03,
0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x2a, 0x3b, 0x0a, 0x0f, 0x41,
0x70, 0x70, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x09,
0x0a, 0x05, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x55, 0x54,
0x48, 0x45, 0x4e, 0x54, 0x49, 0x43, 0x41, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06,
0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x10, 0x02, 0x2a, 0x35, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x4f,
0x70, 0x65, 0x6e, 0x49, 0x6e, 0x12, 0x0e, 0x0a, 0x06, 0x57, 0x49, 0x4e, 0x44, 0x4f, 0x57, 0x10,
0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x4c, 0x49, 0x4d, 0x5f, 0x57, 0x49,
0x4e, 0x44, 0x4f, 0x57, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x41, 0x42, 0x10, 0x02, 0x2a,
0x37, 0x0a, 0x13, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e,
0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10,
0x00, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, 0x4f, 0x50, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x44,
0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x10, 0x02, 0x2a, 0x3e, 0x0a, 0x1b, 0x50, 0x72, 0x65, 0x62,
0x75, 0x69, 0x6c, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x42, 0x75, 0x69,
0x6c, 0x64, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10,
0x00, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x09, 0x0a,
0x05, 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x10, 0x02, 0x2a, 0x35, 0x0a, 0x0b, 0x54, 0x69, 0x6d, 0x69,
0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x54, 0x41, 0x52, 0x54,
0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45,
0x44, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x2a,
0x47, 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70,
0x65, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x50, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45,
0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x55, 0x50,
0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x55, 0x4c, 0x45,
0x5f, 0x46, 0x49, 0x4c, 0x45, 0x53, 0x10, 0x01, 0x32, 0x49, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x76,
0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x07, 0x53, 0x65, 0x73, 0x73, 0x69,
0x6f, 0x6e, 0x12, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72,
0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69,
0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28,
0x01, 0x30, 0x01, 0x42, 0x30, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
0x6d, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x2f, 0x76, 0x32,
0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x73, 0x64, 0x6b, 0x2f,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73,
0x74, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
0x73, 0x74, 0x61, 0x67, 0x65, 0x53, 0x65, 0x71, 0x22, 0x0f, 0x0a, 0x0d, 0x43, 0x61, 0x6e, 0x63,
0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x8c, 0x02, 0x0a, 0x07, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f,
0x6e, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x06, 0x63, 0x6f,
0x6e, 0x66, 0x69, 0x67, 0x12, 0x31, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x73, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65,
0x72, 0x2e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00,
0x52, 0x05, 0x70, 0x61, 0x72, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x70, 0x6c, 0x61, 0x6e, 0x18,
0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f,
0x6e, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48,
0x00, 0x52, 0x04, 0x70, 0x6c, 0x61, 0x6e, 0x12, 0x31, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x6c, 0x79,
0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69,
0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x48, 0x00, 0x52, 0x05, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x34, 0x0a, 0x06, 0x63, 0x61,
0x6e, 0x63, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f,
0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x06, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c,
0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xc9, 0x02, 0x0a, 0x08, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x03, 0x6c, 0x6f, 0x67, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72,
0x2e, 0x4c, 0x6f, 0x67, 0x48, 0x00, 0x52, 0x03, 0x6c, 0x6f, 0x67, 0x12, 0x32, 0x0a, 0x05, 0x70,
0x61, 0x72, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f,
0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x43, 0x6f,
0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x00, 0x52, 0x05, 0x70, 0x61, 0x72, 0x73, 0x65, 0x12,
0x2f, 0x0a, 0x04, 0x70, 0x6c, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x6e,
0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x00, 0x52, 0x04, 0x70, 0x6c, 0x61, 0x6e,
0x12, 0x32, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x41, 0x70,
0x70, 0x6c, 0x79, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x00, 0x52, 0x05, 0x61,
0x70, 0x70, 0x6c, 0x79, 0x12, 0x3a, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, 0x70, 0x6c,
0x6f, 0x61, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x76,
0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x55, 0x70, 0x6c, 0x6f,
0x61, 0x64, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64,
0x12, 0x3a, 0x0a, 0x0b, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x18,
0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f,
0x6e, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x50, 0x69, 0x65, 0x63, 0x65, 0x48, 0x00,
0x52, 0x0a, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x50, 0x69, 0x65, 0x63, 0x65, 0x42, 0x06, 0x0a, 0x04,
0x74, 0x79, 0x70, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x0a, 0x44, 0x61, 0x74, 0x61, 0x55, 0x70, 0x6c,
0x6f, 0x61, 0x64, 0x12, 0x3c, 0x0a, 0x0b, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79,
0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69,
0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x55, 0x70, 0x6c, 0x6f, 0x61,
0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70,
0x65, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02,
0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1b,
0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
0x03, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63,
0x68, 0x75, 0x6e, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x75,
0x6e, 0x6b, 0x73, 0x22, 0x67, 0x0a, 0x0a, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x50, 0x69, 0x65, 0x63,
0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52,
0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x24, 0x0a, 0x0e, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x64, 0x61,
0x74, 0x61, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x66,
0x75, 0x6c, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x70,
0x69, 0x65, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
0x52, 0x0a, 0x70, 0x69, 0x65, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x2a, 0xa8, 0x01, 0x0a,
0x11, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x6d, 0x54, 0x79,
0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12,
0x0e, 0x0a, 0x0a, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12,
0x09, 0x0a, 0x05, 0x52, 0x41, 0x44, 0x49, 0x4f, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x52,
0x4f, 0x50, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x50, 0x55,
0x54, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x45, 0x58, 0x54, 0x41, 0x52, 0x45, 0x41, 0x10,
0x05, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x4c, 0x49, 0x44, 0x45, 0x52, 0x10, 0x06, 0x12, 0x0c, 0x0a,
0x08, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x42, 0x4f, 0x58, 0x10, 0x07, 0x12, 0x0a, 0x0a, 0x06, 0x53,
0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x08, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x41, 0x47, 0x53, 0x45,
0x4c, 0x45, 0x43, 0x54, 0x10, 0x09, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x53,
0x45, 0x4c, 0x45, 0x43, 0x54, 0x10, 0x0a, 0x2a, 0x3f, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65,
0x76, 0x65, 0x6c, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x52, 0x41, 0x43, 0x45, 0x10, 0x00, 0x12, 0x09,
0x0a, 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x4e, 0x46,
0x4f, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x41, 0x52, 0x4e, 0x10, 0x03, 0x12, 0x09, 0x0a,
0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x2a, 0x3b, 0x0a, 0x0f, 0x41, 0x70, 0x70, 0x53,
0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x09, 0x0a, 0x05, 0x4f,
0x57, 0x4e, 0x45, 0x52, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x55, 0x54, 0x48, 0x45, 0x4e,
0x54, 0x49, 0x43, 0x41, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x55, 0x42,
0x4c, 0x49, 0x43, 0x10, 0x02, 0x2a, 0x35, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x4f, 0x70, 0x65, 0x6e,
0x49, 0x6e, 0x12, 0x0e, 0x0a, 0x06, 0x57, 0x49, 0x4e, 0x44, 0x4f, 0x57, 0x10, 0x00, 0x1a, 0x02,
0x08, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x4c, 0x49, 0x4d, 0x5f, 0x57, 0x49, 0x4e, 0x44, 0x4f,
0x57, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x41, 0x42, 0x10, 0x02, 0x2a, 0x37, 0x0a, 0x13,
0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74,
0x69, 0x6f, 0x6e, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x00, 0x12, 0x08,
0x0a, 0x04, 0x53, 0x54, 0x4f, 0x50, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x53, 0x54,
0x52, 0x4f, 0x59, 0x10, 0x02, 0x2a, 0x3e, 0x0a, 0x1b, 0x50, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c,
0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53,
0x74, 0x61, 0x67, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0a,
0x0a, 0x06, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x4c,
0x41, 0x49, 0x4d, 0x10, 0x02, 0x2a, 0x35, 0x0a, 0x0b, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x53,
0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10,
0x00, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x01,
0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x2a, 0x47, 0x0a, 0x0e,
0x44, 0x61, 0x74, 0x61, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17,
0x0a, 0x13, 0x55, 0x50, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e,
0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x55, 0x50, 0x4c, 0x4f, 0x41,
0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x55, 0x4c, 0x45, 0x5f, 0x46, 0x49,
0x4c, 0x45, 0x53, 0x10, 0x01, 0x32, 0x49, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69,
0x6f, 0x6e, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x07, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12,
0x14, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x2e, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f,
0x6e, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01,
0x42, 0x30, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63,
0x6f, 0x64, 0x65, 0x72, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x2f, 0x76, 0x32, 0x2f, 0x70, 0x72,
0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
+5
View File
@@ -457,6 +457,11 @@ message Timing {
string resource = 5;
string stage = 6;
TimingState state = 7;
// stage_que distinguishes repeated runs of the same stage.
// 0 is the first occurrence, 1 is the second, etc.
// Repeated stages are not ideal, but they do exist and should be known
// to be unique by this field.
int32 stage_seq = 8;
}
enum TimingState {
+1 -1
View File
@@ -1,5 +1,5 @@
// Code generated by protoc-gen-go-drpc. DO NOT EDIT.
// protoc-gen-go-drpc version: v0.0.34
// protoc-gen-go-drpc version: (devel)
// source: provisionersdk/proto/provisioner.proto
package proto
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v1.181.2
// protoc v4.23.4
// protoc v6.32.0
// source: google/protobuf/timestamp.proto
/* eslint-disable */
+11 -1
View File
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v1.181.2
// protoc v4.23.4
// protoc v6.32.0
// source: provisioner.proto
/* eslint-disable */
@@ -513,6 +513,13 @@ export interface Timing {
resource: string;
stage: string;
state: TimingState;
/**
* stage_que distinguishes repeated runs of the same stage.
* 0 is the first occurrence, 1 is the second, etc.
* Repeated stages are not ideal, but they do exist and should be known
* to be unique by this field.
*/
stageSeq: number;
}
/** CancelRequest requests that the previous request be canceled gracefully. */
@@ -1507,6 +1514,9 @@ export const Timing = {
if (message.state !== 0) {
writer.uint32(56).int32(message.state);
}
if (message.stageSeq !== 0) {
writer.uint32(64).int32(message.stageSeq);
}
return writer;
},
};
+1
View File
@@ -3766,6 +3766,7 @@ export interface ProvisionerTiming {
readonly started_at: string;
readonly ended_at: string;
readonly stage: TimingStage;
readonly stage_sequence: number;
readonly source: string;
readonly action: string;
readonly resource: string;
@@ -188,6 +188,7 @@ export const MissedAction: Story = {
source: "coder",
stage: "apply",
started_at: "2025-03-12T18:08:07.194957Z",
stage_sequence: 0,
},
{
action: "create",
@@ -197,6 +198,7 @@ export const MissedAction: Story = {
source: "null",
stage: "apply",
started_at: "2025-03-12T18:08:07.399387Z",
stage_sequence: 0,
},
{
action: "create",
@@ -206,6 +208,7 @@ export const MissedAction: Story = {
source: "random",
stage: "apply",
started_at: "2025-03-12T18:08:07.403171Z",
stage_sequence: 0,
},
{
action: "missed action",
@@ -215,6 +218,7 @@ export const MissedAction: Story = {
source: "null",
stage: "apply",
started_at: "2025-03-12T18:08:07.410219Z",
stage_sequence: 0,
},
],
},
@@ -10,6 +10,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "terraform",
resource: "coder_stage_init",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -19,6 +20,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "terraform",
resource: "coder_stage_plan",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -28,6 +30,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "read",
resource: "data.coder_workspace_owner.me",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -37,6 +40,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "read",
resource: "data.coder_parameter.repo_base_dir",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -46,6 +50,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "read",
resource: "module.coder-login.data.coder_workspace_owner.me",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -55,6 +60,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "read",
resource: "data.coder_parameter.image_type",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -64,6 +70,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "read",
resource: "data.coder_external_auth.github",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -73,6 +80,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "read",
resource: "module.dotfiles.data.coder_parameter.dotfiles_uri[0]",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -82,6 +90,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "read",
resource: "module.jetbrains_gateway.data.coder_parameter.jetbrains_ide",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -91,6 +100,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "read",
resource: "module.jetbrains_gateway.data.coder_workspace.me",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -100,6 +110,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "read",
resource: "data.coder_workspace.me",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -109,6 +120,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "read",
resource: "data.coder_parameter.region",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -118,6 +130,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "read",
resource: "module.filebrowser.data.coder_workspace_owner.me",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -127,6 +140,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "read",
resource: "module.cursor.data.coder_workspace_owner.me",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -136,6 +150,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "read",
resource: "module.cursor.data.coder_workspace.me",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -146,6 +161,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
action: "read",
resource:
'module.jetbrains_gateway.data.http.jetbrains_ide_versions["WS"]',
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -155,6 +171,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "read",
resource: "module.coder-login.data.coder_workspace.me",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -164,6 +181,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "read",
resource: "module.filebrowser.data.coder_workspace.me",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -174,6 +192,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
action: "read",
resource:
'module.jetbrains_gateway.data.http.jetbrains_ide_versions["GO"]',
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -183,6 +202,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "state refresh",
resource: "coder_agent.dev",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -192,6 +212,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "state refresh",
resource: "module.slackme.coder_script.install_slackme",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -201,6 +222,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "state refresh",
resource: "module.dotfiles.coder_script.dotfiles",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -210,6 +232,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "state refresh",
resource: "module.git-clone.coder_script.git_clone",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -219,6 +242,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "state refresh",
resource: "module.personalize.coder_script.personalize",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -228,6 +252,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "state refresh",
resource: "module.code-server.coder_app.code-server",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -237,6 +262,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "state refresh",
resource: "module.cursor.coder_app.cursor",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -246,6 +272,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "state refresh",
resource: "module.coder-login.coder_script.coder-login",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -255,6 +282,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "state refresh",
resource: "module.code-server.coder_script.code-server",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -264,6 +292,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "state refresh",
resource: "module.filebrowser.coder_script.filebrowser",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -273,6 +302,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "state refresh",
resource: "module.filebrowser.coder_app.filebrowser",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -282,6 +312,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "state refresh",
resource: "module.jetbrains_gateway.coder_app.gateway",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -291,6 +322,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "docker",
action: "state refresh",
resource: "docker_volume.home_volume",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -300,6 +332,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "docker",
action: "read",
resource: "data.docker_registry_image.dogfood",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -309,6 +342,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "docker",
action: "state refresh",
resource: "docker_image.dogfood",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -318,6 +352,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "terraform",
action: "building terraform dependency graph",
resource: "state file",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -327,6 +362,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "terraform",
resource: "coder_stage_apply",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -336,6 +372,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "delete",
resource: "module.coder-login.coder_script.coder-login",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -345,6 +382,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "create",
resource: "module.coder-login.coder_script.coder-login",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -354,6 +392,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "docker",
action: "create",
resource: "docker_container.workspace[0]",
stage_sequence: 0,
},
{
job_id: "86fd4143-d95f-4602-b464-1149ede62269",
@@ -363,6 +402,7 @@ export const WorkspaceTimingsResponse: WorkspaceBuildTimings = {
source: "coder",
action: "create",
resource: "coder_metadata.container_info[0]",
stage_sequence: 0,
},
],
agent_script_timings: [