{{- $root := . -}} // // DISCLAIMER // // Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // // Copyright holder is ArangoDB GmbH, Cologne, Germany // package metric_descriptions import ( "github.com/arangodb/kube-arangodb/pkg/util/metrics" ) var ( {{ .fname }} = metrics.NewDescription("{{ .name }}", "{{ .shortDescription }}", {{ .labels }}, nil) {{- if .global }} // Global Fields global{{ .ename }}{{ .type }} = New{{ .ename }}{{ .type }}Factory() {{- end }} ) func init() { registerDescription({{ .fname }}) {{- if .global }} registerCollector(global{{ .ename }}{{ .type }}) {{- end }} } {{- if .global }} func Global{{ .ename }}{{ .type }}() metrics.Factory{{ .type }}[{{ .ename }}Input] { return global{{ .ename }}{{ .type }} } {{- end }} func New{{ .ename }}{{ .type }}Factory() metrics.Factory{{ .type }}[{{ .ename }}Input] { return metrics.NewFactory{{ .type }}[{{ .ename }}Input]() } func New{{ .ename }}Input({{- range $i, $e := .mapKeys }}{{ if $i }}, {{ end }}{{ index $root.mapIKeys . }} {{ index $root.mapTypes . }}{{- end }}) {{ .ename }}Input { return {{ .ename }}Input{ {{- range .mapKeys }} {{ . }}: {{ index $root.mapIKeys . }}, {{- end }} } } type {{ .ename }}Input struct { {{- range .mapKeys }} {{ . }} {{ index $root.mapTypes . }} `json:"{{ index $root.mapIKeys . }}"` {{- end }} } func (i {{ .ename }}Input) {{ .type }}(value float64) metrics.Metric { return {{ .ename }}{{ .type }}(value {{- range .mapKeys }}, i.{{ . }}{{- end }}) } func (i {{ .ename }}Input) Desc() metrics.Description { return {{ .ename }}() } func {{ .ename }}() metrics.Description { return {{ .fname }} } func {{ .ename }}{{ .type }}({{ .fparams }}) metrics.Metric { return {{ .ename }}().{{ .type }}({{ .fkeys }}) }