From a87892f901c4236aedac4efc87abebc35a9ca8f1 Mon Sep 17 00:00:00 2001 From: zhangmin Date: Tue, 28 Jul 2020 11:15:57 +0800 Subject: [PATCH] get storage capapbility from provioner capability first Signed-off-by: zhangmin --- .../capability/capability_controller.go | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/pkg/controller/storage/capability/capability_controller.go b/pkg/controller/storage/capability/capability_controller.go index d9ac286f0..8d9006a57 100644 --- a/pkg/controller/storage/capability/capability_controller.go +++ b/pkg/controller/storage/capability/capability_controller.go @@ -378,7 +378,7 @@ func (c *StorageCapabilityController) deleteSnapshotClass(name string) error { return c.snapshotClassClient.Delete(name, &metav1.DeleteOptions{}) } -func (c *StorageCapabilityController) nonCSICapability(provisioner string) (*capability.StorageClassCapabilitySpec, error) { +func (c *StorageCapabilityController) capabilityFromProvisioner(provisioner string) (*capability.StorageClassCapabilitySpec, error) { provisionerCapability, err := c.provisionerCapabilityLister.Get(getProvisionerCapabilityName(provisioner)) if err != nil { if errors.IsNotFound(err) { @@ -386,6 +386,7 @@ func (c *StorageCapabilityController) nonCSICapability(provisioner string) (*cap } return nil, err } + klog.V(4).Infof("get provisioner capability:%s %v", provisioner, provisionerCapability) capabilitySpec := &capability.StorageClassCapabilitySpec{ Features: provisionerCapability.Spec.Features, } @@ -393,19 +394,25 @@ func (c *StorageCapabilityController) nonCSICapability(provisioner string) (*cap } func (c *StorageCapabilityController) getCapabilitySpec(storageClass *storagev1.StorageClass) (*capability.StorageClassCapabilitySpec, error) { - isCsi, err := c.isCSIStorage(storageClass.Provisioner) + // get from provisioner capability first + klog.V(4).Info("get cap ", storageClass.Provisioner) + capabilitySpec, err := c.capabilityFromProvisioner(storageClass.Provisioner) if err != nil { return nil, err } - var capabilitySpec *capability.StorageClassCapabilitySpec - if isCsi { - capabilitySpec, err = csiCapability(c.csiAddressGetter(storageClass.Provisioner)) - } else { - capabilitySpec, err = c.nonCSICapability(storageClass.Provisioner) - } - if err != nil { - return nil, err + // csi of storage capability + if capabilitySpec == nil { + isCsi, err := c.isCSIStorage(storageClass.Provisioner) + if err != nil { + return nil, err + } + if isCsi { + capabilitySpec, err = csiCapability(c.csiAddressGetter(storageClass.Provisioner)) + if err != nil { + return nil, err + } + } } if capabilitySpec != nil {