mirror of
https://github.com/weaveworks/scope.git
synced 2026-05-06 01:08:03 +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{
|
||||
|
||||
Reference in New Issue
Block a user