package garage import ( "fmt" "net" "strconv" ) // RemotePeer describes all information necessary to connect to a given garage // node. type RemotePeer struct { ID string IP string RPCPort int S3APIPort int } // LocalPeer describes the configuration of a local garage instance. type LocalPeer struct { RemotePeer AdminPort int } // RPCAddr returns the address of the peer's RPC port. func (p RemotePeer) RPCAddr() string { return net.JoinHostPort(p.IP, strconv.Itoa(p.RPCPort)) } // RPCPeerAddr returns the full peer address (e.g. "id@ip:port") of the garage // node for use in communicating over RPC. func (p RemotePeer) RPCPeerAddr() string { return fmt.Sprintf("%s@%s", p.ID, p.RPCAddr()) } // S3APIAddr returns the address of the peer's S3 API port. func (p RemotePeer) S3APIAddr() string { return net.JoinHostPort(p.IP, strconv.Itoa(p.S3APIPort)) } // AdminAddr returns the address of the peer's S3 API port. func (p LocalPeer) AdminAddr() string { return net.JoinHostPort(p.IP, strconv.Itoa(p.AdminPort)) }