2
0
Эх сурвалжийг харах

feat(worker): implemented `extra_status_manager` option to enable a worker reporting status to multi

bigeagle 8 жил өмнө
parent
commit
a0b8ef08ab
2 өөрчлөгдсөн 13 нэмэгдсэн , 11 устгасан
  1. 4 3
      worker/config.go
  2. 9 8
      worker/worker.go

+ 4 - 3
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 {

+ 9 - 8
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())
+		}
 	}
 }