code: func (ctrl *PersistentVolumeController) findProvisionablePlugin(claim *v1.PersistentVolumeClaim) (vol.ProvisionableVolumePlugin, *storage.StorageClass, error) {
  	// provisionClaim() which leads here is never called with claimClass=="", we
  	// can save some checks.
  	claimClass := v1helper.GetPersistentVolumeClaimClass(claim)
  	class, err := ctrl.classLister.Get(claimClass)
  	if err != nil {
  		return nil, nil, err
  	}
  
  	// Find a plugin for the class
  	plugin, err := ctrl.volumePluginMgr.FindProvisionablePluginByName(class.Provisioner)
  	if err != nil {
  		if !strings.HasPrefix(class.Provisioner, "kubernetes.io/") {
  			// External provisioner is requested, do not report error
  			return nil, class, nil
  		}
  		return nil, class, err
  	}
  	return plugin, class, nil
  }
docs: // findProvisionablePlugin finds a provisioner plugin for a given claim.
  // It returns either the provisioning plugin or nil when an external
  // provisioner is requested.