Issue #219: Provide a list of peers and a list of addresses in the ID object.

Fix cluster-ctl to show right number of peers

License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
This commit is contained in:
Hector Sanjuan 2017-11-10 16:09:45 +01:00
parent 289890ad6c
commit 2a616aeddb
3 changed files with 46 additions and 34 deletions

View File

@ -230,27 +230,29 @@ func (ids *IPFSIDSerial) ToIPFSID() IPFSID {
// ID holds information about the Cluster peer // ID holds information about the Cluster peer
type ID struct { type ID struct {
ID peer.ID ID peer.ID
Addresses []ma.Multiaddr Addresses []ma.Multiaddr
ClusterPeers []ma.Multiaddr ClusterPeers []peer.ID
Version string ClusterPeersAddresses []ma.Multiaddr
Commit string Version string
RPCProtocolVersion protocol.ID Commit string
Error string RPCProtocolVersion protocol.ID
IPFS IPFSID Error string
IPFS IPFSID
//PublicKey crypto.PubKey //PublicKey crypto.PubKey
} }
// IDSerial is the serializable ID counterpart for RPC requests // IDSerial is the serializable ID counterpart for RPC requests
type IDSerial struct { type IDSerial struct {
ID string `json:"id"` ID string `json:"id"`
Addresses MultiaddrsSerial `json:"addresses"` Addresses MultiaddrsSerial `json:"addresses"`
ClusterPeers MultiaddrsSerial `json:"cluster_peers"` ClusterPeers []string `json:"cluster_peers"`
Version string `json:"version"` ClusterPeersAddresses MultiaddrsSerial `json:"cluster_peers_addresses"`
Commit string `json:"commit"` Version string `json:"version"`
RPCProtocolVersion string `json:"rpc_protocol_version"` Commit string `json:"commit"`
Error string `json:"error"` RPCProtocolVersion string `json:"rpc_protocol_version"`
IPFS IPFSIDSerial `json:"ipfs"` Error string `json:"error"`
IPFS IPFSIDSerial `json:"ipfs"`
//PublicKey []byte //PublicKey []byte
} }
@ -261,16 +263,22 @@ func (id ID) ToSerial() IDSerial {
// pkey, _ = id.PublicKey.Bytes() // pkey, _ = id.PublicKey.Bytes()
//} //}
peers := make([]string, len(id.ClusterPeers), len(id.ClusterPeers))
for i, p := range id.ClusterPeers {
peers[i] = peer.IDB58Encode(p)
}
return IDSerial{ return IDSerial{
ID: peer.IDB58Encode(id.ID), ID: peer.IDB58Encode(id.ID),
//PublicKey: pkey, //PublicKey: pkey,
Addresses: MultiaddrsToSerial(id.Addresses), Addresses: MultiaddrsToSerial(id.Addresses),
ClusterPeers: MultiaddrsToSerial(id.ClusterPeers), ClusterPeers: peers,
Version: id.Version, ClusterPeersAddresses: MultiaddrsToSerial(id.ClusterPeersAddresses),
Commit: id.Commit, Version: id.Version,
RPCProtocolVersion: string(id.RPCProtocolVersion), Commit: id.Commit,
Error: id.Error, RPCProtocolVersion: string(id.RPCProtocolVersion),
IPFS: id.IPFS.ToSerial(), Error: id.Error,
IPFS: id.IPFS.ToSerial(),
} }
} }
@ -285,8 +293,14 @@ func (ids IDSerial) ToID() ID {
// id.PublicKey = pkey // id.PublicKey = pkey
//} //}
peers := make([]peer.ID, len(ids.ClusterPeers), len(ids.ClusterPeers))
for i, p := range ids.ClusterPeers {
peers[i], _ = peer.IDB58Decode(p)
}
id.Addresses = ids.Addresses.ToMultiaddrs() id.Addresses = ids.Addresses.ToMultiaddrs()
id.ClusterPeers = ids.ClusterPeers.ToMultiaddrs() id.ClusterPeers = peers
id.ClusterPeersAddresses = ids.ClusterPeersAddresses.ToMultiaddrs()
id.Version = ids.Version id.Version = ids.Version
id.Commit = ids.Commit id.Commit = ids.Commit
id.RPCProtocolVersion = protocol.ID(ids.RPCProtocolVersion) id.RPCProtocolVersion = protocol.ID(ids.RPCProtocolVersion)

View File

@ -590,15 +590,13 @@ func (c *Cluster) ID() api.ID {
return api.ID{ return api.ID{
ID: c.id, ID: c.id,
//PublicKey: c.host.Peerstore().PubKey(c.id), //PublicKey: c.host.Peerstore().PubKey(c.id),
Addresses: addrs, Addresses: addrs,
// TODO: These are not peers but addresses. There could be ClusterPeers: peers,
// several addresses for a single peer. Do we want to provide ClusterPeersAddresses: c.peerManager.addresses(peers),
// only PIDs? Another key in this object for addresses? Version: Version,
ClusterPeers: c.peerManager.addresses(peers), Commit: Commit,
Version: Version, RPCProtocolVersion: RPCProtocol,
Commit: Commit, IPFS: ipfsID,
RPCProtocolVersion: RPCProtocol,
IPFS: ipfsID,
} }
} }

View File

@ -81,7 +81,7 @@ func textFormatPrintIDSerial(obj *api.IDSerial) {
return return
} }
fmt.Printf("%s | %d peers\n", obj.ID, len(obj.ClusterPeers)) fmt.Printf("%s | Sees %d other peers\n", obj.ID, len(obj.ClusterPeers)-1)
addrs := make(sort.StringSlice, 0, len(obj.Addresses)) addrs := make(sort.StringSlice, 0, len(obj.Addresses))
for _, a := range obj.Addresses { for _, a := range obj.Addresses {
addrs = append(addrs, string(a)) addrs = append(addrs, string(a))