Skip to content

Commit

Permalink
add aws/gce volume id to kube_persistentvolume_info
Browse files Browse the repository at this point in the history
  • Loading branch information
povilasv committed May 22, 2020
1 parent 6c2701a commit b1d5485
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 2 deletions.
25 changes: 23 additions & 2 deletions internal/store/persistentvolume.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,11 +102,32 @@ var (
Type: metric.Gauge,
Help: "Information about persistentvolume.",
GenerateFunc: wrapPersistentVolumeFunc(func(p *v1.PersistentVolume) *metric.Family {
var volLabelIDKey, volLabelIDValue string
switch {
case p.Spec.PersistentVolumeSource.GCEPersistentDisk != nil:
volLabelIDKey = "gce_persistent_disk_name"
volLabelIDValue = p.Spec.PersistentVolumeSource.GCEPersistentDisk.PDName
case p.Spec.PersistentVolumeSource.AWSElasticBlockStore != nil:
volLabelIDKey = "ebs_volume_id"
volLabelIDValue = p.Spec.PersistentVolumeSource.AWSElasticBlockStore.VolumeID
}

if volLabelIDKey == "" {
return &metric.Family{
Metrics: []*metric.Metric{
{
LabelKeys: []string{"storageclass"},
LabelValues: []string{p.Spec.StorageClassName},
Value: 1,
},
},
}
}
return &metric.Family{
Metrics: []*metric.Metric{
{
LabelKeys: []string{"storageclass"},
LabelValues: []string{p.Spec.StorageClassName},
LabelKeys: []string{"storageclass", volLabelIDKey},
LabelValues: []string{p.Spec.StorageClassName, volLabelIDValue},
Value: 1,
},
},
Expand Down
46 changes: 46 additions & 0 deletions internal/store/persistentvolume_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,52 @@ func TestPersistentVolumeStore(t *testing.T) {
`,
MetricNames: []string{"kube_persistentvolume_info"},
},
{
Obj: &v1.PersistentVolume{
Spec: v1.PersistentVolumeSpec{
PersistentVolumeSource: v1.PersistentVolumeSource{
GCEPersistentDisk: &v1.GCEPersistentDiskVolumeSource{
PDName: "name",
},
},
},
ObjectMeta: metav1.ObjectMeta{
Name: "test-pv-available",
},
Status: v1.PersistentVolumeStatus{
Phase: v1.VolumeAvailable,
},
},
Want: `
# HELP kube_persistentvolume_info Information about persistentvolume.
# TYPE kube_persistentvolume_info gauge
kube_persistentvolume_info{gce_persistent_disk_name="name",persistentvolume="test-pv-available",storageclass=""} 1
`,
MetricNames: []string{"kube_persistentvolume_info"},
},
{
Obj: &v1.PersistentVolume{
Spec: v1.PersistentVolumeSpec{
PersistentVolumeSource: v1.PersistentVolumeSource{
AWSElasticBlockStore: &v1.AWSElasticBlockStoreVolumeSource{
VolumeID: "aws://eu-west-1c/vol-012d34d567890123b",
},
},
},
ObjectMeta: metav1.ObjectMeta{
Name: "test-pv-available",
},
Status: v1.PersistentVolumeStatus{
Phase: v1.VolumeAvailable,
},
},
Want: `
# HELP kube_persistentvolume_info Information about persistentvolume.
# TYPE kube_persistentvolume_info gauge
kube_persistentvolume_info{ebs_volume_id="aws://eu-west-1c/vol-012d34d567890123b",gce_persistent_disk_name="name",persistentvolume="test-pv-available",storageclass=""} 1
`,
MetricNames: []string{"kube_persistentvolume_info"},
},
{
Obj: &v1.PersistentVolume{
ObjectMeta: metav1.ObjectMeta{
Expand Down

0 comments on commit b1d5485

Please # to comment.