Files
PandaX/apps/devops/services/k8s/pv/pv_detail.go
2022-01-26 14:13:23 +08:00

41 lines
1.3 KiB
Go

package pv
import (
"context"
"fmt"
"pandax/base/global"
v1 "k8s.io/api/core/v1"
metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1"
client "k8s.io/client-go/kubernetes"
)
// PersistentVolumeDetail provides the presentation layer view of Kubernetes Persistent Volume resource.
type PersistentVolumeDetail struct {
// Extends list item structure.
PersistentVolume `json:",inline"`
Message string `json:"message"`
PersistentVolumeSource v1.PersistentVolumeSource `json:"persistentVolumeSource"`
}
// GetPersistentVolumeDetail returns detailed information about a persistent volume
func GetPersistentVolumeDetail(client client.Interface, name string) (*PersistentVolumeDetail, error) {
global.Log.Info(fmt.Sprintf("Getting details of %s persistent volume", name))
rawPersistentVolume, err := client.CoreV1().PersistentVolumes().Get(context.TODO(), name, metaV1.GetOptions{})
if err != nil {
return nil, err
}
return getPersistentVolumeDetail(*rawPersistentVolume), nil
}
func getPersistentVolumeDetail(pv v1.PersistentVolume) *PersistentVolumeDetail {
return &PersistentVolumeDetail{
PersistentVolume: toPersistentVolume(pv),
Message: pv.Status.Message,
PersistentVolumeSource: pv.Spec.PersistentVolumeSource,
}
}