Explorar o código

Move the WebMirrorStatus to internal package. Fix the list command of tunasynctl

Yuxiang Zhang %!s(int64=7) %!d(string=hai) anos
pai
achega
4fe7d03e54
Modificáronse 4 ficheiros con 14 adicións e 19 borrados
  1. 3 4
      cmd/tunasynctl/tunasynctl.go
  2. 5 7
      internal/status_web.go
  3. 4 6
      internal/status_web_test.go
  4. 2 2
      manager/server.go

+ 3 - 4
cmd/tunasynctl/tunasynctl.go

@@ -140,8 +140,7 @@ func listWorkers(c *cli.Context) error {
 }
 
 func listJobs(c *cli.Context) error {
-	// FIXME: there should be an API on manager server side that return MirrorStatus list to tunasynctl
-	var jobs []tunasync.MirrorStatus
+	var jobs []tunasync.WebMirrorStatus
 	if c.Bool("all") {
 		_, err := tunasync.GetJSON(baseURL+listJobsPath, &jobs, client)
 		if err != nil {
@@ -158,10 +157,10 @@ func listJobs(c *cli.Context) error {
 				fmt.Sprintf("Usage Error: jobs command need at"+
 					" least one arguments or \"--all\" flag."), 1)
 		}
-		ans := make(chan []tunasync.MirrorStatus, len(args))
+		ans := make(chan []tunasync.WebMirrorStatus, len(args))
 		for _, workerID := range args {
 			go func(workerID string) {
-				var workerJobs []tunasync.MirrorStatus
+				var workerJobs []tunasync.WebMirrorStatus
 				_, err := tunasync.GetJSON(fmt.Sprintf("%s/workers/%s/jobs",
 					baseURL, workerID), &workerJobs, client)
 				if err != nil {

+ 5 - 7
manager/status.go → internal/status_web.go

@@ -1,11 +1,9 @@
-package manager
+package internal
 
 import (
 	"encoding/json"
 	"strconv"
 	"time"
-
-	. "github.com/tuna/tunasync/internal"
 )
 
 type textTime struct {
@@ -38,8 +36,8 @@ func (t *stampTime) UnmarshalJSON(b []byte) error {
 	return err
 }
 
-// webMirrorStatus is the mirror status to be shown in the web page
-type webMirrorStatus struct {
+// WebMirrorStatus is the mirror status to be shown in the web page
+type WebMirrorStatus struct {
 	Name         string     `json:"name"`
 	IsMaster     bool       `json:"is_master"`
 	Status       SyncStatus `json:"status"`
@@ -49,8 +47,8 @@ type webMirrorStatus struct {
 	Size         string     `json:"size"` // approximate size
 }
 
-func convertMirrorStatus(m MirrorStatus) webMirrorStatus {
-	return webMirrorStatus{
+func BuildWebMirrorStatus(m MirrorStatus) WebMirrorStatus {
+	return WebMirrorStatus{
 		Name:         m.Name,
 		IsMaster:     m.IsMaster,
 		Status:       m.Status,

+ 4 - 6
manager/status_test.go → internal/status_web_test.go

@@ -1,12 +1,10 @@
-package manager
+package internal
 
 import (
 	"encoding/json"
 	"testing"
 	"time"
 
-	tunasync "github.com/tuna/tunasync/internal"
-
 	. "github.com/smartystreets/goconvey/convey"
 )
 
@@ -16,9 +14,9 @@ func TestStatus(t *testing.T) {
 		loc, err := time.LoadLocation(tz)
 		So(err, ShouldBeNil)
 		t := time.Date(2016, time.April, 16, 23, 8, 10, 0, loc)
-		m := webMirrorStatus{
+		m := WebMirrorStatus{
 			Name:         "tunalinux",
-			Status:       tunasync.Success,
+			Status:       Success,
 			LastUpdate:   textTime{t},
 			LastUpdateTs: stampTime{t},
 			Size:         "5GB",
@@ -28,7 +26,7 @@ func TestStatus(t *testing.T) {
 		b, err := json.Marshal(m)
 		So(err, ShouldBeNil)
 		//fmt.Println(string(b))
-		var m2 webMirrorStatus
+		var m2 WebMirrorStatus
 		err = json.Unmarshal(b, &m2)
 		So(err, ShouldBeNil)
 		// fmt.Printf("%#v", m2)

+ 2 - 2
manager/server.go

@@ -135,11 +135,11 @@ func (s *Manager) listAllJobs(c *gin.Context) {
 		s.returnErrJSON(c, http.StatusInternalServerError, err)
 		return
 	}
-	webMirStatusList := []webMirrorStatus{}
+	webMirStatusList := []WebMirrorStatus{}
 	for _, m := range mirrorStatusList {
 		webMirStatusList = append(
 			webMirStatusList,
-			convertMirrorStatus(m),
+			BuildWebMirrorStatus(m),
 		)
 	}
 	c.JSON(http.StatusOK, webMirStatusList)