You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

23 lines
817 B

package util
import (
"fmt"
"github.com/seaweedfs/seaweedfs/weed/admin/topology"
"github.com/seaweedfs/seaweedfs/weed/pb"
)
// ResolveServerAddress resolves a server ID to its network address using the active topology
func ResolveServerAddress(serverID string, activeTopology *topology.ActiveTopology) (string, error) {
if activeTopology == nil {
return "", fmt.Errorf("topology not available")
}
allNodes := activeTopology.GetAllNodes()
nodeInfo, exists := allNodes[serverID]
if !exists {
return "", fmt.Errorf("server %s not found in topology", serverID)
}
// Note: We use NewServerAddressFromDataNode here because it encodes the GRPC port into the server address
// if it is non-zero, avoiding the default +10000 GRPC port offset.
return string(pb.NewServerAddressFromDataNode(nodeInfo)), nil
}