in tf/utils.go [367:401]
func NewCleanupErrorReport(applyErr error, logs []paltypes.RequestTrace) types.ErrorReport {
out := types.ErrorReport{
Errors: make([]types.Error, 0),
Logs: logs,
}
if applyErr == nil {
return out
}
var res []string
if strings.Contains(applyErr.Error(), "Error: Failed to delete resource") {
res = strings.Split(applyErr.Error(), "Error: Failed to delete resource")
} else {
res = strings.Split(applyErr.Error(), "Error: deleting")
}
for _, e := range res {
var id, apiVersion string
errorMessage := e
if lastIndex := strings.LastIndex(e, "------"); lastIndex != -1 {
errorMessage = errorMessage[0:lastIndex]
}
if matches := regexp.MustCompile(`ResourceId\s+\\?"([^\\]+)\\?"\s+/\s+Api Version \\?"([^\\]+)\\?"\)`).FindAllStringSubmatch(e, -1); len(matches) == 1 {
id = matches[0][1]
apiVersion = matches[0][2]
} else {
continue
}
out.Errors = append(out.Errors, types.Error{
Id: id,
Type: fmt.Sprintf("%s@%s", utils.ResourceTypeOfResourceId(id), apiVersion),
Message: errorMessage,
})
}
return out
}