(resources []*runtimev1.Resource)
| 178 | } |
| 179 | |
| 180 | func buildValidationResult(resources []*runtimev1.Resource) *ValidationResult { |
| 181 | result := &ValidationResult{ |
| 182 | Summary: ValidationSummary{}, |
| 183 | } |
| 184 | |
| 185 | for _, r := range resources { |
| 186 | if r.Meta.Name.Kind == runtime.GlobalProjectParserName.Kind && strings.EqualFold(r.Meta.Name.Name, runtime.GlobalProjectParserName.Name) { |
| 187 | parseErrors := parseErrorsFromParser(r) |
| 188 | result.Summary.ParseErrors = len(parseErrors) |
| 189 | result.ParseErrors = parseErrors |
| 190 | var parseWarnings int |
| 191 | for _, pe := range r.GetProjectParser().State.ParseErrors { |
| 192 | if pe.Warning { |
| 193 | parseWarnings++ |
| 194 | } |
| 195 | } |
| 196 | result.Summary.ParseWarnings = parseWarnings |
| 197 | continue |
| 198 | } |
| 199 | if r.Meta.Hidden { |
| 200 | continue |
| 201 | } |
| 202 | |
| 203 | result.Summary.TotalResources++ |
| 204 | |
| 205 | status := runtime.PrettifyReconcileStatus(r.Meta.ReconcileStatus) |
| 206 | resourceStatus := ResourceStatus{ |
| 207 | Kind: runtime.PrettifyResourceKind(r.Meta.Name.Kind), |
| 208 | Name: r.Meta.Name.Name, |
| 209 | Status: status, |
| 210 | } |
| 211 | |
| 212 | // just use first file path if multiple for now |
| 213 | if len(r.Meta.FilePaths) > 0 { |
| 214 | resourceStatus.FilePath = r.Meta.FilePaths[0] |
| 215 | } |
| 216 | |
| 217 | if r.Meta.ReconcileError != "" { |
| 218 | result.Summary.ReconcileErrors++ |
| 219 | resourceStatus.Error = r.Meta.ReconcileError |
| 220 | // Check if the error is due to context deadline exceeded (timeout) |
| 221 | if strings.Contains(r.Meta.ReconcileError, "context deadline exceeded") { |
| 222 | resourceStatus.Timeout = true |
| 223 | } |
| 224 | } |
| 225 | if len(r.Meta.ReconcileWarnings) > 0 { |
| 226 | result.Summary.ReconcileWarnings++ |
| 227 | resourceStatus.Warning = strings.Join(r.Meta.ReconcileWarnings, "; ") |
| 228 | } |
| 229 | |
| 230 | result.Resources = append(result.Resources, resourceStatus) |
| 231 | } |
| 232 | |
| 233 | return result |
| 234 | } |
| 235 | |
| 236 | func parseErrorsFromParser(parserRes *runtimev1.Resource) []ParseError { |
| 237 | if parserRes == nil || parserRes.GetProjectParser() == nil { |
no test coverage detected