Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
2c8b571d
Unverified
Commit
2c8b571d
authored
Jan 09, 2019
by
Kubernetes Prow Robot
Committed by
GitHub
Jan 09, 2019
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #71875 from wgliang/cleanup/remove-newfrom-functions
Move users of `factory.NewConfigFactory` to `scheduler.New`
parents
bd5a4ccf
3c24c99b
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
129 additions
and
256 deletions
+129
-256
BUILD
cmd/kube-scheduler/app/BUILD
+0
-5
server.go
cmd/kube-scheduler/app/server.go
+0
-88
scheduler.go
pkg/scheduler/scheduler.go
+0
-19
scheduler_test.go
pkg/scheduler/scheduler_test.go
+77
-84
daemonset_test.go
test/integration/daemonset/daemonset_test.go
+1
-5
BUILD
test/integration/scheduler/BUILD
+0
-2
scheduler_test.go
test/integration/scheduler/scheduler_test.go
+48
-42
util.go
test/integration/scheduler/util.go
+1
-6
BUILD
test/integration/util/BUILD
+0
-1
util.go
test/integration/util/util.go
+2
-4
No files found.
cmd/kube-scheduler/app/BUILD
View file @
2c8b571d
...
@@ -16,17 +16,12 @@ go_library(
...
@@ -16,17 +16,12 @@ go_library(
"//pkg/controller:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/scheduler:go_default_library",
"//pkg/scheduler:go_default_library",
"//pkg/scheduler/algorithmprovider:go_default_library",
"//pkg/scheduler/algorithmprovider:go_default_library",
"//pkg/scheduler/api:go_default_library",
"//pkg/scheduler/api/latest:go_default_library",
"//pkg/scheduler/apis/config:go_default_library",
"//pkg/scheduler/apis/config:go_default_library",
"//pkg/scheduler/factory:go_default_library",
"//pkg/scheduler/metrics:go_default_library",
"//pkg/scheduler/metrics:go_default_library",
"//pkg/util/configz:go_default_library",
"//pkg/util/configz:go_default_library",
"//pkg/util/flag:go_default_library",
"//pkg/util/flag:go_default_library",
"//pkg/version:go_default_library",
"//pkg/version:go_default_library",
"//pkg/version/verflag:go_default_library",
"//pkg/version/verflag:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library",
...
...
cmd/kube-scheduler/app/server.go
View file @
2c8b571d
...
@@ -21,13 +21,10 @@ import (
...
@@ -21,13 +21,10 @@ import (
"context"
"context"
"fmt"
"fmt"
"io"
"io"
"io/ioutil"
"net/http"
"net/http"
"os"
"os"
goruntime
"runtime"
goruntime
"runtime"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
utilerrors
"k8s.io/apimachinery/pkg/util/errors"
utilerrors
"k8s.io/apimachinery/pkg/util/errors"
utilruntime
"k8s.io/apimachinery/pkg/util/runtime"
utilruntime
"k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/apiserver/pkg/authentication/authenticator"
"k8s.io/apiserver/pkg/authentication/authenticator"
...
@@ -48,10 +45,7 @@ import (
...
@@ -48,10 +45,7 @@ import (
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/scheduler"
"k8s.io/kubernetes/pkg/scheduler"
"k8s.io/kubernetes/pkg/scheduler/algorithmprovider"
"k8s.io/kubernetes/pkg/scheduler/algorithmprovider"
schedulerapi
"k8s.io/kubernetes/pkg/scheduler/api"
latestschedulerapi
"k8s.io/kubernetes/pkg/scheduler/api/latest"
kubeschedulerconfig
"k8s.io/kubernetes/pkg/scheduler/apis/config"
kubeschedulerconfig
"k8s.io/kubernetes/pkg/scheduler/apis/config"
"k8s.io/kubernetes/pkg/scheduler/factory"
"k8s.io/kubernetes/pkg/scheduler/metrics"
"k8s.io/kubernetes/pkg/scheduler/metrics"
"k8s.io/kubernetes/pkg/util/configz"
"k8s.io/kubernetes/pkg/util/configz"
utilflag
"k8s.io/kubernetes/pkg/util/flag"
utilflag
"k8s.io/kubernetes/pkg/util/flag"
...
@@ -325,85 +319,3 @@ func newHealthzHandler(config *kubeschedulerconfig.KubeSchedulerConfiguration, s
...
@@ -325,85 +319,3 @@ func newHealthzHandler(config *kubeschedulerconfig.KubeSchedulerConfiguration, s
}
}
return
pathRecorderMux
return
pathRecorderMux
}
}
// NewSchedulerConfig creates the scheduler configuration. This is exposed for use by tests.
func
NewSchedulerConfig
(
s
schedulerserverconfig
.
CompletedConfig
)
(
*
factory
.
Config
,
error
)
{
// Set up the configurator which can create schedulers from configs.
configurator
:=
factory
.
NewConfigFactory
(
&
factory
.
ConfigFactoryArgs
{
SchedulerName
:
s
.
ComponentConfig
.
SchedulerName
,
Client
:
s
.
Client
,
NodeInformer
:
s
.
InformerFactory
.
Core
()
.
V1
()
.
Nodes
(),
PodInformer
:
s
.
PodInformer
,
PvInformer
:
s
.
InformerFactory
.
Core
()
.
V1
()
.
PersistentVolumes
(),
PvcInformer
:
s
.
InformerFactory
.
Core
()
.
V1
()
.
PersistentVolumeClaims
(),
ReplicationControllerInformer
:
s
.
InformerFactory
.
Core
()
.
V1
()
.
ReplicationControllers
(),
ReplicaSetInformer
:
s
.
InformerFactory
.
Apps
()
.
V1
()
.
ReplicaSets
(),
StatefulSetInformer
:
s
.
InformerFactory
.
Apps
()
.
V1
()
.
StatefulSets
(),
ServiceInformer
:
s
.
InformerFactory
.
Core
()
.
V1
()
.
Services
(),
PdbInformer
:
s
.
InformerFactory
.
Policy
()
.
V1beta1
()
.
PodDisruptionBudgets
(),
StorageClassInformer
:
s
.
InformerFactory
.
Storage
()
.
V1
()
.
StorageClasses
(),
HardPodAffinitySymmetricWeight
:
s
.
ComponentConfig
.
HardPodAffinitySymmetricWeight
,
DisablePreemption
:
s
.
ComponentConfig
.
DisablePreemption
,
PercentageOfNodesToScore
:
s
.
ComponentConfig
.
PercentageOfNodesToScore
,
BindTimeoutSeconds
:
*
s
.
ComponentConfig
.
BindTimeoutSeconds
,
})
source
:=
s
.
ComponentConfig
.
AlgorithmSource
var
config
*
factory
.
Config
switch
{
case
source
.
Provider
!=
nil
:
// Create the config from a named algorithm provider.
sc
,
err
:=
configurator
.
CreateFromProvider
(
*
source
.
Provider
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"couldn't create scheduler using provider %q: %v"
,
*
source
.
Provider
,
err
)
}
config
=
sc
case
source
.
Policy
!=
nil
:
// Create the config from a user specified policy source.
policy
:=
&
schedulerapi
.
Policy
{}
switch
{
case
source
.
Policy
.
File
!=
nil
:
// Use a policy serialized in a file.
policyFile
:=
source
.
Policy
.
File
.
Path
_
,
err
:=
os
.
Stat
(
policyFile
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"missing policy config file %s"
,
policyFile
)
}
data
,
err
:=
ioutil
.
ReadFile
(
policyFile
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"couldn't read policy config: %v"
,
err
)
}
err
=
runtime
.
DecodeInto
(
latestschedulerapi
.
Codec
,
[]
byte
(
data
),
policy
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"invalid policy: %v"
,
err
)
}
case
source
.
Policy
.
ConfigMap
!=
nil
:
// Use a policy serialized in a config map value.
policyRef
:=
source
.
Policy
.
ConfigMap
policyConfigMap
,
err
:=
s
.
Client
.
CoreV1
()
.
ConfigMaps
(
policyRef
.
Namespace
)
.
Get
(
policyRef
.
Name
,
metav1
.
GetOptions
{})
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"couldn't get policy config map %s/%s: %v"
,
policyRef
.
Namespace
,
policyRef
.
Name
,
err
)
}
data
,
found
:=
policyConfigMap
.
Data
[
kubeschedulerconfig
.
SchedulerPolicyConfigMapKey
]
if
!
found
{
return
nil
,
fmt
.
Errorf
(
"missing policy config map value at key %q"
,
kubeschedulerconfig
.
SchedulerPolicyConfigMapKey
)
}
err
=
runtime
.
DecodeInto
(
latestschedulerapi
.
Codec
,
[]
byte
(
data
),
policy
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"invalid policy: %v"
,
err
)
}
}
sc
,
err
:=
configurator
.
CreateFromConfig
(
*
policy
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"couldn't create scheduler from policy: %v"
,
err
)
}
config
=
sc
default
:
return
nil
,
fmt
.
Errorf
(
"unsupported algorithm source: %v"
,
source
)
}
// Additional tweaks to the config produced by the configurator.
config
.
Recorder
=
s
.
Recorder
config
.
DisablePreemption
=
s
.
ComponentConfig
.
DisablePreemption
return
config
,
nil
}
pkg/scheduler/scheduler.go
View file @
2c8b571d
...
@@ -234,25 +234,6 @@ func initPolicyFromConfigMap(client clientset.Interface, policyRef *kubeschedule
...
@@ -234,25 +234,6 @@ func initPolicyFromConfigMap(client clientset.Interface, policyRef *kubeschedule
return
nil
return
nil
}
}
// NewFromConfigurator returns a new scheduler that is created entirely by the Configurator. Assumes Create() is implemented.
// Supports intermediate Config mutation for now if you provide modifier functions which will run after Config is created.
func
NewFromConfigurator
(
c
factory
.
Configurator
,
modifiers
...
func
(
c
*
factory
.
Config
))
(
*
Scheduler
,
error
)
{
cfg
,
err
:=
c
.
Create
()
if
err
!=
nil
{
return
nil
,
err
}
// Mutate it if any functions were provided, changes might be required for certain types of tests (i.e. change the recorder).
for
_
,
modifier
:=
range
modifiers
{
modifier
(
cfg
)
}
// From this point on the config is immutable to the outside.
s
:=
&
Scheduler
{
config
:
cfg
,
}
metrics
.
Register
()
return
s
,
nil
}
// NewFromConfig returns a new scheduler using the provided Config.
// NewFromConfig returns a new scheduler using the provided Config.
func
NewFromConfig
(
config
*
factory
.
Config
)
*
Scheduler
{
func
NewFromConfig
(
config
*
factory
.
Config
)
*
Scheduler
{
metrics
.
Register
()
metrics
.
Register
()
...
...
pkg/scheduler/scheduler_test.go
View file @
2c8b571d
...
@@ -266,39 +266,36 @@ func TestScheduler(t *testing.T) {
...
@@ -266,39 +266,36 @@ func TestScheduler(t *testing.T) {
var
gotForgetPod
*
v1
.
Pod
var
gotForgetPod
*
v1
.
Pod
var
gotAssumedPod
*
v1
.
Pod
var
gotAssumedPod
*
v1
.
Pod
var
gotBinding
*
v1
.
Binding
var
gotBinding
*
v1
.
Binding
configurator
:=
&
FakeConfigurator
{
Config
:
&
factory
.
Config
{
s
:=
NewFromConfig
(
&
factory
.
Config
{
SchedulerCache
:
&
fakecache
.
Cache
{
SchedulerCache
:
&
fakecache
.
Cache
{
ForgetFunc
:
func
(
pod
*
v1
.
Pod
)
{
ForgetFunc
:
func
(
pod
*
v1
.
Pod
)
{
gotForgetPod
=
pod
gotForgetPod
=
pod
},
AssumeFunc
:
func
(
pod
*
v1
.
Pod
)
{
gotAssumedPod
=
pod
},
},
NodeLister
:
&
nodeLister
{
nl
},
Algorithm
:
item
.
algo
,
GetBinder
:
func
(
pod
*
v1
.
Pod
)
factory
.
Binder
{
return
fakeBinder
{
func
(
b
*
v1
.
Binding
)
error
{
gotBinding
=
b
return
item
.
injectBindError
}}
},
PodConditionUpdater
:
fakePodConditionUpdater
{},
Error
:
func
(
p
*
v1
.
Pod
,
err
error
)
{
gotPod
=
p
gotError
=
err
},
},
NextPod
:
func
()
*
v1
.
Pod
{
AssumeFunc
:
func
(
pod
*
v1
.
Pod
)
{
return
item
.
sendP
od
gotAssumedPod
=
p
od
},
},
PluginSet
:
&
EmptyPluginSet
{},
Recorder
:
eventBroadcaster
.
NewRecorder
(
legacyscheme
.
Scheme
,
v1
.
EventSource
{
Component
:
"scheduler"
}),
VolumeBinder
:
volumebinder
.
NewFakeVolumeBinder
(
&
persistentvolume
.
FakeVolumeBinderConfig
{
AllBound
:
true
}),
},
},
}
NodeLister
:
&
nodeLister
{
nl
},
Algorithm
:
item
.
algo
,
s
,
_
:=
NewFromConfigurator
(
configurator
,
nil
...
)
GetBinder
:
func
(
pod
*
v1
.
Pod
)
factory
.
Binder
{
return
fakeBinder
{
func
(
b
*
v1
.
Binding
)
error
{
gotBinding
=
b
return
item
.
injectBindError
}}
},
PodConditionUpdater
:
fakePodConditionUpdater
{},
Error
:
func
(
p
*
v1
.
Pod
,
err
error
)
{
gotPod
=
p
gotError
=
err
},
NextPod
:
func
()
*
v1
.
Pod
{
return
item
.
sendPod
},
PluginSet
:
&
EmptyPluginSet
{},
Recorder
:
eventBroadcaster
.
NewRecorder
(
legacyscheme
.
Scheme
,
v1
.
EventSource
{
Component
:
"scheduler"
}),
VolumeBinder
:
volumebinder
.
NewFakeVolumeBinder
(
&
persistentvolume
.
FakeVolumeBinderConfig
{
AllBound
:
true
}),
})
called
:=
make
(
chan
struct
{})
called
:=
make
(
chan
struct
{})
events
:=
eventBroadcaster
.
StartEventWatcher
(
func
(
e
*
v1
.
Event
)
{
events
:=
eventBroadcaster
.
StartEventWatcher
(
func
(
e
*
v1
.
Event
)
{
if
e
,
a
:=
item
.
eventReason
,
e
.
Reason
;
e
!=
a
{
if
e
,
a
:=
item
.
eventReason
,
e
.
Reason
;
e
!=
a
{
...
@@ -650,36 +647,35 @@ func setupTestScheduler(queuedPodStore *clientcache.FIFO, scache schedulerintern
...
@@ -650,36 +647,35 @@ func setupTestScheduler(queuedPodStore *clientcache.FIFO, scache schedulerintern
api
.
DefaultPercentageOfNodesToScore
)
api
.
DefaultPercentageOfNodesToScore
)
bindingChan
:=
make
(
chan
*
v1
.
Binding
,
1
)
bindingChan
:=
make
(
chan
*
v1
.
Binding
,
1
)
errChan
:=
make
(
chan
error
,
1
)
errChan
:=
make
(
chan
error
,
1
)
configurator
:=
&
FakeConfigurator
{
Config
:
&
factory
.
Config
{
config
:=
&
factory
.
Config
{
SchedulerCache
:
scache
,
SchedulerCache
:
scache
,
NodeLister
:
&
nodeLister
{
informerFactory
.
Core
()
.
V1
()
.
Nodes
()
.
Lister
()},
NodeLister
:
&
nodeLister
{
informerFactory
.
Core
()
.
V1
()
.
Nodes
()
.
Lister
()},
Algorithm
:
algo
,
Algorithm
:
algo
,
GetBinder
:
func
(
pod
*
v1
.
Pod
)
factory
.
Binder
{
GetBinder
:
func
(
pod
*
v1
.
Pod
)
factory
.
Binder
{
return
fakeBinder
{
func
(
b
*
v1
.
Binding
)
error
{
return
fakeBinder
{
func
(
b
*
v1
.
Binding
)
error
{
bindingChan
<-
b
bindingChan
<-
b
return
nil
return
nil
}}
}}
},
NextPod
:
func
()
*
v1
.
Pod
{
return
clientcache
.
Pop
(
queuedPodStore
)
.
(
*
v1
.
Pod
)
},
Error
:
func
(
p
*
v1
.
Pod
,
err
error
)
{
errChan
<-
err
},
Recorder
:
&
record
.
FakeRecorder
{},
PodConditionUpdater
:
fakePodConditionUpdater
{},
PodPreemptor
:
fakePodPreemptor
{},
PluginSet
:
&
EmptyPluginSet
{},
VolumeBinder
:
volumebinder
.
NewFakeVolumeBinder
(
&
persistentvolume
.
FakeVolumeBinderConfig
{
AllBound
:
true
}),
},
},
NextPod
:
func
()
*
v1
.
Pod
{
return
clientcache
.
Pop
(
queuedPodStore
)
.
(
*
v1
.
Pod
)
},
Error
:
func
(
p
*
v1
.
Pod
,
err
error
)
{
errChan
<-
err
},
Recorder
:
&
record
.
FakeRecorder
{},
PodConditionUpdater
:
fakePodConditionUpdater
{},
PodPreemptor
:
fakePodPreemptor
{},
PluginSet
:
&
EmptyPluginSet
{},
VolumeBinder
:
volumebinder
.
NewFakeVolumeBinder
(
&
persistentvolume
.
FakeVolumeBinderConfig
{
AllBound
:
true
}),
}
}
if
recorder
!=
nil
{
if
recorder
!=
nil
{
config
urator
.
Config
.
Recorder
=
recorder
config
.
Recorder
=
recorder
}
}
sched
,
_
:=
NewFromConfigurator
(
configurator
,
nil
...
)
sched
:=
NewFromConfig
(
config
)
return
sched
,
bindingChan
,
errChan
return
sched
,
bindingChan
,
errChan
}
}
...
@@ -701,37 +697,34 @@ func setupTestSchedulerLongBindingWithRetry(queuedPodStore *clientcache.FIFO, sc
...
@@ -701,37 +697,34 @@ func setupTestSchedulerLongBindingWithRetry(queuedPodStore *clientcache.FIFO, sc
false
,
false
,
api
.
DefaultPercentageOfNodesToScore
)
api
.
DefaultPercentageOfNodesToScore
)
bindingChan
:=
make
(
chan
*
v1
.
Binding
,
2
)
bindingChan
:=
make
(
chan
*
v1
.
Binding
,
2
)
configurator
:=
&
FakeConfigurator
{
Config
:
&
factory
.
Config
{
SchedulerCache
:
scache
,
NodeLister
:
&
nodeLister
{
informerFactory
.
Core
()
.
V1
()
.
Nodes
()
.
Lister
()},
Algorithm
:
algo
,
GetBinder
:
func
(
pod
*
v1
.
Pod
)
factory
.
Binder
{
return
fakeBinder
{
func
(
b
*
v1
.
Binding
)
error
{
time
.
Sleep
(
bindingTime
)
bindingChan
<-
b
return
nil
}}
},
WaitForCacheSync
:
func
()
bool
{
return
true
},
NextPod
:
func
()
*
v1
.
Pod
{
return
clientcache
.
Pop
(
queuedPodStore
)
.
(
*
v1
.
Pod
)
},
Error
:
func
(
p
*
v1
.
Pod
,
err
error
)
{
queuedPodStore
.
AddIfNotPresent
(
p
)
},
Recorder
:
&
record
.
FakeRecorder
{},
PodConditionUpdater
:
fakePodConditionUpdater
{},
PodPreemptor
:
fakePodPreemptor
{},
StopEverything
:
stop
,
PluginSet
:
&
EmptyPluginSet
{},
VolumeBinder
:
volumebinder
.
NewFakeVolumeBinder
(
&
persistentvolume
.
FakeVolumeBinderConfig
{
AllBound
:
true
}),
},
}
sched
,
_
:=
NewFromConfigurator
(
configurator
,
nil
...
)
sched
:=
NewFromConfig
(
&
factory
.
Config
{
SchedulerCache
:
scache
,
NodeLister
:
&
nodeLister
{
informerFactory
.
Core
()
.
V1
()
.
Nodes
()
.
Lister
()},
Algorithm
:
algo
,
GetBinder
:
func
(
pod
*
v1
.
Pod
)
factory
.
Binder
{
return
fakeBinder
{
func
(
b
*
v1
.
Binding
)
error
{
time
.
Sleep
(
bindingTime
)
bindingChan
<-
b
return
nil
}}
},
WaitForCacheSync
:
func
()
bool
{
return
true
},
NextPod
:
func
()
*
v1
.
Pod
{
return
clientcache
.
Pop
(
queuedPodStore
)
.
(
*
v1
.
Pod
)
},
Error
:
func
(
p
*
v1
.
Pod
,
err
error
)
{
queuedPodStore
.
AddIfNotPresent
(
p
)
},
Recorder
:
&
record
.
FakeRecorder
{},
PodConditionUpdater
:
fakePodConditionUpdater
{},
PodPreemptor
:
fakePodPreemptor
{},
StopEverything
:
stop
,
PluginSet
:
&
EmptyPluginSet
{},
VolumeBinder
:
volumebinder
.
NewFakeVolumeBinder
(
&
persistentvolume
.
FakeVolumeBinderConfig
{
AllBound
:
true
}),
})
return
sched
,
bindingChan
return
sched
,
bindingChan
}
}
...
...
test/integration/daemonset/daemonset_test.go
View file @
2c8b571d
...
@@ -132,11 +132,7 @@ func setupScheduler(
...
@@ -132,11 +132,7 @@ func setupScheduler(
Interface
:
cs
.
CoreV1
()
.
Events
(
""
),
Interface
:
cs
.
CoreV1
()
.
Events
(
""
),
})
})
sched
,
err
:=
scheduler
.
NewFromConfigurator
(
sched
:=
scheduler
.
NewFromConfig
(
schedulerConfig
)
&
scheduler
.
FakeConfigurator
{
Config
:
schedulerConfig
},
nil
...
)
if
err
!=
nil
{
t
.
Fatalf
(
"error creating scheduler: %v"
,
err
)
}
algorithmprovider
.
ApplyFeatureGates
()
algorithmprovider
.
ApplyFeatureGates
()
...
...
test/integration/scheduler/BUILD
View file @
2c8b571d
...
@@ -23,8 +23,6 @@ go_test(
...
@@ -23,8 +23,6 @@ go_test(
embed = [":go_default_library"],
embed = [":go_default_library"],
tags = ["integration"],
tags = ["integration"],
deps = [
deps = [
"//cmd/kube-scheduler/app:go_default_library",
"//cmd/kube-scheduler/app/config:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/v1/pod:go_default_library",
"//pkg/api/v1/pod:go_default_library",
"//pkg/controller/nodelifecycle:go_default_library",
"//pkg/controller/nodelifecycle:go_default_library",
...
...
test/integration/scheduler/scheduler_test.go
View file @
2c8b571d
...
@@ -36,8 +36,6 @@ import (
...
@@ -36,8 +36,6 @@ import (
restclient
"k8s.io/client-go/rest"
restclient
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/record"
"k8s.io/client-go/tools/record"
schedulerapp
"k8s.io/kubernetes/cmd/kube-scheduler/app"
schedulerappconfig
"k8s.io/kubernetes/cmd/kube-scheduler/app/config"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/scheduler"
"k8s.io/kubernetes/pkg/scheduler"
"k8s.io/kubernetes/pkg/scheduler/algorithm/predicates"
"k8s.io/kubernetes/pkg/scheduler/algorithm/predicates"
...
@@ -179,33 +177,38 @@ func TestSchedulerCreationFromConfigMap(t *testing.T) {
...
@@ -179,33 +177,38 @@ func TestSchedulerCreationFromConfigMap(t *testing.T) {
eventBroadcaster
.
StartRecordingToSink
(
&
clientv1core
.
EventSinkImpl
{
Interface
:
clientSet
.
CoreV1
()
.
Events
(
""
)})
eventBroadcaster
.
StartRecordingToSink
(
&
clientv1core
.
EventSinkImpl
{
Interface
:
clientSet
.
CoreV1
()
.
Events
(
""
)})
defaultBindTimeout
:=
int64
(
30
)
defaultBindTimeout
:=
int64
(
30
)
ss
:=
&
schedulerappconfig
.
Config
{
ComponentConfig
:
kubeschedulerconfig
.
KubeSchedulerConfiguration
{
sched
,
err
:=
scheduler
.
New
(
clientSet
,
HardPodAffinitySymmetricWeight
:
v1
.
DefaultHardPodAffinitySymmetricWeight
,
informerFactory
.
Core
()
.
V1
()
.
Nodes
(),
SchedulerName
:
v1
.
DefaultSchedulerName
,
factory
.
NewPodInformer
(
clientSet
,
0
),
AlgorithmSource
:
kubeschedulerconfig
.
SchedulerAlgorithmSource
{
informerFactory
.
Core
()
.
V1
()
.
PersistentVolumes
(),
Policy
:
&
kubeschedulerconfig
.
SchedulerPolicySource
{
informerFactory
.
Core
()
.
V1
()
.
PersistentVolumeClaims
(),
ConfigMap
:
&
kubeschedulerconfig
.
SchedulerPolicyConfigMapSource
{
informerFactory
.
Core
()
.
V1
()
.
ReplicationControllers
(),
Namespace
:
policyConfigMap
.
Namespace
,
informerFactory
.
Apps
()
.
V1
()
.
ReplicaSets
(),
Name
:
policyConfigMap
.
Name
,
informerFactory
.
Apps
()
.
V1
()
.
StatefulSets
(),
},
informerFactory
.
Core
()
.
V1
()
.
Services
(),
informerFactory
.
Policy
()
.
V1beta1
()
.
PodDisruptionBudgets
(),
informerFactory
.
Storage
()
.
V1
()
.
StorageClasses
(),
eventBroadcaster
.
NewRecorder
(
legacyscheme
.
Scheme
,
v1
.
EventSource
{
Component
:
v1
.
DefaultSchedulerName
}),
kubeschedulerconfig
.
SchedulerAlgorithmSource
{
Policy
:
&
kubeschedulerconfig
.
SchedulerPolicySource
{
ConfigMap
:
&
kubeschedulerconfig
.
SchedulerPolicyConfigMapSource
{
Namespace
:
policyConfigMap
.
Namespace
,
Name
:
policyConfigMap
.
Name
,
},
},
},
},
BindTimeoutSeconds
:
&
defaultBindTimeout
,
},
},
Client
:
clientSet
,
nil
,
InformerFactory
:
informerFactory
,
scheduler
.
WithName
(
v1
.
DefaultSchedulerName
),
PodInformer
:
factory
.
NewPodInformer
(
clientSet
,
0
),
scheduler
.
WithHardPodAffinitySymmetricWeight
(
v1
.
DefaultHardPodAffinitySymmetricWeight
),
EventClient
:
clientSet
.
CoreV1
(),
scheduler
.
WithBindTimeoutSeconds
(
defaultBindTimeout
),
Recorder
:
eventBroadcaster
.
NewRecorder
(
legacyscheme
.
Scheme
,
v1
.
EventSource
{
Component
:
v1
.
DefaultSchedulerName
}),
)
Broadcaster
:
eventBroadcaster
,
}
config
,
err
:=
schedulerapp
.
NewSchedulerConfig
(
ss
.
Complete
())
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatalf
(
"couldn't make scheduler config: %v"
,
err
)
t
.
Fatalf
(
"couldn't make scheduler config: %v"
,
err
)
}
}
config
:=
sched
.
Config
()
// Verify that the config is applied correctly.
// Verify that the config is applied correctly.
schedPredicates
:=
sets
.
NewString
()
schedPredicates
:=
sets
.
NewString
()
for
k
:=
range
config
.
Algorithm
.
Predicates
()
{
for
k
:=
range
config
.
Algorithm
.
Predicates
()
{
...
@@ -242,29 +245,32 @@ func TestSchedulerCreationFromNonExistentConfigMap(t *testing.T) {
...
@@ -242,29 +245,32 @@ func TestSchedulerCreationFromNonExistentConfigMap(t *testing.T) {
eventBroadcaster
.
StartRecordingToSink
(
&
clientv1core
.
EventSinkImpl
{
Interface
:
clientSet
.
CoreV1
()
.
Events
(
""
)})
eventBroadcaster
.
StartRecordingToSink
(
&
clientv1core
.
EventSinkImpl
{
Interface
:
clientSet
.
CoreV1
()
.
Events
(
""
)})
defaultBindTimeout
:=
int64
(
30
)
defaultBindTimeout
:=
int64
(
30
)
ss
:=
&
schedulerappconfig
.
Config
{
ComponentConfig
:
kubeschedulerconfig
.
KubeSchedulerConfiguration
{
_
,
err
:=
scheduler
.
New
(
clientSet
,
SchedulerName
:
v1
.
DefaultSchedulerName
,
informerFactory
.
Core
()
.
V1
()
.
Nodes
(),
AlgorithmSource
:
kubeschedulerconfig
.
SchedulerAlgorithmSource
{
factory
.
NewPodInformer
(
clientSet
,
0
),
Policy
:
&
kubeschedulerconfig
.
SchedulerPolicySource
{
informerFactory
.
Core
()
.
V1
()
.
PersistentVolumes
(),
ConfigMap
:
&
kubeschedulerconfig
.
SchedulerPolicyConfigMapSource
{
informerFactory
.
Core
()
.
V1
()
.
PersistentVolumeClaims
(),
Namespace
:
"non-existent-config"
,
informerFactory
.
Core
()
.
V1
()
.
ReplicationControllers
(),
Name
:
"non-existent-config"
,
informerFactory
.
Apps
()
.
V1
()
.
ReplicaSets
(),
},
informerFactory
.
Apps
()
.
V1
()
.
StatefulSets
(),
informerFactory
.
Core
()
.
V1
()
.
Services
(),
informerFactory
.
Policy
()
.
V1beta1
()
.
PodDisruptionBudgets
(),
informerFactory
.
Storage
()
.
V1
()
.
StorageClasses
(),
eventBroadcaster
.
NewRecorder
(
legacyscheme
.
Scheme
,
v1
.
EventSource
{
Component
:
v1
.
DefaultSchedulerName
}),
kubeschedulerconfig
.
SchedulerAlgorithmSource
{
Policy
:
&
kubeschedulerconfig
.
SchedulerPolicySource
{
ConfigMap
:
&
kubeschedulerconfig
.
SchedulerPolicyConfigMapSource
{
Namespace
:
"non-existent-config"
,
Name
:
"non-existent-config"
,
},
},
},
},
HardPodAffinitySymmetricWeight
:
v1
.
DefaultHardPodAffinitySymmetricWeight
,
BindTimeoutSeconds
:
&
defaultBindTimeout
,
},
},
Client
:
clientSet
,
nil
,
InformerFactory
:
informerFactory
,
scheduler
.
WithName
(
v1
.
DefaultSchedulerName
),
PodInformer
:
factory
.
NewPodInformer
(
clientSet
,
0
),
scheduler
.
WithHardPodAffinitySymmetricWeight
(
v1
.
DefaultHardPodAffinitySymmetricWeight
),
EventClient
:
clientSet
.
CoreV1
(),
scheduler
.
WithBindTimeoutSeconds
(
defaultBindTimeout
))
Recorder
:
eventBroadcaster
.
NewRecorder
(
legacyscheme
.
Scheme
,
v1
.
EventSource
{
Component
:
v1
.
DefaultSchedulerName
}),
Broadcaster
:
eventBroadcaster
,
}
_
,
err
:=
schedulerapp
.
NewSchedulerConfig
(
ss
.
Complete
())
if
err
==
nil
{
if
err
==
nil
{
t
.
Fatalf
(
"Creation of scheduler didn't fail while the policy ConfigMap didn't exist."
)
t
.
Fatalf
(
"Creation of scheduler didn't fail while the policy ConfigMap didn't exist."
)
}
}
...
@@ -536,7 +542,7 @@ func TestMultiScheduler(t *testing.T) {
...
@@ -536,7 +542,7 @@ func TestMultiScheduler(t *testing.T) {
go
podInformer2
.
Informer
()
.
Run
(
stopCh
)
go
podInformer2
.
Informer
()
.
Run
(
stopCh
)
informerFactory2
.
Start
(
stopCh
)
informerFactory2
.
Start
(
stopCh
)
sched2
,
_
:=
scheduler
.
NewFromConfigurator
(
&
scheduler
.
FakeConfigurator
{
Config
:
schedulerConfig2
},
nil
...
)
sched2
:=
scheduler
.
NewFromConfig
(
schedulerConfig2
)
sched2
.
Run
()
sched2
.
Run
()
// 6. **check point-2**:
// 6. **check point-2**:
...
...
test/integration/scheduler/util.go
View file @
2c8b571d
...
@@ -212,12 +212,7 @@ func initTestSchedulerWithOptions(
...
@@ -212,12 +212,7 @@ func initTestSchedulerWithOptions(
context
.
informerFactory
.
Start
(
context
.
schedulerConfig
.
StopEverything
)
context
.
informerFactory
.
Start
(
context
.
schedulerConfig
.
StopEverything
)
context
.
informerFactory
.
WaitForCacheSync
(
context
.
schedulerConfig
.
StopEverything
)
context
.
informerFactory
.
WaitForCacheSync
(
context
.
schedulerConfig
.
StopEverything
)
context
.
scheduler
,
err
=
scheduler
.
NewFromConfigurator
(
&
scheduler
.
FakeConfigurator
{
context
.
scheduler
=
scheduler
.
NewFromConfig
(
context
.
schedulerConfig
)
Config
:
context
.
schedulerConfig
},
nil
...
)
if
err
!=
nil
{
t
.
Fatalf
(
"Couldn't create scheduler: %v"
,
err
)
}
context
.
scheduler
.
Run
()
context
.
scheduler
.
Run
()
return
context
return
context
}
}
...
...
test/integration/util/BUILD
View file @
2c8b571d
...
@@ -13,7 +13,6 @@ go_library(
...
@@ -13,7 +13,6 @@ go_library(
],
],
importpath = "k8s.io/kubernetes/test/integration/util",
importpath = "k8s.io/kubernetes/test/integration/util",
deps = [
deps = [
"//pkg/api/legacyscheme:go_default_library",
"//pkg/cloudprovider/providers/gce:go_default_library",
"//pkg/cloudprovider/providers/gce:go_default_library",
"//pkg/scheduler:go_default_library",
"//pkg/scheduler:go_default_library",
"//pkg/scheduler/api:go_default_library",
"//pkg/scheduler/api:go_default_library",
...
...
test/integration/util/util.go
View file @
2c8b571d
...
@@ -26,7 +26,6 @@ import (
...
@@ -26,7 +26,6 @@ import (
clientv1core
"k8s.io/client-go/kubernetes/typed/core/v1"
clientv1core
"k8s.io/client-go/kubernetes/typed/core/v1"
"k8s.io/client-go/tools/record"
"k8s.io/client-go/tools/record"
"k8s.io/klog"
"k8s.io/klog"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/scheduler"
"k8s.io/kubernetes/pkg/scheduler"
schedulerapi
"k8s.io/kubernetes/pkg/scheduler/api"
schedulerapi
"k8s.io/kubernetes/pkg/scheduler/api"
"k8s.io/kubernetes/pkg/scheduler/factory"
"k8s.io/kubernetes/pkg/scheduler/factory"
...
@@ -67,13 +66,12 @@ func StartScheduler(clientSet clientset.Interface) (factory.Configurator, Shutdo
...
@@ -67,13 +66,12 @@ func StartScheduler(clientSet clientset.Interface) (factory.Configurator, Shutdo
stopCh
:=
make
(
chan
struct
{})
stopCh
:=
make
(
chan
struct
{})
schedulerConfigurator
:=
createSchedulerConfigurator
(
clientSet
,
informerFactory
,
stopCh
)
schedulerConfigurator
:=
createSchedulerConfigurator
(
clientSet
,
informerFactory
,
stopCh
)
sched
,
err
:=
scheduler
.
NewFromConfigurator
(
schedulerConfigurator
,
func
(
conf
*
factory
.
Config
)
{
config
,
err
:=
schedulerConfigurator
.
CreateFromConfig
(
schedulerapi
.
Policy
{})
conf
.
Recorder
=
evtBroadcaster
.
NewRecorder
(
legacyscheme
.
Scheme
,
v1
.
EventSource
{
Component
:
"scheduler"
})
})
if
err
!=
nil
{
if
err
!=
nil
{
klog
.
Fatalf
(
"Error creating scheduler: %v"
,
err
)
klog
.
Fatalf
(
"Error creating scheduler: %v"
,
err
)
}
}
sched
:=
scheduler
.
NewFromConfig
(
config
)
informerFactory
.
Start
(
stopCh
)
informerFactory
.
Start
(
stopCh
)
sched
.
Run
()
sched
.
Run
()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment