diff --git a/pkg/kubelet/cm/topologymanager/policy.go b/pkg/kubelet/cm/topologymanager/policy.go index ac5bfa443e7..7ffa0a79f10 100644 --- a/pkg/kubelet/cm/topologymanager/policy.go +++ b/pkg/kubelet/cm/topologymanager/policy.go @@ -25,5 +25,5 @@ type Policy interface { //Returns Policy Name Name() string //Returns Pod Admit Handler Response based on hints and policy type - CanAdmitPodResult(admit bool) lifecycle.PodAdmitResult + CanAdmitPodResult(hint *TopologyHint) lifecycle.PodAdmitResult } diff --git a/pkg/kubelet/cm/topologymanager/policy_best_effort.go b/pkg/kubelet/cm/topologymanager/policy_best_effort.go index 0dc7e83aa09..b5f81b2fdb4 100644 --- a/pkg/kubelet/cm/topologymanager/policy_best_effort.go +++ b/pkg/kubelet/cm/topologymanager/policy_best_effort.go @@ -36,7 +36,7 @@ func (p *bestEffortPolicy) Name() string { return PolicyBestEffort } -func (p *bestEffortPolicy) CanAdmitPodResult(admit bool) lifecycle.PodAdmitResult { +func (p *bestEffortPolicy) CanAdmitPodResult(hint *TopologyHint) lifecycle.PodAdmitResult { return lifecycle.PodAdmitResult{ Admit: true, } diff --git a/pkg/kubelet/cm/topologymanager/policy_best_effort_test.go b/pkg/kubelet/cm/topologymanager/policy_best_effort_test.go index 0de12121d1f..2fea3df9920 100644 --- a/pkg/kubelet/cm/topologymanager/policy_best_effort_test.go +++ b/pkg/kubelet/cm/topologymanager/policy_best_effort_test.go @@ -23,25 +23,24 @@ import ( func TestPolicyBestEffortCanAdmitPodResult(t *testing.T) { tcases := []struct { name string - admit bool + hint TopologyHint expected bool }{ { - name: "Affinity is set to false in topology hints", - admit: false, + name: "Preferred is set to false in topology hints", + hint: TopologyHint{nil, false}, expected: true, }, { - name: "Affinity is set to true in topology hints", - admit: true, + name: "Preferred is set to true in topology hints", + hint: TopologyHint{nil, true}, expected: true, }, } for _, tc := range tcases { policy := NewBestEffortPolicy() - admit := tc.admit - result := policy.CanAdmitPodResult(admit) + result := policy.CanAdmitPodResult(&tc.hint) if result.Admit != tc.expected { t.Errorf("Expected Admit field in result to be %t, got %t", tc.expected, result.Admit) diff --git a/pkg/kubelet/cm/topologymanager/policy_none.go b/pkg/kubelet/cm/topologymanager/policy_none.go index ae46bc37a6a..aacdf19aa10 100644 --- a/pkg/kubelet/cm/topologymanager/policy_none.go +++ b/pkg/kubelet/cm/topologymanager/policy_none.go @@ -36,7 +36,7 @@ func (p *nonePolicy) Name() string { return PolicyNone } -func (p *nonePolicy) CanAdmitPodResult(admit bool) lifecycle.PodAdmitResult { +func (p *nonePolicy) CanAdmitPodResult(hint *TopologyHint) lifecycle.PodAdmitResult { return lifecycle.PodAdmitResult{ Admit: true, } diff --git a/pkg/kubelet/cm/topologymanager/policy_none_test.go b/pkg/kubelet/cm/topologymanager/policy_none_test.go index c45b1388bb4..c5d2842e66b 100644 --- a/pkg/kubelet/cm/topologymanager/policy_none_test.go +++ b/pkg/kubelet/cm/topologymanager/policy_none_test.go @@ -41,25 +41,24 @@ func TestName(t *testing.T) { func TestPolicyNoneCanAdmitPodResult(t *testing.T) { tcases := []struct { name string - admit bool + hint TopologyHint expected bool }{ { - name: "Affinity is set to false in topology hints", - admit: false, + name: "Preferred is set to false in topology hints", + hint: TopologyHint{nil, false}, expected: true, }, { - name: "Affinity is set to true in topology hints", - admit: true, + name: "Preferred is set to true in topology hints", + hint: TopologyHint{nil, true}, expected: true, }, } for _, tc := range tcases { policy := NewNonePolicy() - admit := tc.admit - result := policy.CanAdmitPodResult(admit) + result := policy.CanAdmitPodResult(&tc.hint) if result.Admit != tc.expected { t.Errorf("Expected Admit field in result to be %t, got %t", tc.expected, result.Admit) diff --git a/pkg/kubelet/cm/topologymanager/policy_restricted.go b/pkg/kubelet/cm/topologymanager/policy_restricted.go index 63766ba7db9..7993675ce35 100644 --- a/pkg/kubelet/cm/topologymanager/policy_restricted.go +++ b/pkg/kubelet/cm/topologymanager/policy_restricted.go @@ -36,8 +36,8 @@ func (p *restrictedPolicy) Name() string { return PolicyRestricted } -func (p *restrictedPolicy) CanAdmitPodResult(admit bool) lifecycle.PodAdmitResult { - if !admit { +func (p *restrictedPolicy) CanAdmitPodResult(hint *TopologyHint) lifecycle.PodAdmitResult { + if !hint.Preferred { return lifecycle.PodAdmitResult{ Admit: false, Reason: "Topology Affinity Error", diff --git a/pkg/kubelet/cm/topologymanager/policy_restricted_test.go b/pkg/kubelet/cm/topologymanager/policy_restricted_test.go index 66c4c806a2d..d011971632a 100644 --- a/pkg/kubelet/cm/topologymanager/policy_restricted_test.go +++ b/pkg/kubelet/cm/topologymanager/policy_restricted_test.go @@ -23,25 +23,24 @@ import ( func TestPolicyRestrictedCanAdmitPodResult(t *testing.T) { tcases := []struct { name string - admit bool + hint TopologyHint expected bool }{ { - name: "Affinity is set to false in topology hints", - admit: false, + name: "Preferred is set to false in topology hints", + hint: TopologyHint{nil, false}, expected: false, }, { - name: "Affinity is set to true in topology hints", - admit: true, + name: "Preferred is set to true in topology hints", + hint: TopologyHint{nil, true}, expected: true, }, } for _, tc := range tcases { policy := NewRestrictedPolicy() - admit := tc.admit - result := policy.CanAdmitPodResult(admit) + result := policy.CanAdmitPodResult(&tc.hint) if result.Admit != tc.expected { t.Errorf("Expected Admit field in result to be %t, got %t", tc.expected, result.Admit) diff --git a/pkg/kubelet/cm/topologymanager/topology_manager.go b/pkg/kubelet/cm/topologymanager/topology_manager.go index e912916c5ea..581e43e1949 100644 --- a/pkg/kubelet/cm/topologymanager/topology_manager.go +++ b/pkg/kubelet/cm/topologymanager/topology_manager.go @@ -308,7 +308,7 @@ func (m *manager) Admit(attrs *lifecycle.PodAdmitAttributes) lifecycle.PodAdmitR if pod.Status.QOSClass == v1.PodQOSGuaranteed { for _, container := range append(pod.Spec.InitContainers, pod.Spec.Containers...) { result := m.calculateAffinity(*pod, container) - admitPod := m.policy.CanAdmitPodResult(result.Preferred) + admitPod := m.policy.CanAdmitPodResult(&result) if !admitPod.Admit { return admitPod }