aboutsummaryrefslogtreecommitdiff
path: root/weed/topology/topology_map.go
diff options
context:
space:
mode:
authorChris Lu <chrislusf@users.noreply.github.com>2018-07-28 21:03:29 -0700
committerGitHub <noreply@github.com>2018-07-28 21:03:29 -0700
commit452bd0b01393e53e958fb9825bf1f27e6b3522df (patch)
treee1a61e592118f9696b7f51501d3b3fd0f6c3eeb5 /weed/topology/topology_map.go
parent97603d6e176dd2b9f2aebd9f6122a8c60481463a (diff)
parentd3205a007071f26587affb416f71b5c63854b863 (diff)
downloadseaweedfs-452bd0b01393e53e958fb9825bf1f27e6b3522df.tar.xz
seaweedfs-452bd0b01393e53e958fb9825bf1f27e6b3522df.zip
Merge pull request #702 from chrislusf/add_topo_listener
Add volume id location change listener
Diffstat (limited to 'weed/topology/topology_map.go')
-rw-r--r--weed/topology/topology_map.go23
1 files changed, 23 insertions, 0 deletions
diff --git a/weed/topology/topology_map.go b/weed/topology/topology_map.go
index ce8e9e663..769ba0e2a 100644
--- a/weed/topology/topology_map.go
+++ b/weed/topology/topology_map.go
@@ -1,5 +1,7 @@
package topology
+import "github.com/chrislusf/seaweedfs/weed/pb/master_pb"
+
func (t *Topology) ToMap() interface{} {
m := make(map[string]interface{})
m["Max"] = t.GetMaxVolumeCount()
@@ -51,3 +53,24 @@ func (t *Topology) ToVolumeMap() interface{} {
m["DataCenters"] = dcs
return m
}
+
+func (t *Topology) ToVolumeLocations() (volumeLocations []*master_pb.VolumeLocation) {
+ for _, c := range t.Children() {
+ dc := c.(*DataCenter)
+ for _, r := range dc.Children() {
+ rack := r.(*Rack)
+ for _, d := range rack.Children() {
+ dn := d.(*DataNode)
+ volumeLocation := &master_pb.VolumeLocation{
+ Url: dn.Url(),
+ PublicUrl: dn.PublicUrl,
+ }
+ for _, v := range dn.GetVolumes() {
+ volumeLocation.NewVids = append(volumeLocation.NewVids, uint32(v.Id))
+ }
+ volumeLocations = append(volumeLocations, volumeLocation)
+ }
+ }
+ }
+ return
+}