Rename mesosSchedulerApiAdapter -> mesosFramework, move to mesosframework.go

pull/6/head
Dr. Stefan Schimanski 2015-10-26 14:59:42 -05:00
parent f4e1de55d6
commit 2c00037883
3 changed files with 69 additions and 45 deletions

View File

@ -937,7 +937,7 @@ func (k *MesosScheduler) NewPluginConfig(terminate <-chan struct{}, mux *http.Se
// lock that guards critial sections that involve transferring pods from
// the store (cache) to the scheduling queue; its purpose is to maintain
// an ordering (vs interleaving) of operations that's easier to reason about.
scheduler := &mesosSchedulerApiAdapter{mesosScheduler: k}
scheduler := &mesosFramework{mesosScheduler: k}
q := queuer.New(podUpdates)
podDeleter := operations.NewDeleter(scheduler, q)
bo := backoff.New(k.schedulerConfig.InitialPodBackoff.Duration, k.schedulerConfig.MaxPodBackoff.Duration)

View File

@ -0,0 +1,68 @@
/*
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 scheduler
import (
"sync"
mesos "github.com/mesos/mesos-go/mesosproto"
mutil "github.com/mesos/mesos-go/mesosutil"
"k8s.io/kubernetes/contrib/mesos/pkg/offers"
"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podschedulers"
"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podtask"
"k8s.io/kubernetes/pkg/api"
)
type mesosFramework struct {
sync.Mutex
mesosScheduler *MesosScheduler
}
func (fw *mesosFramework) PodScheduler() podschedulers.PodScheduler {
return fw.mesosScheduler.podScheduler
}
func (fw *mesosFramework) Offers() offers.Registry {
return fw.mesosScheduler.offers
}
func (fw *mesosFramework) Tasks() podtask.Registry {
return fw.mesosScheduler.taskRegistry
}
func (fw *mesosFramework) CreatePodTask(ctx api.Context, pod *api.Pod) (*podtask.T, error) {
return podtask.New(ctx, "", *pod, fw.mesosScheduler.executor)
}
func (fw *mesosFramework) SlaveHostNameFor(id string) string {
return fw.mesosScheduler.slaveHostNames.HostName(id)
}
func (fw *mesosFramework) KillTask(taskId string) error {
killTaskId := mutil.NewTaskID(taskId)
_, err := fw.mesosScheduler.driver.KillTask(killTaskId)
return err
}
func (fw *mesosFramework) LaunchTask(task *podtask.T) error {
// assume caller is holding scheduler lock
taskList := []*mesos.TaskInfo{task.BuildTaskInfo()}
offerIds := []*mesos.OfferID{task.Offer.Details().Id}
filters := &mesos.Filters{}
_, err := fw.mesosScheduler.driver.LaunchTasks(offerIds, taskList, filters)
return err
}

View File

@ -18,18 +18,14 @@ package scheduler
import (
"fmt"
"sync"
"time"
log "github.com/golang/glog"
mesos "github.com/mesos/mesos-go/mesosproto"
mutil "github.com/mesos/mesos-go/mesosutil"
"k8s.io/kubernetes/contrib/mesos/pkg/offers"
"k8s.io/kubernetes/contrib/mesos/pkg/queue"
"k8s.io/kubernetes/contrib/mesos/pkg/runtime"
merrors "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/errors"
"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/operations"
"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podschedulers"
"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/podtask"
"k8s.io/kubernetes/contrib/mesos/pkg/scheduler/queuer"
types "k8s.io/kubernetes/contrib/mesos/pkg/scheduler/types"
@ -57,46 +53,6 @@ type PluginInterface interface {
Run(<-chan struct{})
}
type mesosSchedulerApiAdapter struct {
sync.Mutex
mesosScheduler *MesosScheduler
}
func (k *mesosSchedulerApiAdapter) PodScheduler() podschedulers.PodScheduler {
return k.mesosScheduler.podScheduler
}
func (k *mesosSchedulerApiAdapter) Offers() offers.Registry {
return k.mesosScheduler.offers
}
func (k *mesosSchedulerApiAdapter) Tasks() podtask.Registry {
return k.mesosScheduler.taskRegistry
}
func (k *mesosSchedulerApiAdapter) CreatePodTask(ctx api.Context, pod *api.Pod) (*podtask.T, error) {
return podtask.New(ctx, "", *pod, k.mesosScheduler.executor)
}
func (k *mesosSchedulerApiAdapter) SlaveHostNameFor(id string) string {
return k.mesosScheduler.slaveHostNames.HostName(id)
}
func (k *mesosSchedulerApiAdapter) KillTask(taskId string) error {
killTaskId := mutil.NewTaskID(taskId)
_, err := k.mesosScheduler.driver.KillTask(killTaskId)
return err
}
func (k *mesosSchedulerApiAdapter) LaunchTask(task *podtask.T) error {
// assume caller is holding scheduler lock
taskList := []*mesos.TaskInfo{task.BuildTaskInfo()}
offerIds := []*mesos.OfferID{task.Offer.Details().Id}
filters := &mesos.Filters{}
_, err := k.mesosScheduler.driver.LaunchTasks(offerIds, taskList, filters)
return err
}
// k8smSchedulingAlgorithm implements the algorithm.ScheduleAlgorithm interface
type schedulerApiAlgorithmAdapter struct {
fw types.Framework