func BuildJobResultRequest()

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: &timestamp.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
}