diff options
Diffstat (limited to 'weed/topology/rack.go')
| -rw-r--r-- | weed/topology/rack.go | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/weed/topology/rack.go b/weed/topology/rack.go index 35563abe5..e75318ffe 100644 --- a/weed/topology/rack.go +++ b/weed/topology/rack.go @@ -2,6 +2,7 @@ package topology import ( "github.com/chrislusf/seaweedfs/weed/pb/master_pb" + "github.com/chrislusf/seaweedfs/weed/storage/types" "strconv" "time" ) @@ -14,6 +15,7 @@ func NewRack(id string) *Rack { r := &Rack{} r.id = NodeId(id) r.nodeType = "Rack" + r.diskUsages = newDiskUsages() r.children = make(map[NodeId]Node) r.NodeImpl.value = r return r @@ -28,7 +30,7 @@ func (r *Rack) FindDataNode(ip string, port int) *DataNode { } return nil } -func (r *Rack) GetOrCreateDataNode(ip string, port int, publicUrl string, maxVolumeCount int64, maxSsdVolumeCount int64) *DataNode { +func (r *Rack) GetOrCreateDataNode(ip string, port int, publicUrl string, maxVolumeCounts map[string]uint32) *DataNode { for _, c := range r.Children() { dn := c.(*DataNode) if dn.MatchLocation(ip, port) { @@ -40,19 +42,19 @@ func (r *Rack) GetOrCreateDataNode(ip string, port int, publicUrl string, maxVol dn.Ip = ip dn.Port = port dn.PublicUrl = publicUrl - dn.maxVolumeCount = maxVolumeCount - dn.maxSsdVolumeCount = maxSsdVolumeCount dn.LastSeen = time.Now().Unix() r.LinkChildNode(dn) + for diskType, maxVolumeCount := range maxVolumeCounts { + disk := NewDisk(diskType) + disk.diskUsages.getOrCreateDisk(types.DiskType(diskType)).maxVolumeCount = int64(maxVolumeCount) + dn.LinkChildNode(disk) + } return dn } func (r *Rack) ToMap() interface{} { m := make(map[string]interface{}) m["Id"] = r.Id() - m["Max"] = r.GetMaxVolumeCount() - m["MaxSsd"] = r.GetMaxSsdVolumeCount() - m["Free"] = r.FreeSpace() var dns []interface{} for _, c := range r.Children() { dn := c.(*DataNode) @@ -65,13 +67,6 @@ func (r *Rack) ToMap() interface{} { func (r *Rack) ToRackInfo() *master_pb.RackInfo { m := &master_pb.RackInfo{ Id: string(r.Id()), - VolumeCount: uint64(r.GetVolumeCount()), - MaxVolumeCount: uint64(r.GetMaxVolumeCount()), - MaxSsdVolumeCount: uint64(r.GetMaxSsdVolumeCount()), - SsdVolumeCount: uint64(r.GetSsdVolumeCount()), - FreeVolumeCount: uint64(r.FreeSpace()), - ActiveVolumeCount: uint64(r.GetActiveVolumeCount()), - RemoteVolumeCount: uint64(r.GetRemoteVolumeCount()), } for _, c := range r.Children() { dn := c.(*DataNode) |
