Skip to content

Commit

Permalink
use appsv1 apigroup for StatefulSets and DaemonSets
Browse files Browse the repository at this point in the history
  • Loading branch information
tariq1890 committed Apr 18, 2019
1 parent fd4d840 commit 0fcdde4
Show file tree
Hide file tree
Showing 7 changed files with 61 additions and 67 deletions.
5 changes: 2 additions & 3 deletions internal/collector/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import (

"golang.org/x/net/context"
appsv1 "k8s.io/api/apps/v1"
appsv1beta1 "k8s.io/api/apps/v1beta1"
autoscaling "k8s.io/api/autoscaling/v2beta1"
batchv1 "k8s.io/api/batch/v1"
batchv1beta1 "k8s.io/api/batch/v1beta1"
Expand Down Expand Up @@ -178,7 +177,7 @@ func (b *Builder) buildDaemonSetCollector() *coll.Collector {
familyHeaders,
composedMetricGenFuncs,
)
reflectorPerNamespace(b.ctx, b.kubeClient, &extensions.DaemonSet{}, store, b.namespaces, createDaemonSetListWatch)
reflectorPerNamespace(b.ctx, b.kubeClient, &appsv1.DaemonSet{}, store, b.namespaces, createDaemonSetListWatch)

return coll.NewCollector(store)
}
Expand Down Expand Up @@ -433,7 +432,7 @@ func (b *Builder) buildStatefulSetCollector() *coll.Collector {
familyHeaders,
composedMetricGenFuncs,
)
reflectorPerNamespace(b.ctx, b.kubeClient, &appsv1beta1.StatefulSet{}, store, b.namespaces, createStatefulSetListWatch)
reflectorPerNamespace(b.ctx, b.kubeClient, &appsv1.StatefulSet{}, store, b.namespaces, createStatefulSetListWatch)

return coll.NewCollector(store)
}
Expand Down
33 changes: 16 additions & 17 deletions internal/collector/daemonset.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,13 @@ limitations under the License.
package collector

import (
"k8s.io/kube-state-metrics/pkg/metric"

"k8s.io/api/extensions/v1beta1"
v1 "k8s.io/api/apps/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/watch"
clientset "k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/cache"
"k8s.io/kube-state-metrics/pkg/metric"
)

var (
Expand All @@ -37,7 +36,7 @@ var (
Name: "kube_daemonset_created",
Type: metric.Gauge,
Help: "Unix creation timestamp",
GenerateFunc: wrapDaemonSetFunc(func(d *v1beta1.DaemonSet) *metric.Family {
GenerateFunc: wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family {
ms := []*metric.Metric{}

if !d.CreationTimestamp.IsZero() {
Expand All @@ -57,7 +56,7 @@ var (
Name: "kube_daemonset_status_current_number_scheduled",
Type: metric.Gauge,
Help: "The number of nodes running at least one daemon pod and are supposed to.",
GenerateFunc: wrapDaemonSetFunc(func(d *v1beta1.DaemonSet) *metric.Family {
GenerateFunc: wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family {
return &metric.Family{
Metrics: []*metric.Metric{
{
Expand All @@ -73,7 +72,7 @@ var (
Name: "kube_daemonset_status_desired_number_scheduled",
Type: metric.Gauge,
Help: "The number of nodes that should be running the daemon pod.",
GenerateFunc: wrapDaemonSetFunc(func(d *v1beta1.DaemonSet) *metric.Family {
GenerateFunc: wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family {
return &metric.Family{
Metrics: []*metric.Metric{
{
Expand All @@ -89,7 +88,7 @@ var (
Name: "kube_daemonset_status_number_available",
Type: metric.Gauge,
Help: "The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and available",
GenerateFunc: wrapDaemonSetFunc(func(d *v1beta1.DaemonSet) *metric.Family {
GenerateFunc: wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family {
return &metric.Family{
Metrics: []*metric.Metric{
{
Expand All @@ -105,7 +104,7 @@ var (
Name: "kube_daemonset_status_number_misscheduled",
Type: metric.Gauge,
Help: "The number of nodes running a daemon pod but are not supposed to.",
GenerateFunc: wrapDaemonSetFunc(func(d *v1beta1.DaemonSet) *metric.Family {
GenerateFunc: wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family {
return &metric.Family{
Metrics: []*metric.Metric{
{
Expand All @@ -121,7 +120,7 @@ var (
Name: "kube_daemonset_status_number_ready",
Type: metric.Gauge,
Help: "The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready.",
GenerateFunc: wrapDaemonSetFunc(func(d *v1beta1.DaemonSet) *metric.Family {
GenerateFunc: wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family {
return &metric.Family{
Metrics: []*metric.Metric{
{
Expand All @@ -137,7 +136,7 @@ var (
Name: "kube_daemonset_status_number_unavailable",
Type: metric.Gauge,
Help: "The number of nodes that should be running the daemon pod and have none of the daemon pod running and available",
GenerateFunc: wrapDaemonSetFunc(func(d *v1beta1.DaemonSet) *metric.Family {
GenerateFunc: wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family {
return &metric.Family{
Metrics: []*metric.Metric{
{
Expand All @@ -153,7 +152,7 @@ var (
Name: "kube_daemonset_updated_number_scheduled",
Type: metric.Gauge,
Help: "The total number of nodes that are running updated daemon pod",
GenerateFunc: wrapDaemonSetFunc(func(d *v1beta1.DaemonSet) *metric.Family {
GenerateFunc: wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family {
return &metric.Family{
Metrics: []*metric.Metric{
{
Expand All @@ -167,7 +166,7 @@ var (
Name: "kube_daemonset_metadata_generation",
Type: metric.Gauge,
Help: "Sequence number representing a specific generation of the desired state.",
GenerateFunc: wrapDaemonSetFunc(func(d *v1beta1.DaemonSet) *metric.Family {
GenerateFunc: wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family {
return &metric.Family{
Metrics: []*metric.Metric{
{
Expand All @@ -183,7 +182,7 @@ var (
Name: descDaemonSetLabelsName,
Type: metric.Gauge,
Help: descDaemonSetLabelsHelp,
GenerateFunc: wrapDaemonSetFunc(func(d *v1beta1.DaemonSet) *metric.Family {
GenerateFunc: wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family {
labelKeys, labelValues := kubeLabelsToPrometheusLabels(d.ObjectMeta.Labels)
return &metric.Family{
Metrics: []*metric.Metric{
Expand All @@ -199,9 +198,9 @@ var (
}
)

func wrapDaemonSetFunc(f func(*v1beta1.DaemonSet) *metric.Family) func(interface{}) *metric.Family {
func wrapDaemonSetFunc(f func(*v1.DaemonSet) *metric.Family) func(interface{}) *metric.Family {
return func(obj interface{}) *metric.Family {
daemonSet := obj.(*v1beta1.DaemonSet)
daemonSet := obj.(*v1.DaemonSet)

metricFamily := f(daemonSet)

Expand All @@ -217,10 +216,10 @@ func wrapDaemonSetFunc(f func(*v1beta1.DaemonSet) *metric.Family) func(interface
func createDaemonSetListWatch(kubeClient clientset.Interface, ns string) cache.ListWatch {
return cache.ListWatch{
ListFunc: func(opts metav1.ListOptions) (runtime.Object, error) {
return kubeClient.ExtensionsV1beta1().DaemonSets(ns).List(opts)
return kubeClient.AppsV1().DaemonSets(ns).List(opts)
},
WatchFunc: func(opts metav1.ListOptions) (watch.Interface, error) {
return kubeClient.ExtensionsV1beta1().DaemonSets(ns).Watch(opts)
return kubeClient.AppsV1().DaemonSets(ns).Watch(opts)
},
}
}
14 changes: 7 additions & 7 deletions internal/collector/daemonset_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import (
"testing"
"time"

"k8s.io/api/extensions/v1beta1"
v1 "k8s.io/api/apps/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kube-state-metrics/pkg/metric"
)
Expand Down Expand Up @@ -52,7 +52,7 @@ func TestDaemonSetCollector(t *testing.T) {
`
cases := []generateMetricsTestCase{
{
Obj: &v1beta1.DaemonSet{
Obj: &v1.DaemonSet{
ObjectMeta: metav1.ObjectMeta{
Name: "ds1",
Namespace: "ns1",
Expand All @@ -61,7 +61,7 @@ func TestDaemonSetCollector(t *testing.T) {
},
Generation: 21,
},
Status: v1beta1.DaemonSetStatus{
Status: v1.DaemonSetStatus{
CurrentNumberScheduled: 15,
NumberMisscheduled: 10,
DesiredNumberScheduled: 5,
Expand Down Expand Up @@ -92,7 +92,7 @@ func TestDaemonSetCollector(t *testing.T) {
},
},
{
Obj: &v1beta1.DaemonSet{
Obj: &v1.DaemonSet{
ObjectMeta: metav1.ObjectMeta{
Name: "ds2",
CreationTimestamp: metav1.Time{Time: time.Unix(1500000000, 0)},
Expand All @@ -102,7 +102,7 @@ func TestDaemonSetCollector(t *testing.T) {
},
Generation: 14,
},
Status: v1beta1.DaemonSetStatus{
Status: v1.DaemonSetStatus{
CurrentNumberScheduled: 10,
NumberMisscheduled: 5,
DesiredNumberScheduled: 0,
Expand Down Expand Up @@ -135,7 +135,7 @@ func TestDaemonSetCollector(t *testing.T) {
},
},
{
Obj: &v1beta1.DaemonSet{
Obj: &v1.DaemonSet{
ObjectMeta: metav1.ObjectMeta{
Name: "ds3",
CreationTimestamp: metav1.Time{Time: time.Unix(1500000000, 0)},
Expand All @@ -145,7 +145,7 @@ func TestDaemonSetCollector(t *testing.T) {
},
Generation: 15,
},
Status: v1beta1.DaemonSetStatus{
Status: v1.DaemonSetStatus{
CurrentNumberScheduled: 10,
NumberMisscheduled: 5,
DesiredNumberScheduled: 15,
Expand Down
46 changes: 21 additions & 25 deletions internal/collector/statefulset.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ package collector
import (
"k8s.io/kube-state-metrics/pkg/metric"

"k8s.io/api/apps/v1beta1"
v1 "k8s.io/api/apps/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/watch"
Expand All @@ -37,7 +37,7 @@ var (
Name: "kube_statefulset_created",
Type: metric.Gauge,
Help: "Unix creation timestamp",
GenerateFunc: wrapStatefulSetFunc(func(s *v1beta1.StatefulSet) *metric.Family {
GenerateFunc: wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family {
ms := []*metric.Metric{}

if !s.CreationTimestamp.IsZero() {
Expand All @@ -55,7 +55,7 @@ var (
Name: "kube_statefulset_status_replicas",
Type: metric.Gauge,
Help: "The number of replicas per StatefulSet.",
GenerateFunc: wrapStatefulSetFunc(func(s *v1beta1.StatefulSet) *metric.Family {
GenerateFunc: wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family {
return &metric.Family{
Metrics: []*metric.Metric{
{
Expand All @@ -69,7 +69,7 @@ var (
Name: "kube_statefulset_status_replicas_current",
Type: metric.Gauge,
Help: "The number of current replicas per StatefulSet.",
GenerateFunc: wrapStatefulSetFunc(func(s *v1beta1.StatefulSet) *metric.Family {
GenerateFunc: wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family {
return &metric.Family{
Metrics: []*metric.Metric{
{
Expand All @@ -83,7 +83,7 @@ var (
Name: "kube_statefulset_status_replicas_ready",
Type: metric.Gauge,
Help: "The number of ready replicas per StatefulSet.",
GenerateFunc: wrapStatefulSetFunc(func(s *v1beta1.StatefulSet) *metric.Family {
GenerateFunc: wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family {
return &metric.Family{
Metrics: []*metric.Metric{
{
Expand All @@ -97,7 +97,7 @@ var (
Name: "kube_statefulset_status_replicas_updated",
Type: metric.Gauge,
Help: "The number of updated replicas per StatefulSet.",
GenerateFunc: wrapStatefulSetFunc(func(s *v1beta1.StatefulSet) *metric.Family {
GenerateFunc: wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family {
return &metric.Family{
Metrics: []*metric.Metric{
{
Expand All @@ -111,25 +111,21 @@ var (
Name: "kube_statefulset_status_observed_generation",
Type: metric.Gauge,
Help: "The generation observed by the StatefulSet controller.",
GenerateFunc: wrapStatefulSetFunc(func(s *v1beta1.StatefulSet) *metric.Family {
ms := []*metric.Metric{}

if s.Status.ObservedGeneration != nil {
ms = append(ms, &metric.Metric{
Value: float64(*s.Status.ObservedGeneration),
})
}

GenerateFunc: wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family {
return &metric.Family{
Metrics: ms,
Metrics: []*metric.Metric{
{
Value: float64(s.Status.ObservedGeneration),
},
},
}
}),
},
{
Name: "kube_statefulset_replicas",
Type: metric.Gauge,
Help: "Number of desired pods for a StatefulSet.",
GenerateFunc: wrapStatefulSetFunc(func(s *v1beta1.StatefulSet) *metric.Family {
GenerateFunc: wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family {
ms := []*metric.Metric{}

if s.Spec.Replicas != nil {
Expand All @@ -147,7 +143,7 @@ var (
Name: "kube_statefulset_metadata_generation",
Type: metric.Gauge,
Help: "Sequence number representing a specific generation of the desired state for the StatefulSet.",
GenerateFunc: wrapStatefulSetFunc(func(s *v1beta1.StatefulSet) *metric.Family {
GenerateFunc: wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family {
return &metric.Family{
Metrics: []*metric.Metric{
{
Expand All @@ -161,7 +157,7 @@ var (
Name: descStatefulSetLabelsName,
Type: metric.Gauge,
Help: descStatefulSetLabelsHelp,
GenerateFunc: wrapStatefulSetFunc(func(s *v1beta1.StatefulSet) *metric.Family {
GenerateFunc: wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family {
labelKeys, labelValues := kubeLabelsToPrometheusLabels(s.Labels)
return &metric.Family{
Metrics: []*metric.Metric{
Expand All @@ -178,7 +174,7 @@ var (
Name: "kube_statefulset_status_current_revision",
Type: metric.Gauge,
Help: "Indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas).",
GenerateFunc: wrapStatefulSetFunc(func(s *v1beta1.StatefulSet) *metric.Family {
GenerateFunc: wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family {
return &metric.Family{
Metrics: []*metric.Metric{
{
Expand All @@ -194,7 +190,7 @@ var (
Name: "kube_statefulset_status_update_revision",
Type: metric.Gauge,
Help: "Indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)",
GenerateFunc: wrapStatefulSetFunc(func(s *v1beta1.StatefulSet) *metric.Family {
GenerateFunc: wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family {
return &metric.Family{
Metrics: []*metric.Metric{
{
Expand All @@ -209,9 +205,9 @@ var (
}
)

func wrapStatefulSetFunc(f func(*v1beta1.StatefulSet) *metric.Family) func(interface{}) *metric.Family {
func wrapStatefulSetFunc(f func(*v1.StatefulSet) *metric.Family) func(interface{}) *metric.Family {
return func(obj interface{}) *metric.Family {
statefulSet := obj.(*v1beta1.StatefulSet)
statefulSet := obj.(*v1.StatefulSet)

metricFamily := f(statefulSet)

Expand All @@ -227,10 +223,10 @@ func wrapStatefulSetFunc(f func(*v1beta1.StatefulSet) *metric.Family) func(inter
func createStatefulSetListWatch(kubeClient clientset.Interface, ns string) cache.ListWatch {
return cache.ListWatch{
ListFunc: func(opts metav1.ListOptions) (runtime.Object, error) {
return kubeClient.AppsV1beta1().StatefulSets(ns).List(opts)
return kubeClient.AppsV1().StatefulSets(ns).List(opts)
},
WatchFunc: func(opts metav1.ListOptions) (watch.Interface, error) {
return kubeClient.AppsV1beta1().StatefulSets(ns).Watch(opts)
return kubeClient.AppsV1().StatefulSets(ns).Watch(opts)
},
}
}
Loading

0 comments on commit 0fcdde4

Please sign in to comment.