mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-10-24 15:00:43 +02:00
admin: show S3 servers under Cluster (#9847)
* s3: register data center with master on startup * admin: show S3 servers under Cluster * admin: add S3 servers to the dashboard
This commit is contained in:
1 parent
01637410e2
commit
b2127c86f4
12 files changed
+993
-405
No files matched your search
@@ -1189,6 +1189,52 @@ func (s *AdminServer) GetClusterBrokers() (*ClusterBrokersData, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
// GetClusterS3Servers retrieves cluster S3 servers data
|
||||
func (s *AdminServer) GetClusterS3Servers() (*ClusterS3ServersData, error) {
|
||||
var s3Servers []S3ServerInfo
|
||||
|
||||
// Get S3 server information from master using ListClusterNodes
|
||||
err := s.WithMasterClient(func(client master_pb.SeaweedClient) error {
|
||||
resp, err := client.ListClusterNodes(context.Background(), &master_pb.ListClusterNodesRequest{
|
||||
ClientType: cluster.S3Type,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Process each S3 server node
|
||||
for _, node := range resp.ClusterNodes {
|
||||
createdAt := time.Unix(0, node.CreatedAtNs)
|
||||
|
||||
s3ServerInfo := S3ServerInfo{
|
||||
Address: pb.ServerAddress(node.Address).ToHttpAddress(),
|
||||
DataCenter: node.DataCenter,
|
||||
Version: node.Version,
|
||||
CreatedAt: createdAt,
|
||||
}
|
||||
|
||||
s3Servers = append(s3Servers, s3ServerInfo)
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to get S3 server nodes from master: %w", err)
|
||||
}
|
||||
|
||||
// Sort S3 servers by address for consistent ordering on page refresh
|
||||
sort.Slice(s3Servers, func(i, j int) bool {
|
||||
return s3Servers[i].Address < s3Servers[j].Address
|
||||
})
|
||||
|
||||
return &ClusterS3ServersData{
|
||||
S3Servers: s3Servers,
|
||||
TotalS3Servers: len(s3Servers),
|
||||
LastUpdated: time.Now(),
|
||||
}, nil
|
||||
}
|
||||
|
||||
// GetAllFilers method moved to client_management.go
|
||||
|
||||
// GetVolumeDetails method moved to volume_management.go
|
||||
|
||||
Reference in new issue
Block a user