From a0b8ef08ab691776ce5b29012651a65e378d6810 Mon Sep 17 00:00:00 2001 From: bigeagle Date: Tue, 6 Dec 2016 23:59:15 +0800 Subject: [PATCH] feat(worker): implemented `extra_status_manager` option to enable a worker reporting status to multi --- worker/config.go | 7 ++++--- worker/worker.go | 17 +++++++++-------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/worker/config.go b/worker/config.go index 192032d..51a69c1 100644 --- a/worker/config.go +++ b/worker/config.go @@ -54,9 +54,10 @@ type globalConfig struct { } type managerConfig struct { - APIBase string `toml:"api_base"` - CACert string `toml:"ca_cert"` - Token string `toml:"token"` + APIBase string `toml:"api_base"` + CACert string `toml:"ca_cert"` + ExtraStatusAPIs []string `toml:"extra_status_managers"` + // Token string `toml:"token"` } type serverConfig struct { diff --git a/worker/worker.go b/worker/worker.go index 4b6741b..7c3db9f 100644 --- a/worker/worker.go +++ b/worker/worker.go @@ -405,12 +405,6 @@ func (w *Worker) registorWorker() { } func (w *Worker) updateStatus(job *mirrorJob, jobMsg jobMessage) { - url := fmt.Sprintf( - "%s/workers/%s/jobs/%s", - w.cfg.Manager.APIBase, - w.Name(), - jobMsg.name, - ) p := job.provider smsg := MirrorStatus{ Name: jobMsg.name, @@ -422,8 +416,15 @@ func (w *Worker) updateStatus(job *mirrorJob, jobMsg jobMessage) { ErrorMsg: jobMsg.msg, } - if _, err := PostJSON(url, smsg, w.httpClient); err != nil { - logger.Errorf("Failed to update mirror(%s) status: %s", jobMsg.name, err.Error()) + apiBases := []string{w.cfg.Manager.APIBase} + apiBases = append(apiBases, w.cfg.Manager.ExtraStatusAPIs...) + for _, root := range apiBases { + url := fmt.Sprintf( + "%s/workers/%s/jobs/%s", root, w.Name(), jobMsg.name, + ) + if _, err := PostJSON(url, smsg, w.httpClient); err != nil { + logger.Errorf("Failed to update mirror(%s) status: %s", jobMsg.name, err.Error()) + } } }