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") }