forked from JointCloud/pcm-coordinator
71 lines
2.3 KiB
Go
71 lines
2.3 KiB
Go
package schedulers
|
|
|
|
import (
|
|
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/scheduler/algorithm/providerPricing"
|
|
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/scheduler/database"
|
|
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/scheduler/strategy"
|
|
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/scheduler/strategy/param"
|
|
"gitlink.org.cn/JointCloud/pcm-coordinator/api/pkg/response"
|
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/constants"
|
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/models"
|
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/utils"
|
|
)
|
|
|
|
type VmScheduler struct {
|
|
storage database.Storage
|
|
}
|
|
|
|
func NewVmScheduler() *VmScheduler {
|
|
return &VmScheduler{}
|
|
}
|
|
|
|
func (vm *VmScheduler) PickOptimalStrategy() (strategy.Strategy, error) {
|
|
//获取所有计算中心
|
|
//调度算法
|
|
strategy := strategy.NewPricingStrategy(¶m.ResourcePricingParams{})
|
|
return strategy, nil
|
|
}
|
|
|
|
func (v *VmScheduler) GetNewStructForDb(task *response.TaskInfo, resource string, participantId int64) (interface{}, error) {
|
|
//TODO implement me
|
|
vm := models.Vm{}
|
|
utils.Convert(task.Metadata, &vm)
|
|
vm.Id = utils.GenSnowflakeID()
|
|
vm.TaskId = vm.TaskId
|
|
vm.Status = constants.Saved
|
|
vm.ParticipantId = participantId
|
|
return vm, nil
|
|
//vm.YamlString =v.yamlString
|
|
/* vm. = utils.GenSnowflakeID()
|
|
vm.NsID = task.NsID
|
|
vm.ParticipantId = participantId*/
|
|
}
|
|
|
|
/*
|
|
func (vm *VmScheduler) UnMarshalVmStruct(yamlString string, taskId int64, nsID string) models.vm {
|
|
var vm models.Vm
|
|
vm := kyaml.NewYAMLOrJSONDecoder(bytes.NewBufferString(yamlString), 4096)
|
|
}
|
|
*/
|
|
func (vm *VmScheduler) genTaskAndProviders() (*providerPricing.Task, []*providerPricing.Provider, error) {
|
|
proParams, err := vm.storage.GetProviderParams()
|
|
if err != nil {
|
|
return nil, nil, nil
|
|
}
|
|
var providerList []*providerPricing.Provider
|
|
for _, p := range proParams {
|
|
provider := providerPricing.NewProvider(p.Participant_id, p.Cpu_avail, p.Mem_avail, p.Disk_avail, 0.0, 0.0, 0.0)
|
|
providerList = append(providerList, provider)
|
|
}
|
|
|
|
//replicas := task.Metadata.(map[string]interface{})["spec"].(map[string]interface{})["replicas"].(float64)
|
|
//t := algorithm.NewTask(0, int(replicas), 2, 75120000, 301214500, 1200, 2, 6, 2000)
|
|
|
|
return nil, providerList, nil
|
|
}
|
|
|
|
func (v VmScheduler) AssignTask(clusters []*strategy.AssignedCluster) error {
|
|
//TODO implement me
|
|
panic("implement me")
|
|
}
|