Merge pull request #17892 from mqliang/parallizeHealthCheck

Auto commit by PR queue bot
pull/6/head
k8s-merge-robot 2015-12-02 16:16:09 -08:00
commit 1a750b95e6
1 changed files with 16 additions and 4 deletions

View File

@ -25,6 +25,7 @@ import (
"k8s.io/kubernetes/pkg/apiserver"
"k8s.io/kubernetes/pkg/probe"
"k8s.io/kubernetes/pkg/runtime"
"sync"
)
type REST struct {
@ -53,11 +54,22 @@ func (rs *REST) NewList() runtime.Object {
func (rs *REST) List(ctx api.Context, options *unversioned.ListOptions) (runtime.Object, error) {
servers := rs.GetServersToValidate()
// TODO: This should be parallelized.
wait := sync.WaitGroup{}
wait.Add(len(servers))
statuses := make(chan api.ComponentStatus, len(servers))
for k, v := range servers {
go func(name string, server apiserver.Server) {
defer wait.Done()
status := rs.getComponentStatus(name, server)
statuses <- *status
}(k, v)
}
wait.Wait()
close(statuses)
reply := []api.ComponentStatus{}
for name, server := range servers {
status := rs.getComponentStatus(name, server)
reply = append(reply, *status)
for status := range statuses {
reply = append(reply, status)
}
return &api.ComponentStatusList{Items: reply}, nil
}