1
0
mirror of https://github.com/newnius/YAO-scheduler.git synced 2025-12-12 23:36:44 +00:00
This commit is contained in:
2019-07-10 20:40:43 +08:00
parent ad1497bfbd
commit c42154696e
10 changed files with 154 additions and 115 deletions

View File

@@ -2,41 +2,41 @@ package main
import (
"time"
"log"
"net/url"
"strings"
"io/ioutil"
"encoding/json"
"fmt"
"strconv"
log "github.com/sirupsen/logrus"
)
type JobManager struct {
allocator *AllocatorFIFO
scheduler Scheduler
job Job
jobStatus JobStatus
resources []NodeStatus
}
func (jm *JobManager) start() {
log.Println("start job ", jm.job.Name)
log.Info("start job ", jm.job.Name)
jm.jobStatus = JobStatus{Name: jm.job.Name, tasks: map[string]TaskStatus{}}
network := allocator.acquireNetwork()
network := jm.scheduler.AcquireNetwork()
/* request for resources */
for i := range jm.job.Tasks {
var resource NodeStatus
for {
resource = jm.allocator.requestResource(jm.job.Tasks[i])
resource = jm.scheduler.AcquireResource(jm.job.Tasks[i])
if len(resource.Status) > 0 {
break
}
}
log.Println("Receive resource", resource)
log.Info("Receive resource", resource)
jm.resources = append(jm.resources, resource)
}
jm.allocator.ack(&jm.job)
jm.scheduler.UpdateProgress(jm.job.Name, Running)
/* bring up containers */
for i := range jm.job.Tasks {
@@ -57,36 +57,34 @@ func (jm *JobManager) start() {
resp, err := doRequest("POST", "http://"+jm.resources[i].ClientHost+":8000/create", strings.NewReader(v.Encode()), "application/x-www-form-urlencoded", "")
if err != nil {
log.Println(err.Error())
log.Warn(err.Error())
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Println(err)
log.Warn(err)
return
}
var res MsgCreate
err = json.Unmarshal([]byte(string(body)), &res)
if err != nil {
log.Println(err)
log.Warn(err)
return
}
jm.jobStatus.tasks[jm.job.Tasks[i].Name] = TaskStatus{Id: res.Id, Node: jm.resources[i].ClientHost}
}
jm.allocator.running(&jm.job)
/* monitor job execution */
for {
res := jm.status()
flag := false
for i := range res.Status {
if res.Status[i].Status == "running" {
log.Println(jm.job.Name, "-", i, " is running")
log.Info(jm.job.Name, "-", i, " is running")
flag = true
} else {
log.Println(jm.job.Name, "-", i, " ", res.Status[i].Status)
@@ -94,7 +92,7 @@ func (jm *JobManager) start() {
/* save logs etc. */
/* return resource */
jm.allocator.returnResource(jm.resources[i])
jm.scheduler.ReleaseResource(jm.resources[i])
fmt.Println("return resource ", jm.resources[i].ClientID)
}
}
@@ -104,10 +102,10 @@ func (jm *JobManager) start() {
time.Sleep(time.Second * 10)
}
allocator.releaseNetwork(network)
jm.scheduler.ReleaseNetwork(network)
jm.allocator.finish(&jm.job)
log.Println("finish job", jm.job.Name)
jm.scheduler.UpdateProgress(jm.job.Name, Finished)
log.Info("finish job", jm.job.Name)
}
func (jm *JobManager) logs(taskName string) MsgLog {
@@ -177,8 +175,8 @@ func (jm *JobManager) stop() MsgStop {
}
for i := range jm.resources {
jm.allocator.returnResource(jm.resources[i])
jm.scheduler.ReleaseResource(jm.resources[i])
}
jm.allocator.finish(&jm.job)
jm.scheduler.UpdateProgress(jm.job.Name, Stopped)
return MsgStop{Code: 0}
}