mirror of
https://github.com/weaveworks/scope.git
synced 2026-07-18 04:49:55 +00:00
Merge pull request #3260 from openebs/storage-driver
Add storage driver name to Persistent Volume
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
package kubernetes
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
|
||||
"github.com/weaveworks/scope/report"
|
||||
apiv1 "k8s.io/api/core/v1"
|
||||
)
|
||||
@@ -11,6 +13,7 @@ type PersistentVolume interface {
|
||||
GetNode() report.Node
|
||||
GetAccessMode() string
|
||||
GetVolume() string
|
||||
GetStorageDriver() string
|
||||
}
|
||||
|
||||
// persistentVolume represents kubernetes persistent volume
|
||||
@@ -45,13 +48,34 @@ func (p *persistentVolume) GetVolume() string {
|
||||
return volume
|
||||
}
|
||||
|
||||
// GetStorageDriver returns the backing driver of Persistent Volume
|
||||
func (p *persistentVolume) GetStorageDriver() string {
|
||||
persistentVolumeSource := reflect.ValueOf(p.Spec.PersistentVolumeSource)
|
||||
|
||||
// persistentVolumeSource will have exactly one field which won't be nil,
|
||||
// depending on the type of backing driver used to create the persistent volume
|
||||
// Iterate over the fields and return the non-nil field name
|
||||
for i := 0; i < persistentVolumeSource.NumField(); i++ {
|
||||
if !reflect.ValueOf(persistentVolumeSource.Field(i).Interface()).IsNil() {
|
||||
return persistentVolumeSource.Type().Field(i).Name
|
||||
}
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// GetNode returns Persistent Volume as Node
|
||||
func (p *persistentVolume) GetNode() report.Node {
|
||||
return p.MetaNode(report.MakePersistentVolumeNodeID(p.UID())).WithLatests(map[string]string{
|
||||
latests := map[string]string{
|
||||
NodeType: "Persistent Volume",
|
||||
VolumeClaim: p.GetVolume(),
|
||||
StorageClassName: p.Spec.StorageClassName,
|
||||
Status: string(p.Status.Phase),
|
||||
AccessModes: p.GetAccessMode(),
|
||||
})
|
||||
}
|
||||
|
||||
if p.GetStorageDriver() != "" {
|
||||
latests[StorageDriver] = p.GetStorageDriver()
|
||||
}
|
||||
|
||||
return p.MetaNode(report.MakePersistentVolumeNodeID(p.UID())).WithLatests(latests)
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@ const (
|
||||
Message = report.KubernetesMessage
|
||||
VolumeName = report.KubernetesVolumeName
|
||||
Provisioner = report.KubernetesProvisioner
|
||||
StorageDriver = report.KubernetesStorageDriver
|
||||
)
|
||||
|
||||
// Exposed for testing
|
||||
@@ -112,6 +113,7 @@ var (
|
||||
StorageClassName: {ID: StorageClassName, Label: "Storage class", From: report.FromLatest, Priority: 3},
|
||||
AccessModes: {ID: AccessModes, Label: "Access modes", From: report.FromLatest, Priority: 5},
|
||||
Status: {ID: Status, Label: "Status", From: report.FromLatest, Priority: 6},
|
||||
StorageDriver: {ID: StorageDriver, Label: "Storage driver", From: report.FromLatest, Priority: 7},
|
||||
}
|
||||
|
||||
PersistentVolumeClaimMetadataTemplates = report.MetadataTemplates{
|
||||
|
||||
@@ -290,6 +290,7 @@ var (
|
||||
kubernetes.VolumeClaim: "pvc-6124",
|
||||
kubernetes.AccessModes: "ReadWriteOnce",
|
||||
kubernetes.StorageClassName: "standard",
|
||||
kubernetes.StorageDriver: "iSCSI",
|
||||
}),
|
||||
|
||||
fixture.StorageClassNodeID: StorageClass(fixture.StorageClassNodeID, fixture.PersistentVolumeClaimNodeID).
|
||||
|
||||
@@ -80,6 +80,7 @@ const (
|
||||
KubernetesMessage = "kubernetes_message"
|
||||
KubernetesVolumeName = "kubernetes_volume_name"
|
||||
KubernetesProvisioner = "kubernetes_provisioner"
|
||||
KubernetesStorageDriver = "kubernetes_storage_driver"
|
||||
// probe/awsecs
|
||||
ECSCluster = "ecs_cluster"
|
||||
ECSCreatedAt = "ecs_created_at"
|
||||
|
||||
@@ -380,6 +380,7 @@ var (
|
||||
kubernetes.VolumeClaim: "pvc-6124",
|
||||
kubernetes.AccessModes: "ReadWriteOnce",
|
||||
kubernetes.StorageClassName: "standard",
|
||||
kubernetes.StorageDriver: "iSCSI",
|
||||
}).
|
||||
WithTopology(report.PersistentVolume),
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user