Skip to content

Commit

Permalink
refactor: remove redundant Listers in PodTopologySpread binder
Browse files Browse the repository at this point in the history
  • Loading branch information
slipegg committed Sep 24, 2024
1 parent 73cbd8d commit 324686f
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,6 @@ import (
v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/informers"
appslisters "k8s.io/client-go/listers/apps/v1"
corelisters "k8s.io/client-go/listers/core/v1"
)

const (
Expand All @@ -49,12 +46,8 @@ type TopologySpreadCondition struct {
}

type PodTopologySpreadCheck struct {
args config.PodTopologySpreadArgs
frameworkHandle handle.BinderFrameworkHandle
services corelisters.ServiceLister
replicationCtrls corelisters.ReplicationControllerLister
replicaSets appslisters.ReplicaSetLister
statefulSets appslisters.StatefulSetLister
args config.PodTopologySpreadArgs
frameworkHandle handle.BinderFrameworkHandle
}

var _ framework.CheckConflictsPlugin = &PodTopologySpreadCheck{}
Expand Down Expand Up @@ -93,19 +86,11 @@ func New(plArgs runtime.Object, handle handle.BinderFrameworkHandle) (framework.
if handle.SharedInformerFactory() == nil {
return nil, fmt.Errorf("SharedInformerFactory is nil")
}
pl.setListers(handle.SharedInformerFactory())
}

return pl, nil
}

func (pl *PodTopologySpreadCheck) setListers(factory informers.SharedInformerFactory) {
pl.services = factory.Core().V1().Services().Lister()
pl.replicationCtrls = factory.Core().V1().ReplicationControllers().Lister()
pl.replicaSets = factory.Apps().V1().ReplicaSets().Lister()
pl.statefulSets = factory.Apps().V1().StatefulSets().Lister()
}

// defaultConstraints builds the constraints for a pod using
// .DefaultConstraints and the selectors from the services, replication
// controllers, replica sets and stateful sets that match the pod.
Expand All @@ -114,7 +99,9 @@ func (pl *PodTopologySpreadCheck) defaultConstraints(p *v1.Pod, action v1.Unsati
if err != nil || len(constraints) == 0 {
return nil, err
}
selector := helper.DefaultSelector(p, pl.services, pl.replicationCtrls, pl.replicaSets, pl.statefulSets)
selector := helper.DefaultSelector(p, pl.frameworkHandle.SharedInformerFactory().Core().V1().Services().Lister(),
pl.frameworkHandle.SharedInformerFactory().Core().V1().ReplicationControllers().Lister(),
pl.frameworkHandle.SharedInformerFactory().Apps().V1().ReplicaSets().Lister(), pl.frameworkHandle.SharedInformerFactory().Apps().V1().StatefulSets().Lister())
if selector.Empty() {
return nil, nil
}
Expand Down Expand Up @@ -156,7 +143,9 @@ func (pl *PodTopologySpreadCheck) getTopologyCondition(pod *v1.Pod) (*TopologySp
for _, node := range allNodes {
// In accordance to design, if NodeAffinity or NodeSelector is defined,
// spreading is applied to nodes that pass those filters.
if !helper.PodMatchesNodeSelectorAndAffinityTerms(pod, node) {
nodeInfo := framework.NewNodeInfo()
nodeInfo.SetNode(node)
if !helper.PodMatchesNodeSelectorAndAffinityTerms(pod, nodeInfo) {
continue
}
// Ensure current node's labels contains all topologyKeys in 'Constraints'.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -568,7 +568,6 @@ func TestGetTopologyCondition(t *testing.T) {
DefaultConstraints: tt.defaultConstraints,
},
frameworkHandle: frameworkHandle}
pl.setListers(frameworkHandle.SharedInformerFactory())

gotTopologySpreadCondition, err := pl.getTopologyCondition(tt.pod)
if err != nil {
Expand Down

0 comments on commit 324686f

Please sign in to comment.