package morphsubnet import "github.com/TrueCloudLab/frostfs-node/pkg/morph/client" // ManageNodesPrm groups parameters of node management in Subnet contract. // // Zero value adds node to subnet. Subnet and node IDs must be specified via setters. type ManageNodesPrm struct { // remove or add node rm bool args [2]any } // SetRemove marks node to be removed. By default, node is added. func (x *ManageNodesPrm) SetRemove() { x.rm = true } // SetSubnet sets identifier of the subnet in a binary NeoFS API protocol format. func (x *ManageNodesPrm) SetSubnet(id []byte) { x.args[0] = id } // SetNode sets node's public key in a binary format. func (x *ManageNodesPrm) SetNode(id []byte) { x.args[1] = id } // ManageNodesRes groups the resulting values of node management methods of Subnet contract. type ManageNodesRes struct{} // ManageNodes manages node list of the NeoFS subnet through Subnet contract calls. func (x Client) ManageNodes(prm ManageNodesPrm) (*ManageNodesRes, error) { var method string if prm.rm { method = removeNodeMethod } else { method = addNodeMethod } var prmInvoke client.InvokePrm prmInvoke.SetMethod(method) prmInvoke.SetArgs(prm.args[:]...) err := x.client.Invoke(prmInvoke) if err != nil { return nil, err } return new(ManageNodesRes), nil }