diff --git a/api/internal/pkg/scheduler/aiScheduler.go b/api/internal/pkg/scheduler/aiScheduler.go index 30f456c8..e83543e1 100644 --- a/api/internal/pkg/scheduler/aiScheduler.go +++ b/api/internal/pkg/scheduler/aiScheduler.go @@ -5,6 +5,7 @@ import ( "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" "gitlink.org.cn/jcce-pcm/pcm-coordinator/model" "gitlink.org.cn/jcce-pcm/utils/tool" + "gorm.io/gorm" ) type aiScheduler struct { @@ -29,3 +30,19 @@ func (as *aiScheduler) getNewStructForDb(task *types.TaskInfo, participantId int func (as *aiScheduler) pickOptimalStrategy(task *algo.Task, providers ...*algo.Provider) (*algo.Task, error) { return nil, nil } + +func (as *aiScheduler) genTaskAndProviders(task *types.TaskInfo, dbEngin *gorm.DB) (*algo.Task, []*algo.Provider) { + var proParams []providerParams + sqlstr := "SELECT SUM(a.disk_avail) as disk_avail,SUM(a.mem_avail) as mem_avail,SUM(a.cpu_total * a.cpu_usable) as cpu_avail,participant_id from (SELECT * from sc_node_avail_info where created_time in (SELECT MAX(created_time) as time from sc_node_avail_info where deleted_flag = 0 GROUP BY participant_id,node_name)) a GROUP BY a.participant_id" + dbEngin.Raw(sqlstr).Scan(&proParams) + + var providerList []*algo.Provider + for _, p := range proParams { + provider := algo.NewProvider(p.Participant_id, p.Cpu_avail, p.Mem_avail, p.Disk_avail, 0.0, 0.0, 0.0) + providerList = append(providerList, provider) + } + + t := algo.NewTask(0, 1, 2, 75120000, 301214500, 1200, 2, 6, 2000) + + return t, providerList +} diff --git a/api/internal/pkg/scheduler/cloudScheduler.go b/api/internal/pkg/scheduler/cloudScheduler.go index 6c01b64c..b17fd854 100644 --- a/api/internal/pkg/scheduler/cloudScheduler.go +++ b/api/internal/pkg/scheduler/cloudScheduler.go @@ -7,6 +7,7 @@ import ( "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" "gitlink.org.cn/jcce-pcm/pcm-coordinator/model" "gitlink.org.cn/jcce-pcm/utils/tool" + "gorm.io/gorm" "io" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime" @@ -81,3 +82,19 @@ func (cs *cloudScheduler) UnMarshalK8sStruct(yamlString string, taskId int64) mo } return cloud } + +func (cs *cloudScheduler) genTaskAndProviders(task *types.TaskInfo, dbEngin *gorm.DB) (*algo.Task, []*algo.Provider) { + var proParams []providerParams + sqlstr := "SELECT SUM(a.disk_avail) as disk_avail,SUM(a.mem_avail) as mem_avail,SUM(a.cpu_total * a.cpu_usable) as cpu_avail,participant_id from (SELECT * from sc_node_avail_info where created_time in (SELECT MAX(created_time) as time from sc_node_avail_info where deleted_flag = 0 GROUP BY participant_id,node_name)) a GROUP BY a.participant_id" + dbEngin.Raw(sqlstr).Scan(&proParams) + + var providerList []*algo.Provider + for _, p := range proParams { + provider := algo.NewProvider(p.Participant_id, p.Cpu_avail, p.Mem_avail, p.Disk_avail, 0.0, 0.0, 0.0) + providerList = append(providerList, provider) + } + + t := algo.NewTask(0, 1, 2, 75120000, 301214500, 1200, 2, 6, 2000) + + return t, providerList +} diff --git a/api/internal/pkg/scheduler/commonScheduler.go b/api/internal/pkg/scheduler/commonScheduler.go index f78f209e..4eef99e0 100644 --- a/api/internal/pkg/scheduler/commonScheduler.go +++ b/api/internal/pkg/scheduler/commonScheduler.go @@ -3,6 +3,7 @@ package scheduler import ( "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/algo" "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" + "gorm.io/gorm" "math/rand" "time" ) @@ -10,6 +11,7 @@ import ( type scheduleService interface { getNewStructForDb(task *types.TaskInfo, participantId int64) (interface{}, error) pickOptimalStrategy(task *algo.Task, providers ...*algo.Provider) (*algo.Task, error) + genTaskAndProviders(task *types.TaskInfo, dbEngin *gorm.DB) (*algo.Task, []*algo.Provider) } type providerParams struct { diff --git a/api/internal/pkg/scheduler/hpcScheduler.go b/api/internal/pkg/scheduler/hpcScheduler.go index a5b517f0..2176e3d4 100644 --- a/api/internal/pkg/scheduler/hpcScheduler.go +++ b/api/internal/pkg/scheduler/hpcScheduler.go @@ -5,6 +5,7 @@ import ( "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" "gitlink.org.cn/jcce-pcm/pcm-coordinator/model" "gitlink.org.cn/jcce-pcm/utils/tool" + "gorm.io/gorm" ) type hpcScheduler struct { @@ -30,3 +31,19 @@ func (h *hpcScheduler) getNewStructForDb(task *types.TaskInfo, participantId int func (h *hpcScheduler) pickOptimalStrategy(task *algo.Task, providers ...*algo.Provider) (*algo.Task, error) { return nil, nil } + +func (h *hpcScheduler) genTaskAndProviders(task *types.TaskInfo, dbEngin *gorm.DB) (*algo.Task, []*algo.Provider) { + var proParams []providerParams + sqlstr := "SELECT SUM(a.disk_avail) as disk_avail,SUM(a.mem_avail) as mem_avail,SUM(a.cpu_total * a.cpu_usable) as cpu_avail,participant_id from (SELECT * from sc_node_avail_info where created_time in (SELECT MAX(created_time) as time from sc_node_avail_info where deleted_flag = 0 GROUP BY participant_id,node_name)) a GROUP BY a.participant_id" + dbEngin.Raw(sqlstr).Scan(&proParams) + + var providerList []*algo.Provider + for _, p := range proParams { + provider := algo.NewProvider(p.Participant_id, p.Cpu_avail, p.Mem_avail, p.Disk_avail, 0.0, 0.0, 0.0) + providerList = append(providerList, provider) + } + + t := algo.NewTask(0, 1, 2, 75120000, 301214500, 1200, 2, 6, 2000) + + return t, providerList +} diff --git a/api/internal/pkg/scheduler/scheduler.go b/api/internal/pkg/scheduler/scheduler.go index 235194ad..754603ed 100644 --- a/api/internal/pkg/scheduler/scheduler.go +++ b/api/internal/pkg/scheduler/scheduler.go @@ -66,7 +66,7 @@ func (s *scheduler) AssignAndSchedule() error { } //生成算法所需参数 - task, providerList := s.genTaskAndProviders() + task, providerList := s.obtainParamsforStrategy() strategy, err := s.scheduleService.pickOptimalStrategy(task, providerList...) if err != nil { @@ -112,18 +112,6 @@ func (s *scheduler) SaveToDb() error { return nil } -func (s *scheduler) genTaskAndProviders() (*algo.Task, []*algo.Provider) { - proParams := []providerParams{} - sqlstr := "SELECT SUM(a.disk_avail) as disk_avail,SUM(a.mem_avail) as mem_avail,SUM(a.cpu_total * a.cpu_usable) as cpu_avail,participant_id from (SELECT * from sc_node_avail_info where created_time in (SELECT MAX(created_time) as time from sc_node_avail_info where deleted_flag = 0 GROUP BY participant_id,node_name)) a GROUP BY a.participant_id" - s.dbEngin.Raw(sqlstr).Scan(&proParams) - - var providerList []*algo.Provider - for _, p := range proParams { - provider := algo.NewProvider(p.Participant_id, p.Cpu_avail, p.Mem_avail, p.Disk_avail, 0.0, 0.0, 0.0) - providerList = append(providerList, provider) - } - - t := algo.NewTask(0, 1, 2, 75120000, 301214500, 1200, 2, 6, 2000) - - return t, providerList +func (s *scheduler) obtainParamsforStrategy() (*algo.Task, []*algo.Provider) { + return s.scheduleService.genTaskAndProviders(s.task, s.dbEngin) }