@@ -115,54 +115,66 @@ func analyzeRegexPattern(pattern string, collected []byte, outcomes []*troublesh
115115 return nil , errors .Wrapf (err , "failed to compile regex: %s" , pattern )
116116 }
117117
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- }
127118 result := AnalyzeResult {
128119 Title : checkName ,
129120 IconKey : "kubernetes_text_analyze" ,
130121 IconURI : "https://troubleshoot.sh/images/analyzer-icons/text-analyze.svg" ,
131122 }
132123
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 ))
148125
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 {
152128
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+ }
161150
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+ }
166178 }
167179 return & result , nil
168180}
0 commit comments