@@ -115,54 +115,66 @@ func analyzeRegexPattern(pattern string, collected []byte, outcomes []*troublesh
115
115
return nil , errors .Wrapf (err , "failed to compile regex: %s" , pattern )
116
116
}
117
117
118
- var failOutcome * troubleshootv1beta2.SingleOutcome
119
- var passOutcome * troubleshootv1beta2.SingleOutcome
120
- for _ , outcome := range outcomes {
121
- if outcome .Fail != nil {
122
- failOutcome = outcome .Fail
123
- } else if outcome .Pass != nil {
124
- passOutcome = outcome .Pass
125
- }
126
- }
127
118
result := AnalyzeResult {
128
119
Title : checkName ,
129
120
IconKey : "kubernetes_text_analyze" ,
130
121
IconURI : "https://troubleshoot.sh/images/analyzer-icons/text-analyze.svg" ,
131
122
}
132
123
133
- reMatch := re .MatchString (string (collected ))
134
- failWhen := false
135
- if failOutcome != nil && failOutcome .When != "" {
136
- failWhen , err = strconv .ParseBool (failOutcome .When )
137
- if err != nil {
138
- return nil , errors .Wrapf (err , "failed to process when statement: %s" , failOutcome .When )
139
- }
140
- }
141
- passWhen := true
142
- if passOutcome != nil && passOutcome .When != "" {
143
- passWhen , err = strconv .ParseBool (passOutcome .When )
144
- if err != nil {
145
- return nil , errors .Wrapf (err , "failed to process when statement: %s" , passOutcome .When )
146
- }
147
- }
124
+ isMatch := re .MatchString (string (collected ))
148
125
149
- if passWhen == failWhen {
150
- return nil , errors .Wrap (err , "outcome when conditions for fail and pass are equal" )
151
- }
126
+ for _ , outcome := range outcomes {
127
+ if outcome .Fail != nil {
152
128
153
- if reMatch == passWhen {
154
- result .IsPass = true
155
- if passOutcome != nil {
156
- result .Message = passOutcome .Message
157
- result .URI = passOutcome .URI
158
- }
159
- return & result , nil
160
- }
129
+ // if the outcome.Fail.When is not set, default to false
130
+ if outcome .Fail .When == "" {
131
+ outcome .Fail .When = "false"
132
+ }
133
+
134
+ failWhen , err := strconv .ParseBool (outcome .Fail .When )
135
+ if err != nil {
136
+ return nil , errors .Wrapf (err , "failed to process when statement: %s" , outcome .Fail .When )
137
+ }
138
+
139
+ if isMatch == failWhen {
140
+ result .IsFail = true
141
+ result .IsWarn = false
142
+ result .Message = outcome .Fail .Message
143
+ result .URI = outcome .Fail .URI
144
+ }
145
+ } else if outcome .Warn != nil {
146
+ // if the outcome.Warn.When is not set, default to false
147
+ if outcome .Warn .When == "" {
148
+ outcome .Warn .When = "false"
149
+ }
161
150
162
- result .IsFail = true
163
- if failOutcome != nil {
164
- result .Message = failOutcome .Message
165
- result .URI = failOutcome .URI
151
+ warnWhen , err := strconv .ParseBool (outcome .Warn .When )
152
+ if err != nil {
153
+ return nil , errors .Wrapf (err , "failed to process when statement: %s" , outcome .Warn .When )
154
+ }
155
+
156
+ if isMatch == warnWhen {
157
+ result .IsWarn = true
158
+ result .Message = outcome .Warn .Message
159
+ result .URI = outcome .Warn .URI
160
+ }
161
+ } else if outcome .Pass != nil {
162
+ // if the outcome.Pass.When is not set, default to true
163
+ if outcome .Pass .When == "" {
164
+ outcome .Pass .When = "true"
165
+ }
166
+
167
+ passWhen , err := strconv .ParseBool (outcome .Pass .When )
168
+ if err != nil {
169
+ return nil , errors .Wrapf (err , "failed to process when statement: %s" , outcome .Pass .When )
170
+ }
171
+
172
+ if isMatch == passWhen {
173
+ result .IsPass = true
174
+ result .Message = outcome .Pass .Message
175
+ result .URI = outcome .Pass .URI
176
+ }
177
+ }
166
178
}
167
179
return & result , nil
168
180
}
0 commit comments