mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Reorder scheduler packages
- Scheduler implemenation -> components - types -> toplevel scheduler package - integration_test.go -> integration
This commit is contained in:
		@@ -22,10 +22,10 @@ import (
 | 
				
			|||||||
	log "github.com/golang/glog"
 | 
						log "github.com/golang/glog"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/offers"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/offers"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/queue"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/queue"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler"
 | 
				
			||||||
	merrors "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/errors"
 | 
						merrors "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/errors"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podschedulers"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podschedulers"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podtask"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podtask"
 | 
				
			||||||
	types "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/types"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/cache"
 | 
						"k8s.io/kubernetes/pkg/client/cache"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -36,12 +36,12 @@ type SchedulerAlgorithm interface {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// SchedulerAlgorithm implements the algorithm.ScheduleAlgorithm interface
 | 
					// SchedulerAlgorithm implements the algorithm.ScheduleAlgorithm interface
 | 
				
			||||||
type schedulerAlgorithm struct {
 | 
					type schedulerAlgorithm struct {
 | 
				
			||||||
	sched        types.Scheduler
 | 
						sched        scheduler.Scheduler
 | 
				
			||||||
	podUpdates   queue.FIFO
 | 
						podUpdates   queue.FIFO
 | 
				
			||||||
	podScheduler podschedulers.PodScheduler
 | 
						podScheduler podschedulers.PodScheduler
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewSchedulerAlgorithm(sched types.Scheduler, podUpdates queue.FIFO, podScheduler podschedulers.PodScheduler) SchedulerAlgorithm {
 | 
					func NewSchedulerAlgorithm(sched scheduler.Scheduler, podUpdates queue.FIFO, podScheduler podschedulers.PodScheduler) SchedulerAlgorithm {
 | 
				
			||||||
	return &schedulerAlgorithm{
 | 
						return &schedulerAlgorithm{
 | 
				
			||||||
		sched:        sched,
 | 
							sched:        sched,
 | 
				
			||||||
		podUpdates:   podUpdates,
 | 
							podUpdates:   podUpdates,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,10 +21,10 @@ import (
 | 
				
			|||||||
	"strconv"
 | 
						"strconv"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	log "github.com/golang/glog"
 | 
						log "github.com/golang/glog"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler"
 | 
				
			||||||
	merrors "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/errors"
 | 
						merrors "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/errors"
 | 
				
			||||||
	annotation "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/meta"
 | 
						annotation "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/meta"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podtask"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podtask"
 | 
				
			||||||
	types "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/types"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -33,10 +33,10 @@ type Binder interface {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type binder struct {
 | 
					type binder struct {
 | 
				
			||||||
	sched types.Scheduler
 | 
						sched scheduler.Scheduler
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewBinder(sched types.Scheduler) Binder {
 | 
					func NewBinder(sched scheduler.Scheduler) Binder {
 | 
				
			||||||
	return &binder{
 | 
						return &binder{
 | 
				
			||||||
		sched: sched,
 | 
							sched: sched,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -25,8 +25,8 @@ import (
 | 
				
			|||||||
	merrors "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/errors"
 | 
						merrors "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/errors"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podtask"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podtask"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/queuer"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/queuer"
 | 
				
			||||||
	types "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/types"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Deleter interface {
 | 
					type Deleter interface {
 | 
				
			||||||
@@ -35,11 +35,11 @@ type Deleter interface {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type deleter struct {
 | 
					type deleter struct {
 | 
				
			||||||
	sched types.Scheduler
 | 
						sched scheduler.Scheduler
 | 
				
			||||||
	qr    *queuer.Queuer
 | 
						qr    *queuer.Queuer
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewDeleter(sched types.Scheduler, qr *queuer.Queuer) Deleter {
 | 
					func NewDeleter(sched scheduler.Scheduler, qr *queuer.Queuer) Deleter {
 | 
				
			||||||
	return &deleter{
 | 
						return &deleter{
 | 
				
			||||||
		sched: sched,
 | 
							sched: sched,
 | 
				
			||||||
		qr:    qr,
 | 
							qr:    qr,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,7 +24,7 @@ import (
 | 
				
			|||||||
	merrors "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/errors"
 | 
						merrors "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/errors"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podtask"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podtask"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/queuer"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/queuer"
 | 
				
			||||||
	types "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/types"
 | 
						types "k8s.io/kubernetes/contrib/mesos/pkg/scheduler"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,11 +21,11 @@ import (
 | 
				
			|||||||
	mesos "github.com/mesos/mesos-go/mesosproto"
 | 
						mesos "github.com/mesos/mesos-go/mesosproto"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/backoff"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/backoff"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/queue"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/queue"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler"
 | 
				
			||||||
	merrors "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/errors"
 | 
						merrors "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/errors"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podschedulers"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podschedulers"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podtask"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podtask"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/queuer"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/queuer"
 | 
				
			||||||
	types "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/types"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util"
 | 
						"k8s.io/kubernetes/pkg/util"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -35,13 +35,13 @@ type ErrorHandler interface {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type errorHandler struct {
 | 
					type errorHandler struct {
 | 
				
			||||||
	sched        types.Scheduler
 | 
						sched        scheduler.Scheduler
 | 
				
			||||||
	backoff      *backoff.Backoff
 | 
						backoff      *backoff.Backoff
 | 
				
			||||||
	qr           *queuer.Queuer
 | 
						qr           *queuer.Queuer
 | 
				
			||||||
	podScheduler podschedulers.PodScheduler
 | 
						podScheduler podschedulers.PodScheduler
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewErrorHandler(sched types.Scheduler, backoff *backoff.Backoff, qr *queuer.Queuer, podScheduler podschedulers.PodScheduler) ErrorHandler {
 | 
					func NewErrorHandler(sched scheduler.Scheduler, backoff *backoff.Backoff, qr *queuer.Queuer, podScheduler podschedulers.PodScheduler) ErrorHandler {
 | 
				
			||||||
	return &errorHandler{
 | 
						return &errorHandler{
 | 
				
			||||||
		sched:        sched,
 | 
							sched:        sched,
 | 
				
			||||||
		backoff:      backoff,
 | 
							backoff:      backoff,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -37,6 +37,7 @@ import (
 | 
				
			|||||||
	offermetrics "k8s.io/kubernetes/contrib/mesos/pkg/offers/metrics"
 | 
						offermetrics "k8s.io/kubernetes/contrib/mesos/pkg/offers/metrics"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/proc"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/proc"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/runtime"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/runtime"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/components/tasksreconciler"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/components/tasksreconciler"
 | 
				
			||||||
	schedcfg "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/config"
 | 
						schedcfg "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/config"
 | 
				
			||||||
	merrors "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/errors"
 | 
						merrors "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/errors"
 | 
				
			||||||
@@ -44,7 +45,6 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/metrics"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/metrics"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podtask"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podtask"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/slave"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/slave"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/types"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/uid"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/uid"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/errors"
 | 
						"k8s.io/kubernetes/pkg/api/errors"
 | 
				
			||||||
@@ -59,7 +59,7 @@ import (
 | 
				
			|||||||
type Framework interface {
 | 
					type Framework interface {
 | 
				
			||||||
	mscheduler.Scheduler
 | 
						mscheduler.Scheduler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Init(sched types.Scheduler, electedMaster proc.Process, mux *http.ServeMux) error
 | 
						Init(sched scheduler.Scheduler, electedMaster proc.Process, mux *http.ServeMux) error
 | 
				
			||||||
	Registration() <-chan struct{}
 | 
						Registration() <-chan struct{}
 | 
				
			||||||
	Offers() offers.Registry
 | 
						Offers() offers.Registry
 | 
				
			||||||
	LaunchTask(t *podtask.T) error
 | 
						LaunchTask(t *podtask.T) error
 | 
				
			||||||
@@ -72,7 +72,7 @@ type framework struct {
 | 
				
			|||||||
	*sync.RWMutex
 | 
						*sync.RWMutex
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Config related, write-once
 | 
						// Config related, write-once
 | 
				
			||||||
	sched             types.Scheduler
 | 
						sched             scheduler.Scheduler
 | 
				
			||||||
	schedulerConfig   *schedcfg.Config
 | 
						schedulerConfig   *schedcfg.Config
 | 
				
			||||||
	executor          *mesos.ExecutorInfo
 | 
						executor          *mesos.ExecutorInfo
 | 
				
			||||||
	executorGroup     uint64
 | 
						executorGroup     uint64
 | 
				
			||||||
@@ -168,7 +168,7 @@ func New(config Config) Framework {
 | 
				
			|||||||
	return k
 | 
						return k
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (k *framework) Init(sched types.Scheduler, electedMaster proc.Process, mux *http.ServeMux) error {
 | 
					func (k *framework) Init(sched scheduler.Scheduler, electedMaster proc.Process, mux *http.ServeMux) error {
 | 
				
			||||||
	log.V(1).Infoln("initializing kubernetes mesos scheduler")
 | 
						log.V(1).Infoln("initializing kubernetes mesos scheduler")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	k.sched = sched
 | 
						k.sched = sched
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,7 +29,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/mock"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/mock"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podtask"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podtask"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/slave"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/slave"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/types"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/cache"
 | 
						"k8s.io/kubernetes/pkg/client/cache"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -83,8 +83,8 @@ func (r *mockRegistrator) Register(hostName string, labels map[string]string) (b
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func mockScheduler() types.Scheduler {
 | 
					func mockScheduler() scheduler.Scheduler {
 | 
				
			||||||
	mockScheduler := &types.MockScheduler{}
 | 
						mockScheduler := &scheduler.MockScheduler{}
 | 
				
			||||||
	reg := podtask.NewInMemoryRegistry()
 | 
						reg := podtask.NewInMemoryRegistry()
 | 
				
			||||||
	mockScheduler.On("Tasks").Return(reg)
 | 
						mockScheduler.On("Tasks").Return(reg)
 | 
				
			||||||
	return mockScheduler
 | 
						return mockScheduler
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,7 +24,7 @@ import (
 | 
				
			|||||||
	merrors "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/errors"
 | 
						merrors "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/errors"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podtask"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podtask"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/queuer"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/queuer"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/types"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	apierrors "k8s.io/kubernetes/pkg/api/errors"
 | 
						apierrors "k8s.io/kubernetes/pkg/api/errors"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
				
			||||||
@@ -36,13 +36,13 @@ type PodReconciler interface {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type podReconciler struct {
 | 
					type podReconciler struct {
 | 
				
			||||||
	sched   types.Scheduler
 | 
						sched   scheduler.Scheduler
 | 
				
			||||||
	client  *client.Client
 | 
						client  *client.Client
 | 
				
			||||||
	qr      *queuer.Queuer
 | 
						qr      *queuer.Queuer
 | 
				
			||||||
	deleter deleter.Deleter
 | 
						deleter deleter.Deleter
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewPodReconciler(sched types.Scheduler, client *client.Client, qr *queuer.Queuer, deleter deleter.Deleter) PodReconciler {
 | 
					func NewPodReconciler(sched scheduler.Scheduler, client *client.Client, qr *queuer.Queuer, deleter deleter.Deleter) PodReconciler {
 | 
				
			||||||
	return &podReconciler{
 | 
						return &podReconciler{
 | 
				
			||||||
		sched:   sched,
 | 
							sched:   sched,
 | 
				
			||||||
		client:  client,
 | 
							client:  client,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
 | 
				
			|||||||
limitations under the License.
 | 
					limitations under the License.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package scheduler
 | 
					package components
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/queue"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/queue"
 | 
				
			||||||
							
								
								
									
										121
									
								
								contrib/mesos/pkg/scheduler/components/scheduler.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										121
									
								
								contrib/mesos/pkg/scheduler/components/scheduler.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,121 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					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 components
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"net/http"
 | 
				
			||||||
 | 
						"sync"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/backoff"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/offers"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/queue"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/runtime"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/components/algorithm"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/components/binder"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/components/deleter"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/components/errorhandler"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/components/framework"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/components/podreconciler"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/components/schedulerloop"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/config"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podschedulers"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podtask"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/queuer"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/cache"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/record"
 | 
				
			||||||
 | 
						client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Scheduler implements types.Scheduler
 | 
				
			||||||
 | 
					type sched struct {
 | 
				
			||||||
 | 
						podReconciler podreconciler.PodReconciler
 | 
				
			||||||
 | 
						framework     framework.Framework
 | 
				
			||||||
 | 
						loop          schedulerloop.SchedulerLoop
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// unsafe state, needs to be guarded, especially changes to podtask.T objects
 | 
				
			||||||
 | 
						sync.RWMutex
 | 
				
			||||||
 | 
						taskRegistry podtask.Registry
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewScheduler(c *config.Config, fw framework.Framework, ps podschedulers.PodScheduler,
 | 
				
			||||||
 | 
						client *client.Client, recorder record.EventRecorder, terminate <-chan struct{}, mux *http.ServeMux, lw *cache.ListWatch) scheduler.Scheduler {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						core := &sched{
 | 
				
			||||||
 | 
							framework:    fw,
 | 
				
			||||||
 | 
							taskRegistry: podtask.NewInMemoryRegistry(),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Watch and queue pods that need scheduling.
 | 
				
			||||||
 | 
						updates := make(chan queue.Entry, c.UpdatesBacklog)
 | 
				
			||||||
 | 
						podUpdates := &podStoreAdapter{queue.NewHistorical(updates)}
 | 
				
			||||||
 | 
						reflector := cache.NewReflector(lw, &api.Pod{}, podUpdates, 0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						q := queuer.New(podUpdates)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						algorithm := algorithm.NewSchedulerAlgorithm(core, podUpdates, ps)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						podDeleter := deleter.NewDeleter(core, q)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						core.podReconciler = podreconciler.NewPodReconciler(core, client, q, podDeleter)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bo := backoff.New(c.InitialPodBackoff.Duration, c.MaxPodBackoff.Duration)
 | 
				
			||||||
 | 
						errorHandler := errorhandler.NewErrorHandler(core, bo, q, ps)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						binder := binder.NewBinder(core)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						startLatch := make(chan struct{})
 | 
				
			||||||
 | 
						eventBroadcaster := record.NewBroadcaster()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						runtime.On(startLatch, func() {
 | 
				
			||||||
 | 
							eventBroadcaster.StartRecordingToSink(client.Events(""))
 | 
				
			||||||
 | 
							reflector.Run() // TODO(jdef) should listen for termination
 | 
				
			||||||
 | 
							podDeleter.Run(updates, terminate)
 | 
				
			||||||
 | 
							q.Run(terminate)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							q.InstallDebugHandlers(mux)
 | 
				
			||||||
 | 
							podtask.InstallDebugHandlers(core.Tasks(), mux)
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						core.loop = schedulerloop.NewSchedulerLoop(client, algorithm, recorder, q.Yield, errorHandler.Error, binder, startLatch)
 | 
				
			||||||
 | 
						return core
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *sched) Run(done <-chan struct{}) {
 | 
				
			||||||
 | 
						c.loop.Run(done)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *sched) Reconcile(t *podtask.T) {
 | 
				
			||||||
 | 
						c.podReconciler.Reconcile(t)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *sched) Tasks() podtask.Registry {
 | 
				
			||||||
 | 
						return c.taskRegistry
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *sched) Offers() offers.Registry {
 | 
				
			||||||
 | 
						return c.framework.Offers()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *sched) KillTask(id string) error {
 | 
				
			||||||
 | 
						return c.framework.KillTask(id)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *sched) LaunchTask(t *podtask.T) error {
 | 
				
			||||||
 | 
						return c.framework.LaunchTask(t)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -14,6 +14,5 @@ See the License for the specific language governing permissions and
 | 
				
			|||||||
limitations under the License.
 | 
					limitations under the License.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Package types contains an abstract framework interface, implemented by the
 | 
					// Package integration implements integration tests.
 | 
				
			||||||
// MesosScheduler and consumed by the scheduler operations.
 | 
					package integration
 | 
				
			||||||
package types
 | 
					 | 
				
			||||||
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
 | 
				
			|||||||
limitations under the License.
 | 
					limitations under the License.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package scheduler
 | 
					package integration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"encoding/json"
 | 
						"encoding/json"
 | 
				
			||||||
@@ -33,6 +33,8 @@ import (
 | 
				
			|||||||
	"github.com/stretchr/testify/mock"
 | 
						"github.com/stretchr/testify/mock"
 | 
				
			||||||
	assertext "k8s.io/kubernetes/contrib/mesos/pkg/assert"
 | 
						assertext "k8s.io/kubernetes/contrib/mesos/pkg/assert"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/executor/messages"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/executor/messages"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/components"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/components/framework"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/components/framework"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/components/schedulerloop"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/components/schedulerloop"
 | 
				
			||||||
	schedcfg "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/config"
 | 
						schedcfg "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/config"
 | 
				
			||||||
@@ -430,7 +432,7 @@ type lifecycleTest struct {
 | 
				
			|||||||
	podsListWatch *MockPodsListWatch
 | 
						podsListWatch *MockPodsListWatch
 | 
				
			||||||
	framework     framework.Framework
 | 
						framework     framework.Framework
 | 
				
			||||||
	schedulerProc *ha.SchedulerProcess
 | 
						schedulerProc *ha.SchedulerProcess
 | 
				
			||||||
	scheduler     *scheduler
 | 
						sched         scheduler.Scheduler
 | 
				
			||||||
	t             *testing.T
 | 
						t             *testing.T
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -486,7 +488,7 @@ func newLifecycleTest(t *testing.T) lifecycleTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// create scheduler
 | 
						// create scheduler
 | 
				
			||||||
	eventObs := NewEventObserver()
 | 
						eventObs := NewEventObserver()
 | 
				
			||||||
	scheduler := NewScheduler(&c, framework, fcfs, client, eventObs, schedulerProc.Terminal(), http.DefaultServeMux, &podsListWatch.ListWatch)
 | 
						scheduler := components.NewScheduler(&c, framework, fcfs, client, eventObs, schedulerProc.Terminal(), http.DefaultServeMux, &podsListWatch.ListWatch)
 | 
				
			||||||
	assert.NotNil(scheduler)
 | 
						assert.NotNil(scheduler)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// create mock mesos scheduler driver
 | 
						// create mock mesos scheduler driver
 | 
				
			||||||
@@ -499,18 +501,18 @@ func newLifecycleTest(t *testing.T) lifecycleTest {
 | 
				
			|||||||
		podsListWatch: podsListWatch,
 | 
							podsListWatch: podsListWatch,
 | 
				
			||||||
		framework:     framework,
 | 
							framework:     framework,
 | 
				
			||||||
		schedulerProc: schedulerProc,
 | 
							schedulerProc: schedulerProc,
 | 
				
			||||||
		scheduler:     scheduler,
 | 
							sched:         scheduler,
 | 
				
			||||||
		t:             t,
 | 
							t:             t,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (lt lifecycleTest) Start() <-chan LaunchedTask {
 | 
					func (lt lifecycleTest) Start() <-chan LaunchedTask {
 | 
				
			||||||
	assert := &EventAssertions{*assert.New(lt.t)}
 | 
						assert := &EventAssertions{*assert.New(lt.t)}
 | 
				
			||||||
	lt.scheduler.Run(lt.schedulerProc.Terminal())
 | 
						lt.sched.Run(lt.schedulerProc.Terminal())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// init framework
 | 
						// init framework
 | 
				
			||||||
	err := lt.framework.Init(
 | 
						err := lt.framework.Init(
 | 
				
			||||||
		lt.scheduler,
 | 
							lt.sched,
 | 
				
			||||||
		lt.schedulerProc.Master(),
 | 
							lt.schedulerProc.Master(),
 | 
				
			||||||
		http.DefaultServeMux,
 | 
							http.DefaultServeMux,
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
@@ -795,7 +797,7 @@ func TestScheduler_LifeCycle(t *testing.T) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	podKey, _ := podtask.MakePodKey(api.NewDefaultContext(), pod.Name)
 | 
						podKey, _ := podtask.MakePodKey(api.NewDefaultContext(), pod.Name)
 | 
				
			||||||
	assertext.EventuallyTrue(t, util.ForeverTestTimeout, func() bool {
 | 
						assertext.EventuallyTrue(t, util.ForeverTestTimeout, func() bool {
 | 
				
			||||||
		t, _ := lt.scheduler.Tasks().ForPod(podKey)
 | 
							t, _ := lt.sched.Tasks().ForPod(podKey)
 | 
				
			||||||
		return t == nil
 | 
							return t == nil
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -17,105 +17,22 @@ limitations under the License.
 | 
				
			|||||||
package scheduler
 | 
					package scheduler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"net/http"
 | 
					 | 
				
			||||||
	"sync"
 | 
						"sync"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/backoff"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/offers"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/offers"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/queue"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/runtime"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/components/algorithm"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/components/binder"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/components/deleter"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/components/errorhandler"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/components/framework"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/components/podreconciler"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/components/schedulerloop"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/config"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podschedulers"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podtask"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podtask"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/queuer"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/types"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/cache"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/record"
 | 
					 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Scheduler implements types.Scheduler
 | 
					// Scheduler abstracts everything other components of the scheduler need
 | 
				
			||||||
type scheduler struct {
 | 
					// to access from eachother
 | 
				
			||||||
	podReconciler podreconciler.PodReconciler
 | 
					type Scheduler interface {
 | 
				
			||||||
	framework     framework.Framework
 | 
						Tasks() podtask.Registry
 | 
				
			||||||
	loop          schedulerloop.SchedulerLoop
 | 
						sync.Locker // synchronize changes to tasks, i.e. lock, get task, change task, store task, unlock
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// unsafe state, needs to be guarded, especially changes to podtask.T objects
 | 
						Offers() offers.Registry
 | 
				
			||||||
	sync.RWMutex
 | 
						Reconcile(t *podtask.T)
 | 
				
			||||||
	taskRegistry podtask.Registry
 | 
						KillTask(id string) error
 | 
				
			||||||
}
 | 
						LaunchTask(t *podtask.T) error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewScheduler(c *config.Config, fw framework.Framework, ps podschedulers.PodScheduler,
 | 
						Run(done <-chan struct{})
 | 
				
			||||||
	client *client.Client, recorder record.EventRecorder, terminate <-chan struct{}, mux *http.ServeMux, lw *cache.ListWatch) types.Scheduler {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	core := &scheduler{
 | 
					 | 
				
			||||||
		framework:    fw,
 | 
					 | 
				
			||||||
		taskRegistry: podtask.NewInMemoryRegistry(),
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Watch and queue pods that need scheduling.
 | 
					 | 
				
			||||||
	updates := make(chan queue.Entry, c.UpdatesBacklog)
 | 
					 | 
				
			||||||
	podUpdates := &podStoreAdapter{queue.NewHistorical(updates)}
 | 
					 | 
				
			||||||
	reflector := cache.NewReflector(lw, &api.Pod{}, podUpdates, 0)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	q := queuer.New(podUpdates)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	algorithm := algorithm.NewSchedulerAlgorithm(core, podUpdates, ps)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	podDeleter := deleter.NewDeleter(core, q)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	core.podReconciler = podreconciler.NewPodReconciler(core, client, q, podDeleter)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	bo := backoff.New(c.InitialPodBackoff.Duration, c.MaxPodBackoff.Duration)
 | 
					 | 
				
			||||||
	errorHandler := errorhandler.NewErrorHandler(core, bo, q, ps)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	binder := binder.NewBinder(core)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	startLatch := make(chan struct{})
 | 
					 | 
				
			||||||
	eventBroadcaster := record.NewBroadcaster()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	runtime.On(startLatch, func() {
 | 
					 | 
				
			||||||
		eventBroadcaster.StartRecordingToSink(client.Events(""))
 | 
					 | 
				
			||||||
		reflector.Run() // TODO(jdef) should listen for termination
 | 
					 | 
				
			||||||
		podDeleter.Run(updates, terminate)
 | 
					 | 
				
			||||||
		q.Run(terminate)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		q.InstallDebugHandlers(mux)
 | 
					 | 
				
			||||||
		podtask.InstallDebugHandlers(core.Tasks(), mux)
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	core.loop = schedulerloop.NewSchedulerLoop(client, algorithm, recorder, q.Yield, errorHandler.Error, binder, startLatch)
 | 
					 | 
				
			||||||
	return core
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (c *scheduler) Run(done <-chan struct{}) {
 | 
					 | 
				
			||||||
	c.loop.Run(done)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (c *scheduler) Reconcile(t *podtask.T) {
 | 
					 | 
				
			||||||
	c.podReconciler.Reconcile(t)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (c *scheduler) Tasks() podtask.Registry {
 | 
					 | 
				
			||||||
	return c.taskRegistry
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (c *scheduler) Offers() offers.Registry {
 | 
					 | 
				
			||||||
	return c.framework.Offers()
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (c *scheduler) KillTask(id string) error {
 | 
					 | 
				
			||||||
	return c.framework.KillTask(id)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (c *scheduler) LaunchTask(t *podtask.T) error {
 | 
					 | 
				
			||||||
	return c.framework.LaunchTask(t)
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
 | 
				
			|||||||
limitations under the License.
 | 
					limitations under the License.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package types
 | 
					package scheduler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"sync"
 | 
						"sync"
 | 
				
			||||||
@@ -54,7 +54,6 @@ import (
 | 
				
			|||||||
	minioncfg "k8s.io/kubernetes/contrib/mesos/pkg/minion/config"
 | 
						minioncfg "k8s.io/kubernetes/contrib/mesos/pkg/minion/config"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/profile"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/profile"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/runtime"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/runtime"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/components/framework"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/components/framework"
 | 
				
			||||||
	schedcfg "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/config"
 | 
						schedcfg "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/config"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/ha"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/ha"
 | 
				
			||||||
@@ -75,6 +74,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/master/ports"
 | 
						"k8s.io/kubernetes/pkg/master/ports"
 | 
				
			||||||
	etcdstorage "k8s.io/kubernetes/pkg/storage/etcd"
 | 
						etcdstorage "k8s.io/kubernetes/pkg/storage/etcd"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/tools"
 | 
						"k8s.io/kubernetes/pkg/tools"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/components"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const (
 | 
					const (
 | 
				
			||||||
@@ -763,14 +763,14 @@ func (s *SchedulerServer) bootstrap(hks hyperkube.Interface, sc *schedcfg.Config
 | 
				
			|||||||
	eventBroadcaster := record.NewBroadcaster()
 | 
						eventBroadcaster := record.NewBroadcaster()
 | 
				
			||||||
	recorder := eventBroadcaster.NewRecorder(api.EventSource{Component: "scheduler"})
 | 
						recorder := eventBroadcaster.NewRecorder(api.EventSource{Component: "scheduler"})
 | 
				
			||||||
	lw := cache.NewListWatchFromClient(client, "pods", api.NamespaceAll, fields.Everything())
 | 
						lw := cache.NewListWatchFromClient(client, "pods", api.NamespaceAll, fields.Everything())
 | 
				
			||||||
	scheduler := scheduler.NewScheduler(sc, framework, fcfs, client, recorder, schedulerProcess.Terminal(), s.mux, lw)
 | 
						sched := components.NewScheduler(sc, framework, fcfs, client, recorder, schedulerProcess.Terminal(), s.mux, lw)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	runtime.On(framework.Registration(), func() { scheduler.Run(schedulerProcess.Terminal()) })
 | 
						runtime.On(framework.Registration(), func() { sched.Run(schedulerProcess.Terminal()) })
 | 
				
			||||||
	runtime.On(framework.Registration(), s.newServiceWriter(schedulerProcess.Terminal()))
 | 
						runtime.On(framework.Registration(), s.newServiceWriter(schedulerProcess.Terminal()))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	driverFactory := ha.DriverFactory(func() (drv bindings.SchedulerDriver, err error) {
 | 
						driverFactory := ha.DriverFactory(func() (drv bindings.SchedulerDriver, err error) {
 | 
				
			||||||
		log.V(1).Infoln("performing deferred initialization")
 | 
							log.V(1).Infoln("performing deferred initialization")
 | 
				
			||||||
		if err = framework.Init(scheduler, schedulerProcess.Master(), s.mux); err != nil {
 | 
							if err = framework.Init(sched, schedulerProcess.Master(), s.mux); err != nil {
 | 
				
			||||||
			return nil, fmt.Errorf("failed to initialize pod scheduler: %v", err)
 | 
								return nil, fmt.Errorf("failed to initialize pod scheduler: %v", err)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		log.V(1).Infoln("deferred init complete")
 | 
							log.V(1).Infoln("deferred init complete")
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,38 +0,0 @@
 | 
				
			|||||||
/*
 | 
					 | 
				
			||||||
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 types
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"sync"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/offers"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podtask"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Scheduler abstracts everything other components of the scheduler need
 | 
					 | 
				
			||||||
// to access from eachother
 | 
					 | 
				
			||||||
type Scheduler interface {
 | 
					 | 
				
			||||||
	Tasks() podtask.Registry
 | 
					 | 
				
			||||||
	sync.Locker // synchronize changes to tasks, i.e. lock, get task, change task, store task, unlock
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	Offers() offers.Registry
 | 
					 | 
				
			||||||
	Reconcile(t *podtask.T)
 | 
					 | 
				
			||||||
	KillTask(id string) error
 | 
					 | 
				
			||||||
	LaunchTask(t *podtask.T) error
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	Run(done <-chan struct{})
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user