Merge pull request #3260 from openebs/storage-driver

Add storage driver name to Persistent Volume
This commit is contained in:
Bryan Boreham
2018-07-31 17:58:38 +01:00
committed by GitHub
5 changed files with 31 additions and 2 deletions

View File

@@ -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)
}

View File

@@ -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{