From 0ef5506251d8dd66ebd72711d762baf13c6518d1 Mon Sep 17 00:00:00 2001 From: wnxn Date: Fri, 8 Jun 2018 17:42:04 +0800 Subject: [PATCH] fix resolving nil pointer bug --- pkg/models/storage.go | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/pkg/models/storage.go b/pkg/models/storage.go index 53a7a6a90..4980d1629 100644 --- a/pkg/models/storage.go +++ b/pkg/models/storage.go @@ -23,31 +23,40 @@ type StorageMetrics struct { Usage string `json:"usage,omitempty"` } +// List persistent volume claims of a specific storage class func GetPvcListBySc(storageclass string) (res []v12.PersistentVolumeClaim, err error) { - + // Create Kubernetes client cli := client.NewK8sClient() + // Get all persistent volume claims claimList, err := cli.CoreV1().PersistentVolumeClaims("").List(v1.ListOptions{}) if err != nil { return nil, err } - + // Select persistent volume claims which + // storage class name is equal to the specific storage class. for _, claim := range claimList.Items { - if *claim.Spec.StorageClassName != storageclass { + if claim.Spec.StorageClassName != nil && + *claim.Spec.StorageClassName == storageclass { + res = append(res, claim) + } else { continue } - res = append(res, claim) } return res, nil } +// Get metrics of a specific storage class func GetScMetrics(storageclass string) (res StorageMetrics, err error) { + // Create Kubernetes client cli := client.NewK8sClient() + // Get persistent volumes pvList, err := cli.CoreV1().PersistentVolumes().List(v1.ListOptions{}) if err != nil { return StorageMetrics{}, err } var total resource.Quantity + // Gathering metrics of a specific storage class for _, volume := range pvList.Items { if volume.Spec.StorageClassName != storageclass { continue