return idle status when worker has nothing to do

This commit is contained in:
Murat Kabilov 2017-10-11 15:42:20 +02:00 committed by GitHub
parent 793defef72
commit 8d5faaa5a5
4 changed files with 18 additions and 7 deletions

View File

@ -202,9 +202,15 @@ func (s *Server) workers(w http.ResponseWriter, req *http.Request) {
resp, err = s.controller.ListQueue(uint32(workerID)) resp, err = s.controller.ListQueue(uint32(workerID))
} else if matches := util.FindNamedStringSubmatch(workerStatusURL, req.URL.Path); matches != nil { } else if matches := util.FindNamedStringSubmatch(workerStatusURL, req.URL.Path); matches != nil {
workerID, _ := strconv.Atoi(matches["id"]) var workerStatus *spec.WorkerStatus
resp, err = s.controller.WorkerStatus(uint32(workerID)) workerID, _ := strconv.Atoi(matches["id"])
workerStatus, err = s.controller.WorkerStatus(uint32(workerID))
if workerStatus == nil {
resp = "idle"
} else {
resp = workerStatus
}
} else if workerAllStatus.MatchString(req.URL.Path) { } else if workerAllStatus.MatchString(req.URL.Path) {
s.allWorkers(w, req) s.allWorkers(w, req)
return return
@ -234,15 +240,20 @@ func (s *Server) allQueues(w http.ResponseWriter, r *http.Request) {
func (s *Server) allWorkers(w http.ResponseWriter, r *http.Request) { func (s *Server) allWorkers(w http.ResponseWriter, r *http.Request) {
workersCnt := s.controller.GetWorkersCnt() workersCnt := s.controller.GetWorkersCnt()
resp := make(map[uint32]*spec.WorkerStatus, workersCnt) resp := make(map[uint32]interface{}, workersCnt)
for i := uint32(0); i < workersCnt; i++ { for i := uint32(0); i < workersCnt; i++ {
status, err := s.controller.WorkerStatus(i) status, err := s.controller.WorkerStatus(i)
if err != nil { if err != nil {
s.respond(nil, err, w)
continue continue
} }
if status == nil {
resp[i] = "idle"
} else {
resp[i] = status resp[i] = status
} }
}
s.respond(resp, nil, w) s.respond(resp, nil, w)
} }

View File

@ -2,8 +2,8 @@ package cluster
import ( import (
"bytes" "bytes"
"strings"
"fmt" "fmt"
"strings"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
remotecommandconsts "k8s.io/apimachinery/pkg/util/remotecommand" remotecommandconsts "k8s.io/apimachinery/pkg/util/remotecommand"

View File

@ -173,7 +173,7 @@ func (c *Controller) GetWorkersCnt() uint32 {
func (c *Controller) WorkerStatus(workerID uint32) (*spec.WorkerStatus, error) { func (c *Controller) WorkerStatus(workerID uint32) (*spec.WorkerStatus, error) {
obj, ok := c.curWorkerCluster.Load(workerID) obj, ok := c.curWorkerCluster.Load(workerID)
if !ok || obj == nil { if !ok || obj == nil {
return nil, fmt.Errorf("worker has no status") return nil, nil
} }
cl, ok := obj.(*cluster.Cluster) cl, ok := obj.(*cluster.Cluster)