Skip to content

Commit

Permalink
Fixes New metric for deployment revision kubernetes#746
Browse files Browse the repository at this point in the history
  • Loading branch information
bvoss committed May 9, 2019
1 parent d71e708 commit 2ad556e
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 0 deletions.
23 changes: 23 additions & 0 deletions internal/collector/deployment.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ limitations under the License.
package collector

import (
"strconv"

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

v1 "k8s.io/api/apps/v1"
Expand Down Expand Up @@ -227,6 +229,27 @@ var (
}
}),
},
{
Name: "kube_deployment_revision",
Type: metric.Gauge,
Help: "Sequence number representing a specific revision of the deployment controller represented by the annotaion 'deployment.kubernetes.io/revision'.",
GenerateFunc: wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
if d.ObjectMeta.Annotations == nil {
return &metric.Family{}
}
revision, err := strconv.Atoi(d.ObjectMeta.Annotations["deployment.kubernetes.io/revision"])
if err != nil {
return &metric.Family{}
}
return &metric.Family{
Metrics: []*metric.Metric{
{
Value: float64(revision),
},
},
}
}),
},
}
)

Expand Down
10 changes: 10 additions & 0 deletions internal/collector/deployment_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ func TestDeploymentCollector(t *testing.T) {
# TYPE kube_deployment_spec_strategy_rollingupdate_max_surge gauge
# HELP kube_deployment_labels Kubernetes labels converted to Prometheus labels.
# TYPE kube_deployment_labels gauge
# HELP kube_deployment_revision Sequence number representing a specific revision of the deployment controller represented by the annotaion 'deployment.kubernetes.io/revision'.
# TYPE kube_deployment_revision gauge
`
cases := []generateMetricsTestCase{
{
Expand All @@ -76,6 +78,9 @@ func TestDeploymentCollector(t *testing.T) {
Labels: map[string]string{
"app": "example1",
},
Annotations: map[string]string{
"deployment.kubernetes.io/revision": "1",
},
Generation: 21,
},
Status: v1.DeploymentStatus{
Expand Down Expand Up @@ -108,6 +113,7 @@ func TestDeploymentCollector(t *testing.T) {
kube_deployment_status_replicas_unavailable{deployment="depl1",namespace="ns1"} 5
kube_deployment_status_replicas_updated{deployment="depl1",namespace="ns1"} 2
kube_deployment_status_replicas{deployment="depl1",namespace="ns1"} 15
kube_deployment_revision{deployment="depl1",namespace="ns1"} 1
`,
},
{
Expand All @@ -118,6 +124,9 @@ func TestDeploymentCollector(t *testing.T) {
Labels: map[string]string{
"app": "example2",
},
Annotations: map[string]string{
"deployment.kubernetes.io/revision": "3",
},
Generation: 14,
},
Status: v1.DeploymentStatus{
Expand Down Expand Up @@ -150,6 +159,7 @@ func TestDeploymentCollector(t *testing.T) {
kube_deployment_status_replicas_unavailable{deployment="depl2",namespace="ns2"} 0
kube_deployment_status_replicas_updated{deployment="depl2",namespace="ns2"} 1
kube_deployment_status_replicas{deployment="depl2",namespace="ns2"} 10
kube_deployment_revision{deployment="depl2",namespace="ns2"} 3
`,
},
}
Expand Down

0 comments on commit 2ad556e

Please sign in to comment.