|
|
|
@@ -29,6 +29,11 @@ import ( |
|
|
|
"sync" |
|
|
|
) |
|
|
|
|
|
|
|
const ( |
|
|
|
JOINT_CLOUD_MODE = iota + 1 |
|
|
|
STORAGE_SCHEDULE_MODE |
|
|
|
) |
|
|
|
|
|
|
|
type Scheduler struct { |
|
|
|
task *response.TaskInfo |
|
|
|
participantIds []int64 |
|
|
|
@@ -43,7 +48,7 @@ type Scheduler struct { |
|
|
|
type SubSchedule interface { |
|
|
|
GetNewStructForDb(task *response.TaskInfo, resource string, participantId int64) (interface{}, error) |
|
|
|
PickOptimalStrategy() (strategy.Strategy, error) |
|
|
|
AssignTask(clusters []*strategy.AssignedCluster) (interface{}, error) |
|
|
|
AssignTask(clusters []*strategy.AssignedCluster, mode int) (interface{}, error) |
|
|
|
} |
|
|
|
|
|
|
|
func NewScheduler(subSchedule SubSchedule, val string, dbEngin *gorm.DB) (*Scheduler, error) { |
|
|
|
@@ -126,7 +131,7 @@ func (s *Scheduler) TempAssign() error { |
|
|
|
return nil |
|
|
|
} |
|
|
|
|
|
|
|
func (s *Scheduler) AssignAndSchedule(ss SubSchedule) (interface{}, error) { |
|
|
|
func (s *Scheduler) AssignAndSchedule(ss SubSchedule, mode int) (interface{}, error) { |
|
|
|
//choose strategy |
|
|
|
strategy, err := ss.PickOptimalStrategy() |
|
|
|
if err != nil { |
|
|
|
@@ -140,7 +145,7 @@ func (s *Scheduler) AssignAndSchedule(ss SubSchedule) (interface{}, error) { |
|
|
|
} |
|
|
|
|
|
|
|
//assign tasks to clusters |
|
|
|
resp, err := ss.AssignTask(clusters) |
|
|
|
resp, err := ss.AssignTask(clusters, mode) |
|
|
|
if err != nil { |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
|