@@ -99,6 +99,8 @@ type ReportOptions struct {
99
99
100
100
func (r * Report ) Run (ctx context.Context , opts * ReportOptions ) {
101
101
r .Healthy = true
102
+ r .Severity = health .SeverityOK
103
+
102
104
r .Regions = map [int ]* RegionReport {}
103
105
r .Warnings = []string {}
104
106
@@ -150,6 +152,13 @@ func (r *Report) Run(ctx context.Context, opts *ReportOptions) {
150
152
r .NetcheckErr = convertError (netcheckErr )
151
153
152
154
wg .Wait ()
155
+
156
+ // Review region reports and select the highest severity.
157
+ for _ , regionReport := range r .Regions {
158
+ if regionReport .Severity .Value () > r .Severity .Value () {
159
+ r .Severity = regionReport .Severity
160
+ }
161
+ }
153
162
}
154
163
155
164
func (r * RegionReport ) Run (ctx context.Context ) {
@@ -203,14 +212,19 @@ func (r *RegionReport) Run(ctx context.Context) {
203
212
// Coder allows for 1 unhealthy node in the region, unless there is only 1 node.
204
213
if len (r .Region .Nodes ) == 1 {
205
214
r .Healthy = healthyNodes == len (r .Region .Nodes )
206
- } else if healthyNodes < len (r .Region .Nodes ) {
215
+ r .Severity = r .NodeReports [0 ].Severity
216
+ } else if healthyNodes + 1 == len (r .Region .Nodes ) {
217
+ // r.Healthy = true (by default)
218
+ r .Severity = health .SeverityWarning
207
219
r .Warnings = append (r .Warnings , oneNodeUnhealthy )
208
- }
220
+ } else if healthyNodes + 1 < len (r .Region .Nodes ) {
221
+ r .Healthy = false
209
222
210
- // Review node reports and select the highest severing.
211
- for _ , nodeReport := range r .NodeReports {
212
- if nodeReport .Severity .Value () > r .Severity .Value () {
213
- r .Severity = nodeReport .Severity
223
+ // Review node reports and select the highest severity.
224
+ for _ , nodeReport := range r .NodeReports {
225
+ if nodeReport .Severity .Value () > r .Severity .Value () {
226
+ r .Severity = nodeReport .Severity
227
+ }
214
228
}
215
229
}
216
230
}
0 commit comments