/
doc-generator.go
69 lines (50 loc) · 1.77 KB
/
doc-generator.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package main
import (
"fmt"
"github.com/machadovilaca/operator-observability/pkg/operatormetrics"
virtapi "kubevirt.io/kubevirt/pkg/monitoring/metrics/virt-api"
virtcontroller "kubevirt.io/kubevirt/pkg/monitoring/metrics/virt-controller"
virthandler "kubevirt.io/kubevirt/pkg/monitoring/metrics/virt-handler"
virtoperator "kubevirt.io/kubevirt/pkg/monitoring/metrics/virt-operator"
"kubevirt.io/kubevirt/pkg/monitoring/rules"
"github.com/machadovilaca/operator-observability/pkg/docs"
)
const tpl = `# KubeVirt metrics
{{- range . }}
{{ $deprecatedVersion := "" -}}
{{- with index .ExtraFields "DeprecatedVersion" -}}
{{- $deprecatedVersion = printf " in %s" . -}}
{{- end -}}
{{- $stabilityLevel := "" -}}
{{- if and (.ExtraFields.StabilityLevel) (ne .ExtraFields.StabilityLevel "STABLE") -}}
{{- $stabilityLevel = printf "[%s%s] " .ExtraFields.StabilityLevel $deprecatedVersion -}}
{{- end -}}
### {{ .Name }}
{{ print $stabilityLevel }}{{ .Help }} Type: {{ .Type -}}.
{{- end }}
## Developing new metrics
All metrics documented here are auto-generated and reflect exactly what is being
exposed. After developing new metrics or changing old ones please regenerate
this document.
`
func main() {
if err := virtcontroller.SetupMetrics(nil, nil, nil, nil, nil, nil, nil, nil); err != nil {
panic(err)
}
if err := virtapi.SetupMetrics(); err != nil {
panic(err)
}
if err := virtoperator.SetupMetrics(); err != nil {
panic(err)
}
if err := virthandler.SetupMetrics("", "", 0, nil); err != nil {
panic(err)
}
if err := rules.SetupRules(""); err != nil {
panic(err)
}
metricsList := operatormetrics.ListMetrics()
rulesList := rules.ListRecordingRules()
docsString := docs.BuildMetricsDocsWithCustomTemplate(metricsList, rulesList, tpl)
fmt.Print(docsString)
}