Jelajahi Sumber

Merge pull request #58 from tuna/dev

Dev
bigeagle 8 tahun lalu
induk
melakukan
9ac3193d50
5 mengubah file dengan 26 tambahan dan 20 penghapusan
  1. 1 1
      cmd/tunasync/tunasync.go
  2. 1 1
      cmd/tunasynctl/tunasynctl.go
  3. 3 0
      internal/version.go
  4. 11 3
      worker/config.go
  5. 10 15
      worker/worker.go

+ 1 - 1
cmd/tunasync/tunasync.go

@@ -134,7 +134,7 @@ func main() {
 	app.Name = "tunasync"
 	app.Usage = "tunasync mirror job management tool"
 	app.EnableBashCompletion = true
-	app.Version = "0.1"
+	app.Version = tunasync.Version
 	app.Commands = []cli.Command{
 		{
 			Name:    "manager",

+ 1 - 1
cmd/tunasynctl/tunasynctl.go

@@ -325,7 +325,7 @@ func main() {
 
 	app := cli.NewApp()
 	app.EnableBashCompletion = true
-	app.Version = "0.1"
+	app.Version = tunasync.Version
 	app.Name = "tunasynctl"
 	app.Usage = "control client for tunasync manager"
 

+ 3 - 0
internal/version.go

@@ -0,0 +1,3 @@
+package internal
+
+const Version string = "0.2-dev"

+ 11 - 3
worker/config.go

@@ -55,12 +55,20 @@ type globalConfig struct {
 }
 
 type managerConfig struct {
-	APIBase         string   `toml:"api_base"`
-	CACert          string   `toml:"ca_cert"`
-	ExtraStatusAPIs []string `toml:"extra_status_managers"`
+	APIBase string `toml:"api_base"`
+	// this option overrides the APIBase
+	APIList []string `toml:"api_base_list"`
+	CACert  string   `toml:"ca_cert"`
 	// Token   string `toml:"token"`
 }
 
+func (mc managerConfig) APIBaseList() []string {
+	if len(mc.APIList) > 0 {
+		return mc.APIList
+	}
+	return []string{mc.APIBase}
+}
+
 type serverConfig struct {
 	Hostname string `toml:"hostname"`
 	Addr     string `toml:"listen_addr"`

+ 10 - 15
worker/worker.go

@@ -386,18 +386,17 @@ func (w *Worker) URL() string {
 }
 
 func (w *Worker) registorWorker() {
-	url := fmt.Sprintf(
-		"%s/workers",
-		w.cfg.Manager.APIBase,
-	)
-
 	msg := WorkerStatus{
 		ID:  w.Name(),
 		URL: w.URL(),
 	}
 
-	if _, err := PostJSON(url, msg, w.httpClient); err != nil {
-		logger.Errorf("Failed to register worker")
+	for _, root := range w.cfg.Manager.APIBaseList() {
+		url := fmt.Sprintf("%s/workers", root)
+		logger.Debugf("register on manager url: %s", url)
+		if _, err := PostJSON(url, msg, w.httpClient); err != nil {
+			logger.Errorf("Failed to register worker")
+		}
 	}
 }
 
@@ -413,12 +412,11 @@ func (w *Worker) updateStatus(job *mirrorJob, jobMsg jobMessage) {
 		ErrorMsg: jobMsg.msg,
 	}
 
-	apiBases := []string{w.cfg.Manager.APIBase}
-	apiBases = append(apiBases, w.cfg.Manager.ExtraStatusAPIs...)
-	for _, root := range apiBases {
+	for _, root := range w.cfg.Manager.APIBaseList() {
 		url := fmt.Sprintf(
 			"%s/workers/%s/jobs/%s", root, w.Name(), jobMsg.name,
 		)
+		logger.Debugf("reporting on manager url: %s", url)
 		if _, err := PostJSON(url, smsg, w.httpClient); err != nil {
 			logger.Errorf("Failed to update mirror(%s) status: %s", jobMsg.name, err.Error())
 		}
@@ -427,12 +425,9 @@ func (w *Worker) updateStatus(job *mirrorJob, jobMsg jobMessage) {
 
 func (w *Worker) fetchJobStatus() []MirrorStatus {
 	var mirrorList []MirrorStatus
+	apiBase := w.cfg.Manager.APIBaseList()[0]
 
-	url := fmt.Sprintf(
-		"%s/workers/%s/jobs",
-		w.cfg.Manager.APIBase,
-		w.Name(),
-	)
+	url := fmt.Sprintf("%s/workers/%s/jobs", apiBase, w.Name())
 
 	if _, err := GetJSON(url, &mirrorList, w.httpClient); err != nil {
 		logger.Errorf("Failed to fetch job status: %s", err.Error())