From 5010dbe9fd962f005fa971d4d9fdb9528121c3fc Mon Sep 17 00:00:00 2001 From: guwe Date: Sun, 7 Feb 2021 12:48:59 +0000 Subject: [PATCH] Add function to get pv,pvc --- internal/commands/root/root.go | 11 +++++++++-- manager/resource.go | 21 ++++++++++++++++++++- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/internal/commands/root/root.go b/internal/commands/root/root.go index 96b304a..0a523a2 100644 --- a/internal/commands/root/root.go +++ b/internal/commands/root/root.go @@ -118,8 +118,15 @@ func runRootCommandWithProviderAndClient(ctx context.Context, pInit provider.Ini secretInformer := scmInformerFactory.Core().V1().Secrets() configMapInformer := scmInformerFactory.Core().V1().ConfigMaps() serviceInformer := scmInformerFactory.Core().V1().Services() - - rm, err := manager.NewResourceManager(podInformer.Lister(), secretInformer.Lister(), configMapInformer.Lister(), serviceInformer.Lister()) + pvcInformer := scmInformerFactory.Core().V1().PersistentVolumeClaims() + pvInformer := scmInformerFactory.Core().V1().PersistentVolumes() + + rm, err := manager.NewResourceManager(podInformer.Lister(), + secretInformer.Lister(), + configMapInformer.Lister(), + serviceInformer.Lister(), + pvcInformer.Lister(), + pvInformer.Lister()) if err != nil { return errors.Wrap(err, "could not create resource manager") } diff --git a/manager/resource.go b/manager/resource.go index ca1b72c..3d63258 100644 --- a/manager/resource.go +++ b/manager/resource.go @@ -28,15 +28,24 @@ type ResourceManager struct { secretLister corev1listers.SecretLister configMapLister corev1listers.ConfigMapLister serviceLister corev1listers.ServiceLister + pvcLister corev1listers.PersistentVolumeClaimLister + pvLister corev1listers.PersistentVolumeLister } // NewResourceManager returns a ResourceManager with the internal maps initialized. -func NewResourceManager(podLister corev1listers.PodLister, secretLister corev1listers.SecretLister, configMapLister corev1listers.ConfigMapLister, serviceLister corev1listers.ServiceLister) (*ResourceManager, error) { +func NewResourceManager(podLister corev1listers.PodLister, + secretLister corev1listers.SecretLister, + configMapLister corev1listers.ConfigMapLister, + serviceLister corev1listers.ServiceLister, + pvcLister corev1listers.PersistentVolumeClaimLister, + pvLister corev1listers.PersistentVolumeLister) (*ResourceManager, error) { rm := ResourceManager{ podLister: podLister, secretLister: secretLister, configMapLister: configMapLister, serviceLister: serviceLister, + pvcLister: pvcLister, + pvLister: pvLister, } return &rm, nil } @@ -65,3 +74,13 @@ func (rm *ResourceManager) GetSecret(name, namespace string) (*v1.Secret, error) func (rm *ResourceManager) ListServices() ([]*v1.Service, error) { return rm.serviceLister.List(labels.Everything()) } + +// GetPersistentVolumeClaim retrieves the specified pvc from Kubernetes +func (rm *ResourceManager) GetPersistentVolumeClaim(name, namespace string) (*v1.PersistentVolumeClaim, error) { + return rm.pvcLister.PersistentVolumeClaims(namespace).Get(name) +} + +// GetPersistentVolume retrieves the specified pv from Kubernetes +func (rm *ResourceManager) GetPersistentVolume(name string) (*v1.PersistentVolume, error) { + return rm.pvLister.Get(name) +}