/
reliability.go
32 lines (28 loc) · 1.08 KB
/
reliability.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package data
import (
"github.com/evergreen-ci/evergreen/model"
"github.com/evergreen-ci/evergreen/model/reliability"
restModel "github.com/evergreen-ci/evergreen/rest/model"
"github.com/pkg/errors"
)
// GetTaskReliabilityScores queries the service backend to retrieve the task reliability scores that match the given filter.
func GetTaskReliabilityScores(filter reliability.TaskReliabilityFilter) ([]restModel.APITaskReliability, error) {
if filter.Project != "" {
projectID, err := model.GetIdForProject(filter.Project)
if err != nil {
return nil, errors.Wrapf(err, "getting project ref ID for identifier '%s'", filter.Project)
}
filter.Project = projectID
}
serviceStatsResult, err := reliability.GetTaskReliabilityScores(filter)
if err != nil {
return nil, errors.Wrap(err, "getting task reliability scores")
}
apiStatsResult := make([]restModel.APITaskReliability, len(serviceStatsResult))
for i, serviceStats := range serviceStatsResult {
ats := restModel.APITaskReliability{}
ats.BuildFromService(serviceStats)
apiStatsResult[i] = ats
}
return apiStatsResult, nil
}