forked from TrueCloudLab/frostfs-api-go
[#189] sdk/netmap: Implement NodeAttribute type
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
parent
d4f5c27d47
commit
6347f846eb
2 changed files with 92 additions and 0 deletions
|
@ -26,6 +26,9 @@ type (
|
|||
// NodeState is an enumeration of various states of the NeoFS node.
|
||||
type NodeState uint32
|
||||
|
||||
// NodeAttribute represents v2 compatible attribute of the NeoFS Storage Node.
|
||||
type NodeAttribute netmap.Attribute
|
||||
|
||||
const (
|
||||
_ NodeState = iota
|
||||
|
||||
|
@ -146,3 +149,54 @@ func (s NodeState) String() string {
|
|||
return "ONLINE"
|
||||
}
|
||||
}
|
||||
|
||||
// NewNodeAttribute creates and returns new NodeAttribute instance.
|
||||
func NewNodeAttribute() *NodeAttribute {
|
||||
return NewNodeAttributeFromV2(new(netmap.Attribute))
|
||||
}
|
||||
|
||||
// NodeAttributeFromV2 converts v2 node Attribute to NodeAttribute.
|
||||
func NewNodeAttributeFromV2(a *netmap.Attribute) *NodeAttribute {
|
||||
return (*NodeAttribute)(a)
|
||||
}
|
||||
|
||||
// ToV2 converts NodeAttribute to v2 node Attribute.
|
||||
func (a *NodeAttribute) ToV2() *netmap.Attribute {
|
||||
return (*netmap.Attribute)(a)
|
||||
}
|
||||
|
||||
// Key returns key to the node attribute.
|
||||
func (a *NodeAttribute) Key() string {
|
||||
return (*netmap.Attribute)(a).
|
||||
GetKey()
|
||||
}
|
||||
|
||||
// SetKey sets key to the node attribute.
|
||||
func (a *NodeAttribute) SetKey(key string) {
|
||||
(*netmap.Attribute)(a).
|
||||
SetKey(key)
|
||||
}
|
||||
|
||||
// Value returns value of the node attribute.
|
||||
func (a *NodeAttribute) Value() string {
|
||||
return (*netmap.Attribute)(a).
|
||||
GetValue()
|
||||
}
|
||||
|
||||
// SetValue sets value of the node attribute.
|
||||
func (a *NodeAttribute) SetValue(val string) {
|
||||
(*netmap.Attribute)(a).
|
||||
SetValue(val)
|
||||
}
|
||||
|
||||
// ParentKeys returns list of parent keys.
|
||||
func (a *NodeAttribute) ParentKeys() []string {
|
||||
return (*netmap.Attribute)(a).
|
||||
GetParents()
|
||||
}
|
||||
|
||||
// SetParentKeys sets list of parent keys.
|
||||
func (a *NodeAttribute) SetParentKeys(keys ...string) {
|
||||
(*netmap.Attribute)(a).
|
||||
SetParents(keys)
|
||||
}
|
||||
|
|
|
@ -42,3 +42,41 @@ func TestNodeStateFromV2(t *testing.T) {
|
|||
require.Equal(t, item.sV2, item.s.ToV2())
|
||||
}
|
||||
}
|
||||
|
||||
func TestNodeAttributeFromV2(t *testing.T) {
|
||||
aV2 := new(netmap.Attribute)
|
||||
aV2.SetKey("key")
|
||||
aV2.SetValue("value")
|
||||
aV2.SetParents([]string{"par1", "par2"})
|
||||
|
||||
a := NewNodeAttributeFromV2(aV2)
|
||||
|
||||
require.Equal(t, aV2, a.ToV2())
|
||||
}
|
||||
|
||||
func TestNodeAttribute_Key(t *testing.T) {
|
||||
a := NewNodeAttribute()
|
||||
key := "some key"
|
||||
|
||||
a.SetKey(key)
|
||||
|
||||
require.Equal(t, key, a.Key())
|
||||
}
|
||||
|
||||
func TestNodeAttribute_Value(t *testing.T) {
|
||||
a := NewNodeAttribute()
|
||||
val := "some value"
|
||||
|
||||
a.SetValue(val)
|
||||
|
||||
require.Equal(t, val, a.Value())
|
||||
}
|
||||
|
||||
func TestNodeAttribute_ParentKeys(t *testing.T) {
|
||||
a := NewNodeAttribute()
|
||||
keys := []string{"par1", "par2"}
|
||||
|
||||
a.SetParentKeys(keys...)
|
||||
|
||||
require.Equal(t, keys, a.ParentKeys())
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue