From 257e9645375f64f48fb951421840463e1c784102 Mon Sep 17 00:00:00 2001 From: gmarek Date: Thu, 14 Jan 2016 10:54:01 +0100 Subject: [PATCH] Add Equal funtion to metrics --- pkg/metrics/api_server_metrics.go | 4 ++++ pkg/metrics/controller_manager_metrics.go | 4 ++++ pkg/metrics/generic_metrics.go | 21 +++++++++++++++++++++ pkg/metrics/kubelet_metrics.go | 4 ++++ pkg/metrics/scheduler_metrics.go | 4 ++++ 5 files changed, 37 insertions(+) diff --git a/pkg/metrics/api_server_metrics.go b/pkg/metrics/api_server_metrics.go index 8a2d114dfb6..e905ab4b94c 100644 --- a/pkg/metrics/api_server_metrics.go +++ b/pkg/metrics/api_server_metrics.go @@ -50,6 +50,10 @@ var KnownApiServerMetrics = map[string][]string{ type ApiServerMetrics Metrics +func (m *ApiServerMetrics) Equal(o ApiServerMetrics) bool { + return (*Metrics)(m).Equal(Metrics(o)) +} + func NewApiServerMetrics() ApiServerMetrics { result := NewMetrics() for metric := range KnownApiServerMetrics { diff --git a/pkg/metrics/controller_manager_metrics.go b/pkg/metrics/controller_manager_metrics.go index 84ac63720f0..defbfc0bb56 100644 --- a/pkg/metrics/controller_manager_metrics.go +++ b/pkg/metrics/controller_manager_metrics.go @@ -42,6 +42,10 @@ var KnownControllerManagerMetrics = map[string][]string{ type ControllerManagerMetrics Metrics +func (m *ControllerManagerMetrics) Equal(o ControllerManagerMetrics) bool { + return (*Metrics)(m).Equal(Metrics(o)) +} + func NewControllerManagerMetrics() ControllerManagerMetrics { result := NewMetrics() for metric := range KnownControllerManagerMetrics { diff --git a/pkg/metrics/generic_metrics.go b/pkg/metrics/generic_metrics.go index 5d3d5f17b6d..57dd016d86c 100644 --- a/pkg/metrics/generic_metrics.go +++ b/pkg/metrics/generic_metrics.go @@ -19,6 +19,7 @@ package metrics import ( "fmt" "io" + "reflect" "strings" "k8s.io/kubernetes/pkg/util/sets" @@ -58,6 +59,26 @@ var CommonMetrics = map[string][]string{ type Metrics map[string]model.Samples +func (m *Metrics) Equal(o Metrics) bool { + leftKeySet := []string{} + rightKeySet := []string{} + for k := range *m { + leftKeySet = append(leftKeySet, k) + } + for k := range o { + rightKeySet = append(rightKeySet, k) + } + if !reflect.DeepEqual(leftKeySet, rightKeySet) { + return false + } + for _, k := range leftKeySet { + if !(*m)[k].Equal(o[k]) { + return false + } + } + return true +} + func PrintSample(sample *model.Sample) string { buf := make([]string, 0) // Id is a VERY special label. For 'normal' container it's usless, but it's necessary diff --git a/pkg/metrics/kubelet_metrics.go b/pkg/metrics/kubelet_metrics.go index 66960dd75cf..441b4e94ee5 100644 --- a/pkg/metrics/kubelet_metrics.go +++ b/pkg/metrics/kubelet_metrics.go @@ -110,6 +110,10 @@ var KubeletMetricsLabelsToSkip = sets.NewString( type KubeletMetrics Metrics +func (m *KubeletMetrics) Equal(o KubeletMetrics) bool { + return (*Metrics)(m).Equal(Metrics(o)) +} + func NewKubeletMetrics() KubeletMetrics { result := NewMetrics() for metric := range KnownKubeletMetrics { diff --git a/pkg/metrics/scheduler_metrics.go b/pkg/metrics/scheduler_metrics.go index 70c06f8de87..0377732e8bd 100644 --- a/pkg/metrics/scheduler_metrics.go +++ b/pkg/metrics/scheduler_metrics.go @@ -41,6 +41,10 @@ var KnownSchedulerMetrics = map[string][]string{ type SchedulerMetrics Metrics +func (m *SchedulerMetrics) Equal(o SchedulerMetrics) bool { + return (*Metrics)(m).Equal(Metrics(o)) +} + func NewSchedulerMetrics() SchedulerMetrics { result := NewMetrics() for metric := range KnownSchedulerMetrics {