From 91bf4f96ceae5941526af93aa49fff69b69acc29 Mon Sep 17 00:00:00 2001
From: ale <ale@incal.net>
Date: Sat, 26 Jul 2014 17:47:50 +0100
Subject: [PATCH] fix partition cluster status

---
 partition/debug.go  | 10 +++++-----
 partition/status.go | 10 ++++++----
 2 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/partition/debug.go b/partition/debug.go
index ac48776..339c611 100644
--- a/partition/debug.go
+++ b/partition/debug.go
@@ -59,12 +59,12 @@ Versions:
   </tr>
  </thead>
  <tbody>
- {{range .GlobalStatus.Sort}}
+ {{range $s := .GlobalStatus.Sort}}
   <tr>
-   <td>{{.Name}}</td>
-   <td>{{.Version}}</td>
-   <td>{{.Stamp}}</td>
-   <td>{{.Total}}</td>
+   <td><a href="{{$s.Target | httpize}}/debug/part/{{.Name}}">{{$s.Target}}</a></td>
+   <td>{{$s.Version}}</td>
+   <td>{{$s.Stamp}}</td>
+   <td>{{$s.Total}}</td>
   </tr>
  {{end}}
  </tbody>
diff --git a/partition/status.go b/partition/status.go
index b5e52d2..6bc7ba5 100644
--- a/partition/status.go
+++ b/partition/status.go
@@ -10,6 +10,7 @@ import (
 
 type PartitionStatus struct {
 	Name     string
+	Target   string
 	Version  string
 	Stamp    time.Time
 	Counters map[string]int
@@ -75,23 +76,24 @@ func target2addr(target string) string {
 func getPartitionStatus(name, target string) *PartitionStatus {
 	client, err := rpc.DialHTTP("tcp", target2addr(target))
 	if err != nil {
-		return &PartitionStatus{Name: name, Err: err}
+		return &PartitionStatus{Name: name, Target: target, Err: err}
 	}
 	defer client.Close()
 
 	req := &GetVersionRequest{Name: name}
 	var resp GetVersionResponse
 	if err := client.Call("Partition.GetVersion", req, &resp); err != nil {
-		return &PartitionStatus{Name: name, Err: err}
+		return &PartitionStatus{Name: name, Target: target, Err: err}
 	}
 	var sreq struct{}
 	var sresp PartitionStatsResponse
 	if err := client.Call("PartitionedService.GetStats", &sreq, &sresp); err != nil {
-		return &PartitionStatus{Name: name, Err: err}
+		return &PartitionStatus{Name: name, Target: target, Err: err}
 	}
 
 	return &PartitionStatus{
 		Name:     name,
+		Target:   target,
 		Version:  resp.Version,
 		Stamp:    resp.Stamp,
 		Counters: sresp.Counters,
@@ -112,7 +114,7 @@ func getGlobalPartitionStatus(pmap *PartitionMap, name string) statusMap {
 	status := make(statusMap)
 	for i := 0; i < len(targets); i++ {
 		result := <-c
-		status[result.Name] = result
+		status[result.Target] = result
 	}
 	return status
 }
-- 
GitLab