...
1
16
17 package validation
18
19 import (
20 "time"
21
22 "k8s.io/component-base/metrics"
23 "k8s.io/component-base/metrics/legacyregistry"
24 )
25
26 const (
27 namespace = "apiextensions_apiserver"
28 subsystem = "validation"
29 )
30
31
32 type ValidationMetrics interface {
33 ObserveRatchetingTime(d time.Duration)
34 }
35
36 var Metrics ValidationMetrics = &validationMetrics{
37 RatchetingTime: metrics.NewHistogram(&metrics.HistogramOpts{
38 Namespace: namespace,
39 Subsystem: subsystem,
40 Name: "ratcheting_seconds",
41 Help: "Time for comparison of old to new for the purposes of CRDValidationRatcheting during an UPDATE in seconds.",
42 StabilityLevel: metrics.ALPHA,
43
44 Buckets: metrics.ExponentialBuckets(0.00001, 4, 10),
45 }),
46 }
47
48 func init() {
49 legacyregistry.MustRegister(Metrics.(*validationMetrics).RatchetingTime)
50 }
51
52 type validationMetrics struct {
53 RatchetingTime *metrics.Histogram
54 }
55
56
57 func (m *validationMetrics) ObserveRatchetingTime(d time.Duration) {
58 m.RatchetingTime.Observe(d.Seconds())
59 }
60
61
62
63 func (m *validationMetrics) Reset() []metrics.Registerable {
64 m.RatchetingTime = metrics.NewHistogram(m.RatchetingTime.HistogramOpts)
65 return []metrics.Registerable{m.RatchetingTime}
66 }
67
View as plain text