diff --git a/go/storage/store.go b/go/storage/store.go index ee65ce9e3..8228c12a2 100644 --- a/go/storage/store.go +++ b/go/storage/store.go @@ -223,7 +223,9 @@ func (s *Store) Status() []*VolumeInfo { var stats []*VolumeInfo for _, location := range s.Locations { for k, v := range location.volumes { - s := &VolumeInfo{Id: VolumeId(k), Size: v.ContentSize(), + s := &VolumeInfo{ + Id: VolumeId(k), + Size: v.ContentSize(), Collection: v.Collection, ReplicaPlacement: v.ReplicaPlacement, Version: v.Version(), @@ -235,6 +237,7 @@ func (s *Store) Status() []*VolumeInfo { stats = append(stats, s) } } + sortVolumeInfos(stats) return stats } diff --git a/go/storage/volume_info.go b/go/storage/volume_info.go index ad58fee44..a2f139c89 100644 --- a/go/storage/volume_info.go +++ b/go/storage/volume_info.go @@ -3,6 +3,7 @@ package storage import ( "fmt" "github.com/chrislusf/seaweedfs/go/operation" + "sort" ) type VolumeInfo struct { @@ -42,3 +43,23 @@ func (vi VolumeInfo) String() string { return fmt.Sprintf("Id:%d, Size:%d, ReplicaPlacement:%s, Collection:%s, Version:%v, FileCount:%d, DeleteCount:%d, DeletedByteCount:%d, ReadOnly:%v", vi.Id, vi.Size, vi.ReplicaPlacement, vi.Collection, vi.Version, vi.FileCount, vi.DeleteCount, vi.DeletedByteCount, vi.ReadOnly) } + +/*VolumesInfo sorting*/ + +type volumeInfos []*VolumeInfo + +func (vis volumeInfos) Len() int { + return len(vis) +} + +func (vis volumeInfos) Less(i, j int) bool { + return vis[i].Id < vis[j].Id +} + +func (vis volumeInfos) Swap(i, j int) { + vis[i], vis[j] = vis[j], vis[i] +} + +func sortVolumeInfos(vis volumeInfos) { + sort.Sort(vis) +} diff --git a/go/storage/volume_info_test.go b/go/storage/volume_info_test.go new file mode 100644 index 000000000..9a9c43ad2 --- /dev/null +++ b/go/storage/volume_info_test.go @@ -0,0 +1,23 @@ +package storage + +import "testing" + +func TestSortVolumeInfos(t *testing.T) { + vis := []*VolumeInfo{ + &VolumeInfo{ + Id: 2, + }, + &VolumeInfo{ + Id: 1, + }, + &VolumeInfo{ + Id: 3, + }, + } + sortVolumeInfos(vis) + for i := 0; i < len(vis); i++ { + if vis[i].Id != VolumeId(i+1) { + t.Fatal() + } + } +}