(projectID string, planUID int64, counts []*store.TaskStatusCount, environmentOrderMap map[string]int)
| 956 | } |
| 957 | |
| 958 | func buildRolloutStageSummaries(projectID string, planUID int64, counts []*store.TaskStatusCount, environmentOrderMap map[string]int) []*v1pb.Plan_RolloutStageSummary { |
| 959 | summariesByEnvironment := make(map[string]map[v1pb.Task_Status]int32) |
| 960 | for _, count := range counts { |
| 961 | if _, exists := environmentOrderMap[count.Environment]; !exists { |
| 962 | continue |
| 963 | } |
| 964 | status, ok := convertTaskRunStatusStringToAPITaskStatus(count.Status) |
| 965 | if !ok { |
| 966 | continue |
| 967 | } |
| 968 | if _, exists := summariesByEnvironment[count.Environment]; !exists { |
| 969 | summariesByEnvironment[count.Environment] = make(map[v1pb.Task_Status]int32) |
| 970 | } |
| 971 | summariesByEnvironment[count.Environment][status] += count.Count |
| 972 | } |
| 973 | |
| 974 | environments := make([]string, 0, len(summariesByEnvironment)) |
| 975 | for environment := range summariesByEnvironment { |
| 976 | environments = append(environments, environment) |
| 977 | } |
| 978 | slices.SortFunc(environments, func(a, b string) int { |
| 979 | return environmentOrderMap[a] - environmentOrderMap[b] |
| 980 | }) |
| 981 | |
| 982 | summaries := make([]*v1pb.Plan_RolloutStageSummary, 0, len(environments)) |
| 983 | for _, environment := range environments { |
| 984 | stageID := common.FormatStageID(environment) |
| 985 | statusCounts := make([]*v1pb.Plan_TaskStatusCount, 0, len(summariesByEnvironment[environment])) |
| 986 | for _, status := range []v1pb.Task_Status{ |
| 987 | v1pb.Task_NOT_STARTED, |
| 988 | v1pb.Task_PENDING, |
| 989 | v1pb.Task_RUNNING, |
| 990 | v1pb.Task_DONE, |
| 991 | v1pb.Task_FAILED, |
| 992 | v1pb.Task_CANCELED, |
| 993 | v1pb.Task_SKIPPED, |
| 994 | } { |
| 995 | if count, exists := summariesByEnvironment[environment][status]; exists { |
| 996 | statusCounts = append(statusCounts, &v1pb.Plan_TaskStatusCount{ |
| 997 | Status: status, |
| 998 | Count: count, |
| 999 | }) |
| 1000 | } |
| 1001 | } |
| 1002 | summaries = append(summaries, &v1pb.Plan_RolloutStageSummary{ |
| 1003 | Stage: common.FormatStage(projectID, planUID, stageID), |
| 1004 | TaskStatusCounts: statusCounts, |
| 1005 | }) |
| 1006 | } |
| 1007 | return summaries |
| 1008 | } |
| 1009 | |
| 1010 | func convertTaskRunStatusStringToAPITaskStatus(status string) (v1pb.Task_Status, bool) { |
| 1011 | switch status { |
no test coverage detected