|
|
|
@@ -16,7 +16,6 @@ package scheduler |
|
|
|
|
|
|
|
import ( |
|
|
|
"encoding/json" |
|
|
|
"fmt" |
|
|
|
"github.com/pkg/errors" |
|
|
|
"github.com/zeromicro/go-zero/core/logx" |
|
|
|
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/pkg/response" |
|
|
|
@@ -33,7 +32,7 @@ type scheduler struct { |
|
|
|
participantIds []int64 |
|
|
|
scheduleService scheduleService |
|
|
|
dbEngin *gorm.DB |
|
|
|
result map[int64]string //pID:子任务yamlstring 键值对 |
|
|
|
result []string //pID:子任务yamlstring 键值对 |
|
|
|
participantRpc participantservice.ParticipantService |
|
|
|
} |
|
|
|
|
|
|
|
@@ -43,7 +42,7 @@ func NewScheduler(scheduleService scheduleService, val string, dbEngin *gorm.DB, |
|
|
|
if err != nil { |
|
|
|
return nil, errors.New("create scheduler failed : " + err.Error()) |
|
|
|
} |
|
|
|
return &scheduler{task: task, scheduleService: scheduleService, dbEngin: dbEngin, participantRpc: participantRpc, result: make(map[int64]string, 0)}, nil |
|
|
|
return &scheduler{task: task, scheduleService: scheduleService, dbEngin: dbEngin, participantRpc: participantRpc}, nil |
|
|
|
} |
|
|
|
|
|
|
|
func (s *scheduler) SpecifyClusters() { |
|
|
|
@@ -100,10 +99,11 @@ func (s *scheduler) TempAssign() error { |
|
|
|
|
|
|
|
var resources []interface{} |
|
|
|
tool.Convert(s.task.Metadata, &resources) |
|
|
|
for _, resource := range resources { |
|
|
|
for index := range resources { |
|
|
|
//如果是Deployment,需要对副本数做分发 |
|
|
|
if resource.(map[string]interface{})["kind"].(string) == "Deployment" || resource.(map[string]interface{})["kind"].(string) == "Replicaset" { |
|
|
|
resource.(map[string]interface{})["spec"].(map[string]interface{})["replicas"] = s.task.Replicas |
|
|
|
if resources[index].(map[string]interface{})["kind"].(string) == "Deployment" || resources[index].(map[string]interface{})["kind"].(string) == "Replicaset" || |
|
|
|
resources[index].(map[string]interface{})["kind"].(string) == "StatefulSet" { |
|
|
|
resources[index].(map[string]interface{})["spec"].(map[string]interface{})["replicas"] = s.task.Replicas |
|
|
|
} |
|
|
|
} |
|
|
|
s.task.Metadata = resources |
|
|
|
@@ -126,7 +126,7 @@ func (s *scheduler) AssignAndSchedule() error { |
|
|
|
replicas := s.task.Metadata.(map[string]interface{})["spec"].(map[string]interface{})["replicas"].(float64) |
|
|
|
result := make(map[int64]string) |
|
|
|
result[s.participantIds[0]] = strconv.FormatFloat(replicas, 'f', 2, 64) |
|
|
|
s.result = result |
|
|
|
//s.result = result |
|
|
|
|
|
|
|
return nil |
|
|
|
} |
|
|
|
@@ -160,22 +160,22 @@ func (s *scheduler) AssignAndSchedule() error { |
|
|
|
|
|
|
|
func (s *scheduler) SaveToDb() error { |
|
|
|
|
|
|
|
for key, value := range s.result { |
|
|
|
num, err := strconv.Atoi(value) |
|
|
|
if err != nil { |
|
|
|
fmt.Println("转换失败:", err) |
|
|
|
for _, participantId := range s.participantIds { |
|
|
|
var resources []interface{} |
|
|
|
tool.Convert(s.task.Metadata, &resources) |
|
|
|
for _, resource := range resources { |
|
|
|
structForDb, err := s.scheduleService.getNewStructForDb(s.task, resource, int64(participantId)) |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
structForDb, err := s.scheduleService.getNewStructForDb(s.task, int64(key), int32(num)) |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
|
tx := s.dbEngin.Create(structForDb) |
|
|
|
if tx.Error != nil { |
|
|
|
logx.Error(tx.Error) |
|
|
|
return tx.Error |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
tx := s.dbEngin.Create(structForDb) |
|
|
|
if tx.Error != nil { |
|
|
|
logx.Error(tx.Error) |
|
|
|
return tx.Error |
|
|
|
} |
|
|
|
} |
|
|
|
return nil |
|
|
|
} |
|
|
|
|