forked from TrueCloudLab/frostfs-sdk-go
[#344] netmap: Support ExternalAddr
well-known attribute
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
This commit is contained in:
parent
8e3173eacd
commit
c6576c8112
2 changed files with 38 additions and 0 deletions
|
@ -371,8 +371,32 @@ const (
|
|||
// attrCapacity is a key to the node attribute that indicates the
|
||||
// total available disk space in Gigabytes.
|
||||
attrCapacity = "Capacity"
|
||||
|
||||
// attrExternalAddr is a key for the attribute storing node external addresses.
|
||||
attrExternalAddr = "ExternalAddr"
|
||||
// sepExternalAddr is a separator for multi-value ExternalAddr attribute.
|
||||
sepExternalAddr = ","
|
||||
)
|
||||
|
||||
// SetExternalAddresses sets multi-addresses to use
|
||||
// to connect to this node from outside.
|
||||
//
|
||||
// Panics if addr is an empty list.
|
||||
func (x *NodeInfo) SetExternalAddresses(addr ...string) {
|
||||
x.SetAttribute(attrExternalAddr, strings.Join(addr, sepExternalAddr))
|
||||
}
|
||||
|
||||
// ExternalAddresses returns list of multi-addresses to use
|
||||
// to connect to this node from outside.
|
||||
func (x NodeInfo) ExternalAddresses() []string {
|
||||
a := x.Attribute(attrExternalAddr)
|
||||
if len(a) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
return strings.Split(a, sepExternalAddr)
|
||||
}
|
||||
|
||||
// NumberOfAttributes returns number of attributes announced by the node.
|
||||
//
|
||||
// See also SetAttribute.
|
||||
|
|
|
@ -45,3 +45,17 @@ func TestNodeInfo_Status(t *testing.T) {
|
|||
require.False(t, n.IsOnline())
|
||||
require.False(t, n.IsOffline())
|
||||
}
|
||||
|
||||
func TestNodeInfo_ExternalAddr(t *testing.T) {
|
||||
var n NodeInfo
|
||||
|
||||
require.Empty(t, n.ExternalAddresses())
|
||||
require.Panics(t, func() { n.SetExternalAddresses() })
|
||||
|
||||
addr := []string{"1", "2", "3"}
|
||||
n.SetExternalAddresses(addr[0])
|
||||
require.Equal(t, addr[:1], n.ExternalAddresses())
|
||||
|
||||
n.SetExternalAddresses(addr[1:]...)
|
||||
require.Equal(t, addr[1:], n.ExternalAddresses())
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue