report/error_report.go (33 lines of code) (raw):
package report
import (
_ "embed"
paltypes "github.com/ms-henglu/pal/types"
"strings"
"github.com/azure/armstrong/types"
)
//go:embed error_report.md
var errorReportTemplate string
func ErrorMarkdownReport(report types.Error, logs []paltypes.RequestTrace) string {
parts := strings.Split(report.Type, "@")
resourceType := ""
apiVersion := ""
if len(parts) == 2 {
resourceType = parts[0]
apiVersion = parts[1]
}
requestTraces := AllRequestTracesContent(report.Id, logs)
content := errorReportTemplate
content = strings.ReplaceAll(content, "${resource_type}", resourceType)
content = strings.ReplaceAll(content, "${api_version}", apiVersion)
content = strings.ReplaceAll(content, "${request_traces}", requestTraces)
content = strings.ReplaceAll(content, "${error_message}", report.Message)
return content
}
func AllRequestTracesContent(id string, logs []paltypes.RequestTrace) string {
content := ""
for i := len(logs) - 1; i >= 0; i-- {
if IsUrlMatchWithId(logs[i].Url, id) {
content += RequestTraceToString(logs[i]) + "\n\n\n"
}
}
return content
}