diff options
Diffstat (limited to 'weed/topology/data_center.go')
| -rw-r--r-- | weed/topology/data_center.go | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/weed/topology/data_center.go b/weed/topology/data_center.go index 60d91ba6d..78c23e748 100644 --- a/weed/topology/data_center.go +++ b/weed/topology/data_center.go @@ -2,6 +2,7 @@ package topology import ( "github.com/chrislusf/seaweedfs/weed/pb/master_pb" + "golang.org/x/exp/slices" ) type DataCenter struct { @@ -30,16 +31,24 @@ func (dc *DataCenter) GetOrCreateRack(rackName string) *Rack { return rack } -func (dc *DataCenter) ToMap() interface{} { - m := make(map[string]interface{}) - m["Id"] = dc.Id() - var racks []interface{} +type DataCenterInfo struct { + Id NodeId `json:"Id"` + Racks []RackInfo `json:"Racks"` +} + +func (dc *DataCenter) ToInfo() (info DataCenterInfo) { + info.Id = dc.Id() + var racks []RackInfo for _, c := range dc.Children() { rack := c.(*Rack) - racks = append(racks, rack.ToMap()) + racks = append(racks, rack.ToInfo()) } - m["Racks"] = racks - return m + + slices.SortFunc(racks, func(a, b RackInfo) bool { + return a.Id < b.Id + }) + info.Racks = racks + return } func (dc *DataCenter) ToDataCenterInfo() *master_pb.DataCenterInfo { |
