From a1102e61dbbf162a06e8c98ac6e7a3b3e7958004 Mon Sep 17 00:00:00 2001 From: Newnius Date: Thu, 11 Jun 2020 10:02:02 +0800 Subject: [PATCH] update --- src/ga.go | 10 +++++----- src/main.go | 3 +++ src/resource_pool.go | 2 +- src/util.go | 1 + 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/ga.go b/src/ga.go index 559a98a..67ad5cf 100644 --- a/src/ga.go +++ b/src/ga.go @@ -141,7 +141,7 @@ func (X Allocation) Crossover(Y eaopt.Genome, rng *rand.Rand) { taskToNode := map[string]string{} for nodeID, tasks := range X.TasksOnNode { for _, task := range tasks { - taskToNode[task.Name] = nodeID + taskToNode[task.ID] = nodeID } } @@ -158,17 +158,17 @@ func (X Allocation) Crossover(Y eaopt.Genome, rng *rand.Rand) { for _, task := range Y.(Allocation).TasksOnNode[nodeID] { //fmt.Println(Y.(Allocation).TasksOnNode[nodeID]) idx := -1 - nodeID2, ok := taskToNode[task.Name] + nodeID2, ok := taskToNode[task.ID] if !ok { - log.Warn("Error", taskToNode, X.TasksOnNode, task.Name) + log.Warn("Error", taskToNode, X.TasksOnNode, task.ID) } for i, task2 := range X.TasksOnNode[nodeID2] { - if task2.Name == task.Name { + if task2.ID == task.ID { idx = i } } if idx == -1 { - log.Warn("Error 2", taskToNode, X.TasksOnNode, task.Name) + log.Warn("Error 2", taskToNode, X.TasksOnNode, task.ID) } //fmt.Println(X.TasksOnNode) copy(X.TasksOnNode[nodeID2][idx:], X.TasksOnNode[nodeID2][idx+1:]) diff --git a/src/main.go b/src/main.go index 5a149a3..1b8f86b 100644 --- a/src/main.go +++ b/src/main.go @@ -40,6 +40,9 @@ func serverAPI(w http.ResponseWriter, r *http.Request) { msgSubmit.Code = 1 msgSubmit.Error = err.Error() } else { + for i := range job.Tasks { + job.Tasks[i].ID = job.Name + ":" + job.Tasks[i].Name + } scheduler.Schedule(job) } js, err := json.Marshal(msgSubmit) diff --git a/src/resource_pool.go b/src/resource_pool.go index 9e079c8..c144e85 100644 --- a/src/resource_pool.go +++ b/src/resource_pool.go @@ -965,7 +965,7 @@ func (pool *ResourcePool) doAcquireResource(job Job) []NodeStatus { } for i := range job.Tasks { - if job.Tasks[i].Name == task.Name { + if job.Tasks[i].ID == task.ID { ress[i] = res } } diff --git a/src/util.go b/src/util.go index 93bf56b..66a718f 100644 --- a/src/util.go +++ b/src/util.go @@ -30,6 +30,7 @@ type Job struct { } type Task struct { + ID string `json:"id"` Name string `json:"name"` Job string `json:"job_name"` Image string `json:"image"`