|
|
|
@@ -22,6 +22,7 @@ import ( |
|
|
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/scheduler/database" |
|
|
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/scheduler/service" |
|
|
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/scheduler/strategy" |
|
|
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types" |
|
|
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/response" |
|
|
|
"gorm.io/gorm" |
|
|
|
"sigs.k8s.io/yaml" |
|
|
|
@@ -131,26 +132,50 @@ func (s *Scheduler) TempAssign() error { |
|
|
|
return nil |
|
|
|
} |
|
|
|
|
|
|
|
func (s *Scheduler) AssignAndSchedule(ss SubSchedule, mode int) (interface{}, error) { |
|
|
|
//choose strategy |
|
|
|
strategy, err := ss.PickOptimalStrategy() |
|
|
|
if err != nil { |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
func (s *Scheduler) AssignAndSchedule(ss SubSchedule, mode int, assignedClusters interface{}) (interface{}, error) { |
|
|
|
var result interface{} |
|
|
|
switch mode { |
|
|
|
case JOINT_CLOUD_MODE: |
|
|
|
//choose strategy |
|
|
|
strategy, err := ss.PickOptimalStrategy() |
|
|
|
if err != nil { |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
|
|
|
|
//schedule |
|
|
|
clusters, err := strategy.Schedule() |
|
|
|
if err != nil { |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
//schedule |
|
|
|
clusters, err := strategy.Schedule() |
|
|
|
if err != nil { |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
|
|
|
|
//assign tasks to clusters |
|
|
|
resp, err := ss.AssignTask(clusters, mode) |
|
|
|
if err != nil { |
|
|
|
return nil, err |
|
|
|
//assign tasks to clusters |
|
|
|
resp, err := ss.AssignTask(clusters, mode) |
|
|
|
if err != nil { |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
|
|
|
|
result = resp |
|
|
|
|
|
|
|
case STORAGE_SCHEDULE_MODE: |
|
|
|
jobClusterInfos, ok := assignedClusters.([]*types.JobClusterInfo) |
|
|
|
if !ok { |
|
|
|
return nil, errors.New("converting JobClusterInfos fails") |
|
|
|
} |
|
|
|
var clusters []*strategy.AssignedCluster |
|
|
|
for _, info := range jobClusterInfos { |
|
|
|
cluster := &strategy.AssignedCluster{ClusterId: info.ClusterID, Replicas: 1} |
|
|
|
clusters = append(clusters, cluster) |
|
|
|
} |
|
|
|
//assign tasks to clusters |
|
|
|
resp, err := ss.AssignTask(clusters, mode) |
|
|
|
if err != nil { |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
|
|
|
|
result = resp |
|
|
|
} |
|
|
|
|
|
|
|
return resp, nil |
|
|
|
return result, nil |
|
|
|
} |
|
|
|
|
|
|
|
func (s *Scheduler) SaveToDb() error { |
|
|
|
|