mirror of
https://github.com/ceph/ceph-csi.git
synced 2025-06-13 18:43:34 +00:00
Changes to accommodate client-go changes and kube vendor update
to v1.18.0 Signed-off-by: Humble Chirammal <hchiramm@redhat.com>
This commit is contained in:
committed by
mergify[bot]
parent
4c96ad3c85
commit
34fc1d847e
82
vendor/k8s.io/component-base/metrics/registry.go
generated
vendored
82
vendor/k8s.io/component-base/metrics/registry.go
generated
vendored
@ -83,6 +83,7 @@ func SetShowHidden() {
|
||||
// re-register collectors that has been hidden in phase of last registry.
|
||||
for _, r := range registries {
|
||||
r.enableHiddenCollectors()
|
||||
r.enableHiddenStableCollectors()
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -104,20 +105,21 @@ type Registerable interface {
|
||||
|
||||
// ClearState will clear all the states marked by Create.
|
||||
ClearState()
|
||||
|
||||
// FQName returns the fully-qualified metric name of the collector.
|
||||
FQName() string
|
||||
}
|
||||
|
||||
// KubeRegistry is an interface which implements a subset of prometheus.Registerer and
|
||||
// prometheus.Gatherer interfaces
|
||||
type KubeRegistry interface {
|
||||
// Deprecated
|
||||
RawRegister(prometheus.Collector) error
|
||||
// Deprecated
|
||||
RawMustRegister(...prometheus.Collector)
|
||||
CustomRegister(c StableCollector) error
|
||||
CustomMustRegister(cs ...StableCollector)
|
||||
Register(Registerable) error
|
||||
MustRegister(...Registerable)
|
||||
Unregister(Registerable) bool
|
||||
Unregister(collector Collector) bool
|
||||
Gather() ([]*dto.MetricFamily, error)
|
||||
}
|
||||
|
||||
@ -127,8 +129,10 @@ type KubeRegistry interface {
|
||||
type kubeRegistry struct {
|
||||
PromRegistry
|
||||
version semver.Version
|
||||
hiddenCollectors []Registerable // stores all collectors that has been hidden
|
||||
hiddenCollectors map[string]Registerable // stores all collectors that has been hidden
|
||||
stableCollectors []StableCollector // stores all stable collector
|
||||
hiddenCollectorsLock sync.RWMutex
|
||||
stableCollectorsLock sync.RWMutex
|
||||
}
|
||||
|
||||
// Register registers a new Collector to be included in metrics
|
||||
@ -163,10 +167,11 @@ func (kr *kubeRegistry) MustRegister(cs ...Registerable) {
|
||||
|
||||
// CustomRegister registers a new custom collector.
|
||||
func (kr *kubeRegistry) CustomRegister(c StableCollector) error {
|
||||
kr.trackStableCollectors(c)
|
||||
|
||||
if c.Create(&kr.version, c) {
|
||||
return kr.PromRegistry.Register(c)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -174,6 +179,8 @@ func (kr *kubeRegistry) CustomRegister(c StableCollector) error {
|
||||
// StableCollectors and panics upon the first registration that causes an
|
||||
// error.
|
||||
func (kr *kubeRegistry) CustomMustRegister(cs ...StableCollector) {
|
||||
kr.trackStableCollectors(cs...)
|
||||
|
||||
collectors := make([]prometheus.Collector, 0, len(cs))
|
||||
for _, c := range cs {
|
||||
if c.Create(&kr.version, c) {
|
||||
@ -184,15 +191,6 @@ func (kr *kubeRegistry) CustomMustRegister(cs ...StableCollector) {
|
||||
kr.PromRegistry.MustRegister(collectors...)
|
||||
}
|
||||
|
||||
// RawRegister takes a native prometheus.Collector and registers the collector
|
||||
// to the registry. This bypasses metrics safety checks, so should only be used
|
||||
// to register custom prometheus collectors.
|
||||
//
|
||||
// Deprecated
|
||||
func (kr *kubeRegistry) RawRegister(c prometheus.Collector) error {
|
||||
return kr.PromRegistry.Register(c)
|
||||
}
|
||||
|
||||
// RawMustRegister takes a native prometheus.Collector and registers the collector
|
||||
// to the registry. This bypasses metrics safety checks, so should only be used
|
||||
// to register custom prometheus collectors.
|
||||
@ -208,7 +206,7 @@ func (kr *kubeRegistry) RawMustRegister(cs ...prometheus.Collector) {
|
||||
// returns whether a Collector was unregistered. Note that an unchecked
|
||||
// Collector cannot be unregistered (as its Describe method does not
|
||||
// yield any descriptor).
|
||||
func (kr *kubeRegistry) Unregister(collector Registerable) bool {
|
||||
func (kr *kubeRegistry) Unregister(collector Collector) bool {
|
||||
return kr.PromRegistry.Unregister(collector)
|
||||
}
|
||||
|
||||
@ -228,25 +226,67 @@ func (kr *kubeRegistry) trackHiddenCollector(c Registerable) {
|
||||
kr.hiddenCollectorsLock.Lock()
|
||||
defer kr.hiddenCollectorsLock.Unlock()
|
||||
|
||||
kr.hiddenCollectors = append(kr.hiddenCollectors, c)
|
||||
kr.hiddenCollectors[c.FQName()] = c
|
||||
}
|
||||
|
||||
// trackStableCollectors stores all custom collectors.
|
||||
func (kr *kubeRegistry) trackStableCollectors(cs ...StableCollector) {
|
||||
kr.stableCollectorsLock.Lock()
|
||||
defer kr.stableCollectorsLock.Unlock()
|
||||
|
||||
kr.stableCollectors = append(kr.stableCollectors, cs...)
|
||||
}
|
||||
|
||||
// enableHiddenCollectors will re-register all of the hidden collectors.
|
||||
func (kr *kubeRegistry) enableHiddenCollectors() {
|
||||
if len(kr.hiddenCollectors) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
kr.hiddenCollectorsLock.Lock()
|
||||
defer kr.hiddenCollectorsLock.Unlock()
|
||||
cs := make([]Registerable, 0, len(kr.hiddenCollectors))
|
||||
|
||||
for _, c := range kr.hiddenCollectors {
|
||||
c.ClearState()
|
||||
kr.MustRegister(c)
|
||||
cs = append(cs, c)
|
||||
}
|
||||
|
||||
kr.hiddenCollectors = nil
|
||||
kr.hiddenCollectorsLock.Unlock()
|
||||
kr.MustRegister(cs...)
|
||||
}
|
||||
|
||||
// enableHiddenStableCollectors will re-register the stable collectors if there is one or more hidden metrics in it.
|
||||
// Since we can not register a metrics twice, so we have to unregister first then register again.
|
||||
func (kr *kubeRegistry) enableHiddenStableCollectors() {
|
||||
if len(kr.stableCollectors) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
kr.stableCollectorsLock.Lock()
|
||||
|
||||
cs := make([]StableCollector, 0, len(kr.stableCollectors))
|
||||
for _, c := range kr.stableCollectors {
|
||||
if len(c.HiddenMetrics()) > 0 {
|
||||
kr.Unregister(c) // unregister must happens before clear state, otherwise no metrics would be unregister
|
||||
c.ClearState()
|
||||
cs = append(cs, c)
|
||||
}
|
||||
}
|
||||
|
||||
kr.stableCollectors = nil
|
||||
kr.stableCollectorsLock.Unlock()
|
||||
kr.CustomMustRegister(cs...)
|
||||
}
|
||||
|
||||
// BuildVersion is a helper function that can be easily mocked.
|
||||
var BuildVersion = version.Get
|
||||
|
||||
func newKubeRegistry(v apimachineryversion.Info) *kubeRegistry {
|
||||
r := &kubeRegistry{
|
||||
PromRegistry: prometheus.NewRegistry(),
|
||||
version: parseVersion(v),
|
||||
PromRegistry: prometheus.NewRegistry(),
|
||||
version: parseVersion(v),
|
||||
hiddenCollectors: make(map[string]Registerable),
|
||||
}
|
||||
|
||||
registriesLock.Lock()
|
||||
@ -259,7 +299,7 @@ func newKubeRegistry(v apimachineryversion.Info) *kubeRegistry {
|
||||
// NewKubeRegistry creates a new vanilla Registry without any Collectors
|
||||
// pre-registered.
|
||||
func NewKubeRegistry() KubeRegistry {
|
||||
r := newKubeRegistry(version.Get())
|
||||
r := newKubeRegistry(BuildVersion())
|
||||
|
||||
return r
|
||||
}
|
||||
|
Reference in New Issue
Block a user