cmd/dex-worker: wait 'til connectors are available

Otherwise, if worker starts without connectors, and then connectors are
added workers have to be restarted to pick up the changes.
This commit is contained in:
Bobby Rullo 2015-09-18 17:11:58 -07:00
parent 188aa27c17
commit 3cd0d84e31

View file

@ -7,14 +7,16 @@ import (
"net/http"
"net/url"
"os"
"time"
"github.com/gorilla/handlers"
"github.com/coreos/dex/connector"
"github.com/coreos/dex/db"
pflag "github.com/coreos/dex/pkg/flag"
"github.com/coreos/dex/pkg/log"
ptime "github.com/coreos/dex/pkg/time"
"github.com/coreos/dex/server"
"github.com/coreos/pkg/flagutil"
)
@ -150,9 +152,21 @@ func main() {
log.Fatalf("Unable to build Server: %v", err)
}
cfgs, err := srv.ConnectorConfigRepo.All()
if err != nil {
log.Fatalf("Unable to fetch connector configs from repo: %v", err)
var cfgs []connector.ConnectorConfig
var sleep time.Duration
for {
var err error
cfgs, err = srv.ConnectorConfigRepo.All()
if len(cfgs) > 0 && err == nil {
break
}
sleep = ptime.ExpBackoff(sleep, time.Minute)
if err != nil {
log.Errorf("Unable to load connectors, retrying in %v: %v", sleep, err)
} else {
log.Errorf("No connectors, will wait. Retrying in %v.", sleep)
}
time.Sleep(sleep)
}
for _, cfg := range cfgs {