Move framework into components directory
This commit is contained in:
		
							
								
								
									
										18
									
								
								contrib/mesos/pkg/scheduler/components/framework/doc.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								contrib/mesos/pkg/scheduler/components/framework/doc.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					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 framework implements the Mesos scheduler.
 | 
				
			||||||
 | 
					package framework
 | 
				
			||||||
@@ -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 framework
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
@@ -29,6 +29,7 @@ import (
 | 
				
			|||||||
	mesos "github.com/mesos/mesos-go/mesosproto"
 | 
						mesos "github.com/mesos/mesos-go/mesosproto"
 | 
				
			||||||
	mutil "github.com/mesos/mesos-go/mesosutil"
 | 
						mutil "github.com/mesos/mesos-go/mesosutil"
 | 
				
			||||||
	bindings "github.com/mesos/mesos-go/scheduler"
 | 
						bindings "github.com/mesos/mesos-go/scheduler"
 | 
				
			||||||
 | 
						mscheduler "github.com/mesos/mesos-go/scheduler"
 | 
				
			||||||
	execcfg "k8s.io/kubernetes/contrib/mesos/pkg/executor/config"
 | 
						execcfg "k8s.io/kubernetes/contrib/mesos/pkg/executor/config"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/executor/messages"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/executor/messages"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/node"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/node"
 | 
				
			||||||
@@ -53,13 +54,12 @@ import (
 | 
				
			|||||||
	kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
 | 
						kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/labels"
 | 
						"k8s.io/kubernetes/pkg/labels"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util/sets"
 | 
						"k8s.io/kubernetes/pkg/util/sets"
 | 
				
			||||||
	mscheduler "github.com/mesos/mesos-go/scheduler"
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Framework interface {
 | 
					type Framework interface {
 | 
				
			||||||
	mscheduler.Scheduler
 | 
						mscheduler.Scheduler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Init(scheduler *Scheduler, electedMaster proc.Process, mux *http.ServeMux) error
 | 
						Init(sched types.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
 | 
				
			||||||
@@ -168,10 +168,10 @@ func New(config Config) Framework {
 | 
				
			|||||||
	return k
 | 
						return k
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (k *framework) Init(scheduler *Scheduler, electedMaster proc.Process, mux *http.ServeMux) error {
 | 
					func (k *framework) Init(sched types.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 = scheduler
 | 
						k.sched = sched
 | 
				
			||||||
	k.mux = mux
 | 
						k.mux = mux
 | 
				
			||||||
	k.asRegisteredMaster = proc.DoerFunc(func(a proc.Action) <-chan error {
 | 
						k.asRegisteredMaster = proc.DoerFunc(func(a proc.Action) <-chan error {
 | 
				
			||||||
		if !k.registered {
 | 
							if !k.registered {
 | 
				
			||||||
@@ -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 framework
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"reflect"
 | 
						"reflect"
 | 
				
			||||||
@@ -33,6 +33,7 @@ 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/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"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/ha"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/ha"
 | 
				
			||||||
@@ -427,7 +428,7 @@ type lifecycleTest struct {
 | 
				
			|||||||
	driver        *mmock.JoinableDriver
 | 
						driver        *mmock.JoinableDriver
 | 
				
			||||||
	eventObs      *EventObserver
 | 
						eventObs      *EventObserver
 | 
				
			||||||
	podsListWatch *MockPodsListWatch
 | 
						podsListWatch *MockPodsListWatch
 | 
				
			||||||
	framework     Framework
 | 
						framework     framework.Framework
 | 
				
			||||||
	schedulerProc *ha.SchedulerProcess
 | 
						schedulerProc *ha.SchedulerProcess
 | 
				
			||||||
	scheduler     *Scheduler
 | 
						scheduler     *Scheduler
 | 
				
			||||||
	t             *testing.T
 | 
						t             *testing.T
 | 
				
			||||||
@@ -455,7 +456,7 @@ func newLifecycleTest(t *testing.T) lifecycleTest {
 | 
				
			|||||||
		Version: testapi.Default.Version(),
 | 
							Version: testapi.Default.Version(),
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
	c := *schedcfg.CreateDefaultConfig()
 | 
						c := *schedcfg.CreateDefaultConfig()
 | 
				
			||||||
	framework := New(Config{
 | 
						framework := framework.New(framework.Config{
 | 
				
			||||||
		Executor:        ei,
 | 
							Executor:        ei,
 | 
				
			||||||
		Client:          client,
 | 
							Client:          client,
 | 
				
			||||||
		SchedulerConfig: c,
 | 
							SchedulerConfig: c,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,6 +28,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/components/binder"
 | 
						"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/deleter"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/components/errorhandler"
 | 
						"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/podreconciler"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/components/schedulerloop"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/components/schedulerloop"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/config"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/config"
 | 
				
			||||||
@@ -43,7 +44,7 @@ import (
 | 
				
			|||||||
// Scheduler implements types.Scheduler
 | 
					// Scheduler implements types.Scheduler
 | 
				
			||||||
type Scheduler struct {
 | 
					type Scheduler struct {
 | 
				
			||||||
	podReconciler podreconciler.PodReconciler
 | 
						podReconciler podreconciler.PodReconciler
 | 
				
			||||||
	framework     Framework
 | 
						framework     framework.Framework
 | 
				
			||||||
	loop          schedulerloop.SchedulerLoop
 | 
						loop          schedulerloop.SchedulerLoop
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// unsafe state, needs to be guarded, especially changes to podtask.T objects
 | 
						// unsafe state, needs to be guarded, especially changes to podtask.T objects
 | 
				
			||||||
@@ -51,29 +52,29 @@ type Scheduler struct {
 | 
				
			|||||||
	taskRegistry podtask.Registry
 | 
						taskRegistry podtask.Registry
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewScheduler(c *config.Config, framework Framework, podScheduler podschedulers.PodScheduler,
 | 
					func NewScheduler(c *config.Config, fw framework.Framework, ps podschedulers.PodScheduler,
 | 
				
			||||||
	client *client.Client, recorder record.EventRecorder, terminate <-chan struct{}, mux *http.ServeMux, podsWatcher *cache.ListWatch) *Scheduler {
 | 
						client *client.Client, recorder record.EventRecorder, terminate <-chan struct{}, mux *http.ServeMux, lw *cache.ListWatch) *Scheduler {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	core := &Scheduler{
 | 
						core := &Scheduler{
 | 
				
			||||||
		framework:    framework,
 | 
							framework:    fw,
 | 
				
			||||||
		taskRegistry: podtask.NewInMemoryRegistry(),
 | 
							taskRegistry: podtask.NewInMemoryRegistry(),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// 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)
 | 
				
			||||||
	podUpdates := &podStoreAdapter{queue.NewHistorical(updates)}
 | 
						podUpdates := &podStoreAdapter{queue.NewHistorical(updates)}
 | 
				
			||||||
	reflector := cache.NewReflector(podsWatcher, &api.Pod{}, podUpdates, 0)
 | 
						reflector := cache.NewReflector(lw, &api.Pod{}, podUpdates, 0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	q := queuer.New(podUpdates)
 | 
						q := queuer.New(podUpdates)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	algorithm := algorithm.NewSchedulerAlgorithm(core, podUpdates, podScheduler)
 | 
						algorithm := algorithm.NewSchedulerAlgorithm(core, podUpdates, ps)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	podDeleter := deleter.NewDeleter(core, q)
 | 
						podDeleter := deleter.NewDeleter(core, q)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	core.podReconciler = podreconciler.NewPodReconciler(core, client, q, podDeleter)
 | 
						core.podReconciler = podreconciler.NewPodReconciler(core, client, q, podDeleter)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	bo := backoff.New(c.InitialPodBackoff.Duration, c.MaxPodBackoff.Duration)
 | 
						bo := backoff.New(c.InitialPodBackoff.Duration, c.MaxPodBackoff.Duration)
 | 
				
			||||||
	errorHandler := errorhandler.NewErrorHandler(core, bo, q, podScheduler)
 | 
						errorHandler := errorhandler.NewErrorHandler(core, bo, q, ps)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	binder := binder.NewBinder(core)
 | 
						binder := binder.NewBinder(core)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -55,6 +55,7 @@ import (
 | 
				
			|||||||
	"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"
 | 
				
			||||||
 | 
						"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"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/meta"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/meta"
 | 
				
			||||||
@@ -719,7 +720,7 @@ func (s *SchedulerServer) bootstrap(hks hyperkube.Interface, sc *schedcfg.Config
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	fcfs := podschedulers.NewFCFSPodScheduler(as, lookupNode)
 | 
						fcfs := podschedulers.NewFCFSPodScheduler(as, lookupNode)
 | 
				
			||||||
	framework := scheduler.New(scheduler.Config{
 | 
						framework := framework.New(framework.Config{
 | 
				
			||||||
		SchedulerConfig:   *sc,
 | 
							SchedulerConfig:   *sc,
 | 
				
			||||||
		Executor:          executor,
 | 
							Executor:          executor,
 | 
				
			||||||
		Client:            client,
 | 
							Client:            client,
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user