forked from TrueCloudLab/frostfs-node
[#315] control: Add SetNetmapStatus rpc
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
parent
e5dc4ede57
commit
f39d08bda7
4 changed files with 198 additions and 0 deletions
|
@ -310,3 +310,146 @@ func (x *NetmapSnapshotResponse) ReadSignedData(buf []byte) ([]byte, error) {
|
||||||
func (x *NetmapSnapshotResponse) SignedDataSize() int {
|
func (x *NetmapSnapshotResponse) SignedDataSize() int {
|
||||||
return x.GetBody().StableSize()
|
return x.GetBody().StableSize()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetStatus sets new storage node status in NeoFS network map.
|
||||||
|
func (x *SetNetmapStatusRequest_Body) SetStatus(v NetmapStatus) {
|
||||||
|
if x != nil {
|
||||||
|
x.Status = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
_ = iota
|
||||||
|
setNetmapStatusReqBodyStatusFNum
|
||||||
|
)
|
||||||
|
|
||||||
|
// StableMarshal reads binary representation of set netmap status request body
|
||||||
|
// in protobuf binary format.
|
||||||
|
//
|
||||||
|
// If buffer length is less than x.StableSize(), new buffer is allocated.
|
||||||
|
//
|
||||||
|
// Returns any error encountered which did not allow writing the data completely.
|
||||||
|
// Otherwise, returns the buffer in which the data is written.
|
||||||
|
//
|
||||||
|
// Structures with the same field values have the same binary format.
|
||||||
|
func (x *SetNetmapStatusRequest_Body) StableMarshal(buf []byte) ([]byte, error) {
|
||||||
|
if x == nil {
|
||||||
|
return []byte{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if sz := x.StableSize(); len(buf) < sz {
|
||||||
|
buf = make([]byte, sz)
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err := proto.EnumMarshal(setNetmapStatusReqBodyStatusFNum, buf, int32(x.Status))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return buf, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// StableSize returns binary size of health check response body
|
||||||
|
// in protobuf binary format.
|
||||||
|
//
|
||||||
|
// Structures with the same field values have the same binary size.
|
||||||
|
func (x *SetNetmapStatusRequest_Body) StableSize() int {
|
||||||
|
if x == nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
size := 0
|
||||||
|
|
||||||
|
size += proto.EnumSize(setNetmapStatusReqBodyStatusFNum, int32(x.Status))
|
||||||
|
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBody sets body of the set netmap status request .
|
||||||
|
func (x *SetNetmapStatusRequest) SetBody(v *SetNetmapStatusRequest_Body) {
|
||||||
|
if x != nil {
|
||||||
|
x.Body = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSignature sets signature of the set netmap status request body.
|
||||||
|
func (x *SetNetmapStatusRequest) SetSignature(body *Signature) {
|
||||||
|
if x != nil {
|
||||||
|
x.Signature = body
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ReadSignedData reads signed data of set netmap status request to buf.
|
||||||
|
//
|
||||||
|
// If buffer length is less than x.SignedDataSize(), new buffer is allocated.
|
||||||
|
//
|
||||||
|
// Returns any error encountered which did not allow writing the data completely.
|
||||||
|
// Otherwise, returns the buffer in which the data is written.
|
||||||
|
//
|
||||||
|
// Structures with the same field values have the same signed data.
|
||||||
|
func (x *SetNetmapStatusRequest) ReadSignedData(buf []byte) ([]byte, error) {
|
||||||
|
return x.GetBody().StableMarshal(buf)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SignedDataSize returns binary size of the signed data
|
||||||
|
// of set netmap status request.
|
||||||
|
//
|
||||||
|
// Structures with the same field values have the same signed data size.
|
||||||
|
func (x *SetNetmapStatusRequest) SignedDataSize() int {
|
||||||
|
return x.GetBody().StableSize()
|
||||||
|
}
|
||||||
|
|
||||||
|
// StableMarshal reads binary representation of set netmap status response body
|
||||||
|
// in protobuf binary format.
|
||||||
|
//
|
||||||
|
// If buffer length is less than x.StableSize(), new buffer is allocated.
|
||||||
|
//
|
||||||
|
// Returns any error encountered which did not allow writing the data completely.
|
||||||
|
// Otherwise, returns the buffer in which the data is written.
|
||||||
|
//
|
||||||
|
// Structures with the same field values have the same binary format.
|
||||||
|
func (x *SetNetmapStatusResponse_Body) StableMarshal(buf []byte) ([]byte, error) {
|
||||||
|
return buf, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// StableSize returns binary size of set netmap status response body
|
||||||
|
// in protobuf binary format.
|
||||||
|
//
|
||||||
|
// Structures with the same field values have the same binary size.
|
||||||
|
func (x *SetNetmapStatusResponse_Body) StableSize() int {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBody sets set body of the netmap status response.
|
||||||
|
func (x *SetNetmapStatusResponse) SetBody(v *SetNetmapStatusResponse_Body) {
|
||||||
|
if x != nil {
|
||||||
|
x.Body = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSignature sets signature of the set netmap status response body.
|
||||||
|
func (x *SetNetmapStatusResponse) SetSignature(v *Signature) {
|
||||||
|
if x != nil {
|
||||||
|
x.Signature = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ReadSignedData reads signed data of set netmap status response to buf.
|
||||||
|
//
|
||||||
|
// If buffer length is less than x.SignedDataSize(), new buffer is allocated.
|
||||||
|
//
|
||||||
|
// Returns any error encountered which did not allow writing the data completely.
|
||||||
|
// Otherwise, returns the buffer in which the data is written.
|
||||||
|
//
|
||||||
|
// Structures with the same field values have the same signed data.
|
||||||
|
func (x *SetNetmapStatusResponse) ReadSignedData(buf []byte) ([]byte, error) {
|
||||||
|
return x.GetBody().StableMarshal(buf)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SignedDataSize returns binary size of the signed data
|
||||||
|
// of set netmap status response.
|
||||||
|
//
|
||||||
|
// Structures with the same field values have the same signed data size.
|
||||||
|
func (x *SetNetmapStatusResponse) SignedDataSize() int {
|
||||||
|
return x.GetBody().StableSize()
|
||||||
|
}
|
||||||
|
|
BIN
pkg/services/control/service.pb.go
generated
BIN
pkg/services/control/service.pb.go
generated
Binary file not shown.
|
@ -13,6 +13,9 @@ service ControlService {
|
||||||
|
|
||||||
// Returns network map snapshot of the current NeoFS epoch.
|
// Returns network map snapshot of the current NeoFS epoch.
|
||||||
rpc NetmapSnapshot (NetmapSnapshotRequest) returns (NetmapSnapshotResponse);
|
rpc NetmapSnapshot (NetmapSnapshotRequest) returns (NetmapSnapshotResponse);
|
||||||
|
|
||||||
|
// Sets status of the storage node in NeoFS network map.
|
||||||
|
rpc SetNetmapStatus (SetNetmapStatusRequest) returns (SetNetmapStatusResponse);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Health check request.
|
// Health check request.
|
||||||
|
@ -73,3 +76,31 @@ message NetmapSnapshotResponse {
|
||||||
// Body signature.
|
// Body signature.
|
||||||
Signature signature = 2;
|
Signature signature = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set netmap status request.
|
||||||
|
message SetNetmapStatusRequest {
|
||||||
|
// Set netmap status request body.
|
||||||
|
message Body {
|
||||||
|
// New storage node status in NeoFS network map.
|
||||||
|
NetmapStatus status = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Body of set netmap status request message.
|
||||||
|
Body body = 1;
|
||||||
|
|
||||||
|
// Body signature.
|
||||||
|
Signature signature = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set netmap status response.
|
||||||
|
message SetNetmapStatusResponse {
|
||||||
|
// Set netmap status response body
|
||||||
|
message Body {
|
||||||
|
}
|
||||||
|
|
||||||
|
// Body of set netmap status response message.
|
||||||
|
Body body = 1;
|
||||||
|
|
||||||
|
// Body signature.
|
||||||
|
Signature signature = 2;
|
||||||
|
}
|
||||||
|
|
|
@ -55,3 +55,27 @@ func generateNetmapSnapshotResponseBody() *control.NetmapSnapshotResponse_Body {
|
||||||
func equalNetmapSnapshotResponseBodies(b1, b2 *control.NetmapSnapshotResponse_Body) bool {
|
func equalNetmapSnapshotResponseBodies(b1, b2 *control.NetmapSnapshotResponse_Body) bool {
|
||||||
return equalNetmaps(b1.GetNetmap(), b2.GetNetmap())
|
return equalNetmaps(b1.GetNetmap(), b2.GetNetmap())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSetNetmapStatusRequest_Body_StableMarshal(t *testing.T) {
|
||||||
|
testStableMarshal(t,
|
||||||
|
generateSetNetmapStatusRequestBody(),
|
||||||
|
new(control.SetNetmapStatusRequest_Body),
|
||||||
|
func(m1, m2 protoMessage) bool {
|
||||||
|
return equalSetnetmapStatusRequestBodies(
|
||||||
|
m1.(*control.SetNetmapStatusRequest_Body),
|
||||||
|
m2.(*control.SetNetmapStatusRequest_Body),
|
||||||
|
)
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
func generateSetNetmapStatusRequestBody() *control.SetNetmapStatusRequest_Body {
|
||||||
|
body := new(control.SetNetmapStatusRequest_Body)
|
||||||
|
body.SetStatus(control.NetmapStatus_ONLINE)
|
||||||
|
|
||||||
|
return body
|
||||||
|
}
|
||||||
|
|
||||||
|
func equalSetnetmapStatusRequestBodies(b1, b2 *control.SetNetmapStatusRequest_Body) bool {
|
||||||
|
return b1.GetStatus() == b2.GetStatus()
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue