mirror of
https://github.com/optim-enterprises-bv/kubernetes.git
synced 2025-11-03 11:48:15 +00:00
refactor scheduler extender related API
- move extender related API from pkg/scheduler/api to pkg/scheduler/apis/extender/v1 - alias extenderv1 to pkg/scheduler/apis/extender/v1 - use NodeScore and NodeScoreList in non-extender logic
This commit is contained in:
@@ -41,6 +41,7 @@ import (
|
||||
priorityutil "k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/util"
|
||||
schedulerapi "k8s.io/kubernetes/pkg/scheduler/api"
|
||||
schedulerconfig "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
||||
extenderv1 "k8s.io/kubernetes/pkg/scheduler/apis/extender/v1"
|
||||
framework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1"
|
||||
internalcache "k8s.io/kubernetes/pkg/scheduler/internal/cache"
|
||||
internalqueue "k8s.io/kubernetes/pkg/scheduler/internal/queue"
|
||||
@@ -79,25 +80,25 @@ func hasNoPodsPredicate(pod *v1.Pod, meta algorithmpredicates.PredicateMetadata,
|
||||
return false, []algorithmpredicates.PredicateFailureReason{algorithmpredicates.ErrFakePredicate}, nil
|
||||
}
|
||||
|
||||
func numericPriority(pod *v1.Pod, nodeNameToInfo map[string]*schedulernodeinfo.NodeInfo, nodes []*v1.Node) (schedulerapi.HostPriorityList, error) {
|
||||
result := []schedulerapi.HostPriority{}
|
||||
func numericPriority(pod *v1.Pod, nodeNameToInfo map[string]*schedulernodeinfo.NodeInfo, nodes []*v1.Node) (framework.NodeScoreList, error) {
|
||||
result := []framework.NodeScore{}
|
||||
for _, node := range nodes {
|
||||
score, err := strconv.Atoi(node.Name)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
result = append(result, schedulerapi.HostPriority{
|
||||
Host: node.Name,
|
||||
result = append(result, framework.NodeScore{
|
||||
Name: node.Name,
|
||||
Score: int64(score),
|
||||
})
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func reverseNumericPriority(pod *v1.Pod, nodeNameToInfo map[string]*schedulernodeinfo.NodeInfo, nodes []*v1.Node) (schedulerapi.HostPriorityList, error) {
|
||||
func reverseNumericPriority(pod *v1.Pod, nodeNameToInfo map[string]*schedulernodeinfo.NodeInfo, nodes []*v1.Node) (framework.NodeScoreList, error) {
|
||||
var maxScore float64
|
||||
minScore := math.MaxFloat64
|
||||
reverseResult := []schedulerapi.HostPriority{}
|
||||
reverseResult := []framework.NodeScore{}
|
||||
result, err := numericPriority(pod, nodeNameToInfo, nodes)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -108,8 +109,8 @@ func reverseNumericPriority(pod *v1.Pod, nodeNameToInfo map[string]*schedulernod
|
||||
minScore = math.Min(minScore, float64(hostPriority.Score))
|
||||
}
|
||||
for _, hostPriority := range result {
|
||||
reverseResult = append(reverseResult, schedulerapi.HostPriority{
|
||||
Host: hostPriority.Host,
|
||||
reverseResult = append(reverseResult, framework.NodeScore{
|
||||
Name: hostPriority.Name,
|
||||
Score: int64(maxScore + minScore - float64(hostPriority.Score)),
|
||||
})
|
||||
}
|
||||
@@ -117,20 +118,20 @@ func reverseNumericPriority(pod *v1.Pod, nodeNameToInfo map[string]*schedulernod
|
||||
return reverseResult, nil
|
||||
}
|
||||
|
||||
func trueMapPriority(pod *v1.Pod, meta interface{}, nodeInfo *schedulernodeinfo.NodeInfo) (schedulerapi.HostPriority, error) {
|
||||
return schedulerapi.HostPriority{
|
||||
Host: nodeInfo.Node().Name,
|
||||
func trueMapPriority(pod *v1.Pod, meta interface{}, nodeInfo *schedulernodeinfo.NodeInfo) (framework.NodeScore, error) {
|
||||
return framework.NodeScore{
|
||||
Name: nodeInfo.Node().Name,
|
||||
Score: 1,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func falseMapPriority(pod *v1.Pod, meta interface{}, nodeInfo *schedulernodeinfo.NodeInfo) (schedulerapi.HostPriority, error) {
|
||||
return schedulerapi.HostPriority{}, errPrioritize
|
||||
func falseMapPriority(pod *v1.Pod, meta interface{}, nodeInfo *schedulernodeinfo.NodeInfo) (framework.NodeScore, error) {
|
||||
return framework.NodeScore{}, errPrioritize
|
||||
}
|
||||
|
||||
func getNodeReducePriority(pod *v1.Pod, meta interface{}, nodeNameToInfo map[string]*schedulernodeinfo.NodeInfo, result schedulerapi.HostPriorityList) error {
|
||||
func getNodeReducePriority(pod *v1.Pod, meta interface{}, nodeNameToInfo map[string]*schedulernodeinfo.NodeInfo, result framework.NodeScoreList) error {
|
||||
for _, host := range result {
|
||||
if host.Host == "" {
|
||||
if host.Name == "" {
|
||||
return fmt.Errorf("unexpected empty host name")
|
||||
}
|
||||
}
|
||||
@@ -189,45 +190,45 @@ func TestSelectHost(t *testing.T) {
|
||||
scheduler := genericScheduler{}
|
||||
tests := []struct {
|
||||
name string
|
||||
list schedulerapi.HostPriorityList
|
||||
list framework.NodeScoreList
|
||||
possibleHosts sets.String
|
||||
expectsErr bool
|
||||
}{
|
||||
{
|
||||
name: "unique properly ordered scores",
|
||||
list: []schedulerapi.HostPriority{
|
||||
{Host: "machine1.1", Score: 1},
|
||||
{Host: "machine2.1", Score: 2},
|
||||
list: []framework.NodeScore{
|
||||
{Name: "machine1.1", Score: 1},
|
||||
{Name: "machine2.1", Score: 2},
|
||||
},
|
||||
possibleHosts: sets.NewString("machine2.1"),
|
||||
expectsErr: false,
|
||||
},
|
||||
{
|
||||
name: "equal scores",
|
||||
list: []schedulerapi.HostPriority{
|
||||
{Host: "machine1.1", Score: 1},
|
||||
{Host: "machine1.2", Score: 2},
|
||||
{Host: "machine1.3", Score: 2},
|
||||
{Host: "machine2.1", Score: 2},
|
||||
list: []framework.NodeScore{
|
||||
{Name: "machine1.1", Score: 1},
|
||||
{Name: "machine1.2", Score: 2},
|
||||
{Name: "machine1.3", Score: 2},
|
||||
{Name: "machine2.1", Score: 2},
|
||||
},
|
||||
possibleHosts: sets.NewString("machine1.2", "machine1.3", "machine2.1"),
|
||||
expectsErr: false,
|
||||
},
|
||||
{
|
||||
name: "out of order scores",
|
||||
list: []schedulerapi.HostPriority{
|
||||
{Host: "machine1.1", Score: 3},
|
||||
{Host: "machine1.2", Score: 3},
|
||||
{Host: "machine2.1", Score: 2},
|
||||
{Host: "machine3.1", Score: 1},
|
||||
{Host: "machine1.3", Score: 3},
|
||||
list: []framework.NodeScore{
|
||||
{Name: "machine1.1", Score: 3},
|
||||
{Name: "machine1.2", Score: 3},
|
||||
{Name: "machine2.1", Score: 2},
|
||||
{Name: "machine3.1", Score: 1},
|
||||
{Name: "machine1.3", Score: 3},
|
||||
},
|
||||
possibleHosts: sets.NewString("machine1.1", "machine1.2", "machine1.3"),
|
||||
expectsErr: false,
|
||||
},
|
||||
{
|
||||
name: "empty priority list",
|
||||
list: []schedulerapi.HostPriority{},
|
||||
list: []framework.NodeScore{},
|
||||
possibleHosts: sets.NewString(),
|
||||
expectsErr: true,
|
||||
},
|
||||
@@ -1011,7 +1012,7 @@ func TestZeroRequest(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func printNodeToVictims(nodeToVictims map[*v1.Node]*schedulerapi.Victims) string {
|
||||
func printNodeToVictims(nodeToVictims map[*v1.Node]*extenderv1.Victims) string {
|
||||
var output string
|
||||
for node, victims := range nodeToVictims {
|
||||
output += node.Name + ": ["
|
||||
@@ -1023,7 +1024,7 @@ func printNodeToVictims(nodeToVictims map[*v1.Node]*schedulerapi.Victims) string
|
||||
return output
|
||||
}
|
||||
|
||||
func checkPreemptionVictims(expected map[string]map[string]bool, nodeToPods map[*v1.Node]*schedulerapi.Victims) error {
|
||||
func checkPreemptionVictims(expected map[string]map[string]bool, nodeToPods map[*v1.Node]*extenderv1.Victims) error {
|
||||
if len(expected) == len(nodeToPods) {
|
||||
for k, victims := range nodeToPods {
|
||||
if expPods, ok := expected[k.Name]; ok {
|
||||
|
||||
Reference in New Issue
Block a user