- 
                Notifications
    
You must be signed in to change notification settings  - Fork 364
 
Description
Is your feature request related to a problem?/Why is this needed
See onSCAddOrUpdate implementation in  https://github.com/kubernetes-csi/external-provisioner/blob/v4.0.0/pkg/capacity/capacity.go#L378-L384
	segments := c.topologyInformer.List()
	c.capacitiesLock.Lock()
	defer c.capacitiesLock.Unlock()
	for _, segment := range segments {
		c.addWorkItem(segment, sc)
	}
Currently the capacity controller creates a workqueue item for every segment x storageClass combination, some of which are impossible.
Describe the solution you'd like in detail
Storage classes can specify allowed topologies https://kubernetes.io/docs/concepts/storage/storage-classes/#allowed-topologies so not all combinations of segment x storageClass are valid here. An example would be certain types of storage (and hence storage class) are only available in selected topology segments.
We can reduce potential workqueue cardinality by filtering out impossible segment x storageClass combinations. This allows quicker CSIStorageCapacity object updates.
Describe alternatives you've considered
Additional context