in container_images/concourse-metrics/pkg/requests/requests.go [75:122]
func BuildJobResultRequest(input JobResultArgs) (*monitoringpb.CreateTimeSeriesRequest, error) {
// Provide a default for the endTimestamp if one was not provided.
var endTimestamp int64
if input.EndTimestamp == nil {
endTimestamp = time.Now().UnixNano() / 1000000
} else {
endTimestamp = *input.EndTimestamp
}
if e := validateJobResultRequestInput(&input); e != nil {
return nil, e
}
return &monitoringpb.CreateTimeSeriesRequest{
Name: "projects/" + input.ProjectID,
TimeSeries: []*monitoringpb.TimeSeries{{
Metric: &metricpb.Metric{
Type: "custom.googleapis.com/" + input.MetricPath,
Labels: map[string]string{
"result_state": input.ResultState,
},
},
Resource: &monitoredres.MonitoredResource{
Type: "generic_task",
Labels: map[string]string{
"project_id": input.ProjectID,
"location": input.Zone,
"namespace": input.Pipeline,
"job": input.Job,
"task_id": input.Task,
},
},
Points: []*monitoringpb.Point{{
Interval: &monitoringpb.TimeInterval{
EndTime: ×tamp.Timestamp{
Seconds: endTimestamp / 1000,
},
},
Value: &monitoringpb.TypedValue{
Value: &monitoringpb.TypedValue_Int64Value{
// Int64 value here is the duration (measured in ms).
Int64Value: endTimestamp - input.StartTimestamp,
},
},
}},
}},
}, nil
}