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
5f070c11
Commit
5f070c11
authored
Oct 27, 2015
by
Dr. Stefan Schimanski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Get rid of unecessary SchedulerLoopConfig detour to create a SchedulerLoop
parent
c3cab523
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
29 additions
and
95 deletions
+29
-95
integration_test.go
contrib/mesos/pkg/scheduler/integration_test.go
+2
-9
schedulerloop.go
contrib/mesos/pkg/scheduler/operations/schedulerloop.go
+20
-52
schedulerloop_test.go
contrib/mesos/pkg/scheduler/operations/schedulerloop_test.go
+0
-33
service.go
contrib/mesos/pkg/scheduler/service/service.go
+7
-1
No files found.
contrib/mesos/pkg/scheduler/integration_test.go
View file @
5f070c11
...
@@ -482,17 +482,10 @@ func newLifecycleTest(t *testing.T) lifecycleTest {
...
@@ -482,17 +482,10 @@ func newLifecycleTest(t *testing.T) lifecycleTest {
// create scheduler process
// create scheduler process
schedulerProc
:=
ha
.
New
(
mesosScheduler
)
schedulerProc
:=
ha
.
New
(
mesosScheduler
)
//
get SchedulerLoop config from it
//
create scheduler loop
fw
:=
&
MesosFramework
{
MesosScheduler
:
mesosScheduler
}
fw
:=
&
MesosFramework
{
MesosScheduler
:
mesosScheduler
}
config
:=
operations
.
NewSchedulerLoopConfig
(
&
c
,
fw
,
client
,
schedulerProc
.
Terminal
(),
http
.
DefaultServeMux
,
&
podsListWatch
.
ListWatch
)
assert
.
NotNil
(
config
)
// make events observable
eventObs
:=
NewEventObserver
()
eventObs
:=
NewEventObserver
()
config
.
Recorder
=
eventObs
loop
:=
operations
.
NewSchedulerLoop
(
&
c
,
fw
,
client
,
eventObs
,
schedulerProc
.
Terminal
(),
http
.
DefaultServeMux
,
&
podsListWatch
.
ListWatch
)
// create loop
loop
:=
operations
.
NewSchedulerLoop
(
config
)
assert
.
NotNil
(
loop
)
assert
.
NotNil
(
loop
)
// create mock mesos scheduler driver
// create mock mesos scheduler driver
...
...
contrib/mesos/pkg/scheduler/operations/schedulerloop.go
View file @
5f070c11
...
@@ -17,6 +17,7 @@ limitations under the License.
...
@@ -17,6 +17,7 @@ limitations under the License.
package
operations
package
operations
import
(
import
(
"net/http"
"time"
"time"
log
"github.com/golang/glog"
log
"github.com/golang/glog"
...
@@ -31,8 +32,6 @@ import (
...
@@ -31,8 +32,6 @@ import (
"k8s.io/kubernetes/pkg/client/cache"
"k8s.io/kubernetes/pkg/client/cache"
"k8s.io/kubernetes/pkg/client/record"
"k8s.io/kubernetes/pkg/client/record"
client
"k8s.io/kubernetes/pkg/client/unversioned"
client
"k8s.io/kubernetes/pkg/client/unversioned"
"k8s.io/kubernetes/pkg/fields"
"net/http"
)
)
const
(
const
(
...
@@ -49,26 +48,19 @@ type SchedulerLoopInterface interface {
...
@@ -49,26 +48,19 @@ type SchedulerLoopInterface interface {
Run
(
<-
chan
struct
{})
Run
(
<-
chan
struct
{})
}
}
type
SchedulerLoopConfig
struct
{
type
SchedulerLoop
struct
{
Algorithm
*
SchedulerAlgorithm
algorithm
*
SchedulerAlgorithm
Binder
*
Binder
binder
*
Binder
NextPod
func
()
*
api
.
Pod
nextPod
func
()
*
api
.
Pod
Error
func
(
*
api
.
Pod
,
error
)
error
func
(
*
api
.
Pod
,
error
)
Recorder
record
.
EventRecorder
recorder
record
.
EventRecorder
Client
*
client
.
Client
client
*
client
.
Client
Pr
*
PodReconciler
pr
*
PodReconciler
Starting
chan
struct
{}
// startup latch
starting
chan
struct
{}
// startup latch
}
// NewDefaultSchedulerLoopConfig creates a SchedulerLoop
func
NewDefaultSchedulerLoopConfig
(
c
*
config
.
Config
,
fw
types
.
Framework
,
client
*
client
.
Client
,
terminate
<-
chan
struct
{},
mux
*
http
.
ServeMux
)
*
SchedulerLoopConfig
{
// use ListWatch watching pods using the client by default
lw
:=
cache
.
NewListWatchFromClient
(
client
,
"pods"
,
api
.
NamespaceAll
,
fields
.
Everything
())
return
NewSchedulerLoopConfig
(
c
,
fw
,
client
,
terminate
,
mux
,
lw
)
}
}
func
NewSchedulerLoop
Config
(
c
*
config
.
Config
,
fw
types
.
Framework
,
client
*
client
.
Client
,
terminate
<-
chan
struct
{},
mux
*
http
.
ServeMux
,
func
NewSchedulerLoop
(
c
*
config
.
Config
,
fw
types
.
Framework
,
client
*
client
.
Client
,
recorder
record
.
EventRecorder
,
podsWatcher
*
cache
.
ListWatch
)
*
SchedulerLoopConfig
{
terminate
<-
chan
struct
{},
mux
*
http
.
ServeMux
,
podsWatcher
*
cache
.
ListWatch
)
*
SchedulerLoop
{
// Watch and queue pods that need scheduling.
// Watch and queue pods that need scheduling.
updates
:=
make
(
chan
queue
.
Entry
,
c
.
UpdatesBacklog
)
updates
:=
make
(
chan
queue
.
Entry
,
c
.
UpdatesBacklog
)
...
@@ -95,42 +87,18 @@ func NewSchedulerLoopConfig(c *config.Config, fw types.Framework, client *client
...
@@ -95,42 +87,18 @@ func NewSchedulerLoopConfig(c *config.Config, fw types.Framework, client *client
q
.
InstallDebugHandlers
(
mux
)
q
.
InstallDebugHandlers
(
mux
)
podtask
.
InstallDebugHandlers
(
fw
.
Tasks
(),
mux
)
podtask
.
InstallDebugHandlers
(
fw
.
Tasks
(),
mux
)
})
})
return
&
SchedulerLoopConfig
{
Algorithm
:
NewSchedulerAlgorithm
(
fw
,
podUpdates
),
Binder
:
NewBinder
(
fw
),
NextPod
:
q
.
Yield
,
Error
:
eh
.
Error
,
Recorder
:
eventBroadcaster
.
NewRecorder
(
api
.
EventSource
{
Component
:
"scheduler"
}),
Client
:
client
,
Pr
:
podReconciler
,
Starting
:
startLatch
,
}
}
func
NewSchedulerLoop
(
c
*
SchedulerLoopConfig
)
SchedulerLoopInterface
{
return
&
SchedulerLoop
{
return
&
SchedulerLoop
{
algorithm
:
c
.
Algorithm
,
algorithm
:
NewSchedulerAlgorithm
(
fw
,
podUpdates
)
,
binder
:
c
.
Binder
,
binder
:
NewBinder
(
fw
)
,
nextPod
:
c
.
NextPo
d
,
nextPod
:
q
.
Yiel
d
,
error
:
c
.
Error
,
error
:
eh
.
Error
,
recorder
:
c
.
R
ecorder
,
recorder
:
r
ecorder
,
client
:
c
.
C
lient
,
client
:
client
,
pr
:
c
.
P
r
,
pr
:
podReconcile
r
,
starting
:
c
.
Starting
,
starting
:
startLatch
,
}
}
}
}
type
SchedulerLoop
struct
{
algorithm
*
SchedulerAlgorithm
binder
*
Binder
nextPod
func
()
*
api
.
Pod
error
func
(
*
api
.
Pod
,
error
)
recorder
record
.
EventRecorder
client
*
client
.
Client
pr
*
PodReconciler
starting
chan
struct
{}
}
func
(
s
*
SchedulerLoop
)
Run
(
done
<-
chan
struct
{})
{
func
(
s
*
SchedulerLoop
)
Run
(
done
<-
chan
struct
{})
{
defer
close
(
s
.
starting
)
defer
close
(
s
.
starting
)
go
runtime
.
Until
(
s
.
scheduleOne
,
recoveryDelay
,
done
)
go
runtime
.
Until
(
s
.
scheduleOne
,
recoveryDelay
,
done
)
...
...
contrib/mesos/pkg/scheduler/operations/schedulerloop_test.go
deleted
100644 → 0
View file @
c3cab523
/*
Copyright 2015 The Kubernetes Authors All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package
operations
import
(
"testing"
"github.com/stretchr/testify/assert"
)
// Test to create the scheduler loop with an empty lopp config
func
TestPlugin_New
(
t
*
testing
.
T
)
{
assert
:=
assert
.
New
(
t
)
c
:=
SchedulerLoopConfig
{}
p
:=
NewSchedulerLoop
(
&
c
)
assert
.
NotNil
(
p
)
}
\ No newline at end of file
contrib/mesos/pkg/scheduler/service/service.go
View file @
5f070c11
...
@@ -67,6 +67,7 @@ import (
...
@@ -67,6 +67,7 @@ import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/resource"
"k8s.io/kubernetes/pkg/api/resource"
"k8s.io/kubernetes/pkg/client/cache"
"k8s.io/kubernetes/pkg/client/cache"
"k8s.io/kubernetes/pkg/client/record"
client
"k8s.io/kubernetes/pkg/client/unversioned"
client
"k8s.io/kubernetes/pkg/client/unversioned"
clientauth
"k8s.io/kubernetes/pkg/client/unversioned/auth"
clientauth
"k8s.io/kubernetes/pkg/client/unversioned/auth"
"k8s.io/kubernetes/pkg/fields"
"k8s.io/kubernetes/pkg/fields"
...
@@ -759,8 +760,13 @@ func (s *SchedulerServer) bootstrap(hks hyperkube.Interface, sc *schedcfg.Config
...
@@ -759,8 +760,13 @@ func (s *SchedulerServer) bootstrap(hks hyperkube.Interface, sc *schedcfg.Config
},
},
}
}
// create scheduler loop
fw
:=
&
scheduler
.
MesosFramework
{
MesosScheduler
:
mesosScheduler
}
fw
:=
&
scheduler
.
MesosFramework
{
MesosScheduler
:
mesosScheduler
}
loop
:=
operations
.
NewSchedulerLoop
(
operations
.
NewDefaultSchedulerLoopConfig
(
sc
,
fw
,
client
,
schedulerProcess
.
Terminal
(),
s
.
mux
))
eventBroadcaster
:=
record
.
NewBroadcaster
()
recorder
:=
eventBroadcaster
.
NewRecorder
(
api
.
EventSource
{
Component
:
"scheduler"
})
lw
:=
cache
.
NewListWatchFromClient
(
client
,
"pods"
,
api
.
NamespaceAll
,
fields
.
Everything
())
loop
:=
operations
.
NewSchedulerLoop
(
sc
,
fw
,
client
,
recorder
,
schedulerProcess
.
Terminal
(),
s
.
mux
,
lw
)
runtime
.
On
(
mesosScheduler
.
Registration
(),
func
()
{
loop
.
Run
(
schedulerProcess
.
Terminal
())
})
runtime
.
On
(
mesosScheduler
.
Registration
(),
func
()
{
loop
.
Run
(
schedulerProcess
.
Terminal
())
})
runtime
.
On
(
mesosScheduler
.
Registration
(),
s
.
newServiceWriter
(
schedulerProcess
.
Terminal
()))
runtime
.
On
(
mesosScheduler
.
Registration
(),
s
.
newServiceWriter
(
schedulerProcess
.
Terminal
()))
...
...
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