forked from TrueCloudLab/frostfs-node
[#425] control: Implement service RPCs
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
parent
9eaba52660
commit
4640099a67
2 changed files with 196 additions and 0 deletions
94
pkg/services/control/convert.go
Normal file
94
pkg/services/control/convert.go
Normal file
|
@ -0,0 +1,94 @@
|
||||||
|
package control
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/nspcc-dev/neofs-api-go/rpc/grpc"
|
||||||
|
"github.com/nspcc-dev/neofs-api-go/rpc/message"
|
||||||
|
)
|
||||||
|
|
||||||
|
type requestWrapper struct {
|
||||||
|
message.Message
|
||||||
|
m grpc.Message
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w *requestWrapper) ToGRPCMessage() grpc.Message {
|
||||||
|
return w.m
|
||||||
|
}
|
||||||
|
|
||||||
|
type healthCheckResponseWrapper struct {
|
||||||
|
m *HealthCheckResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w *healthCheckResponseWrapper) ToGRPCMessage() grpc.Message {
|
||||||
|
return w.m
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w *healthCheckResponseWrapper) FromGRPCMessage(m grpc.Message) error {
|
||||||
|
var ok bool
|
||||||
|
|
||||||
|
w.m, ok = m.(*HealthCheckResponse)
|
||||||
|
if !ok {
|
||||||
|
return message.NewUnexpectedMessageType(m, w.m)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type netmapSnapshotResponseWrapper struct {
|
||||||
|
message.Message
|
||||||
|
m *NetmapSnapshotResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w *netmapSnapshotResponseWrapper) ToGRPCMessage() grpc.Message {
|
||||||
|
return w.m
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w *netmapSnapshotResponseWrapper) FromGRPCMessage(m grpc.Message) error {
|
||||||
|
var ok bool
|
||||||
|
|
||||||
|
w.m, ok = m.(*NetmapSnapshotResponse)
|
||||||
|
if !ok {
|
||||||
|
return message.NewUnexpectedMessageType(m, w.m)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type setNetmapStatusResponseWrapper struct {
|
||||||
|
message.Message
|
||||||
|
m *SetNetmapStatusResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w *setNetmapStatusResponseWrapper) ToGRPCMessage() grpc.Message {
|
||||||
|
return w.m
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w *setNetmapStatusResponseWrapper) FromGRPCMessage(m grpc.Message) error {
|
||||||
|
var ok bool
|
||||||
|
|
||||||
|
w.m, ok = m.(*SetNetmapStatusResponse)
|
||||||
|
if !ok {
|
||||||
|
return message.NewUnexpectedMessageType(m, w.m)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type dropObjectsResponseWrapper struct {
|
||||||
|
message.Message
|
||||||
|
m *DropObjectsResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w *dropObjectsResponseWrapper) ToGRPCMessage() grpc.Message {
|
||||||
|
return w.m
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w *dropObjectsResponseWrapper) FromGRPCMessage(m grpc.Message) error {
|
||||||
|
var ok bool
|
||||||
|
|
||||||
|
w.m, ok = m.(*DropObjectsResponse)
|
||||||
|
if !ok {
|
||||||
|
return message.NewUnexpectedMessageType(m, w.m)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
102
pkg/services/control/rpc.go
Normal file
102
pkg/services/control/rpc.go
Normal file
|
@ -0,0 +1,102 @@
|
||||||
|
package control
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/nspcc-dev/neofs-api-go/rpc/client"
|
||||||
|
"github.com/nspcc-dev/neofs-api-go/rpc/common"
|
||||||
|
)
|
||||||
|
|
||||||
|
const serviceName = "control.ControlService"
|
||||||
|
|
||||||
|
const (
|
||||||
|
rpcHealthCheck = "HealthCheck"
|
||||||
|
rpcNetmapSnapshot = "NetmapSnapshot"
|
||||||
|
rpcSetNetmapStatus = "SetNetmapStatus"
|
||||||
|
rpcDropObjects = "DropObjects"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HealthCheck executes ControlService.HealthCheck RPC.
|
||||||
|
func HealthCheck(
|
||||||
|
cli *client.Client,
|
||||||
|
req *HealthCheckRequest,
|
||||||
|
opts ...client.CallOption,
|
||||||
|
) (*HealthCheckResponse, error) {
|
||||||
|
wResp := &healthCheckResponseWrapper{
|
||||||
|
m: new(HealthCheckResponse),
|
||||||
|
}
|
||||||
|
|
||||||
|
wReq := &requestWrapper{
|
||||||
|
m: req,
|
||||||
|
}
|
||||||
|
|
||||||
|
err := client.SendUnary(cli, common.CallMethodInfoUnary(serviceName, rpcHealthCheck), wReq, wResp, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return wResp.m, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// NetmapSnapshot executes ControlService.NetmapSnapshot RPC.
|
||||||
|
func NetmapSnapshot(
|
||||||
|
cli *client.Client,
|
||||||
|
req *NetmapSnapshotRequest,
|
||||||
|
opts ...client.CallOption,
|
||||||
|
) (*NetmapSnapshotResponse, error) {
|
||||||
|
wResp := &netmapSnapshotResponseWrapper{
|
||||||
|
m: new(NetmapSnapshotResponse),
|
||||||
|
}
|
||||||
|
|
||||||
|
wReq := &requestWrapper{
|
||||||
|
m: req,
|
||||||
|
}
|
||||||
|
|
||||||
|
err := client.SendUnary(cli, common.CallMethodInfoUnary(serviceName, rpcNetmapSnapshot), wReq, wResp, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return wResp.m, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetNetmapStatus executes ControlService.SetNetmapStatus RPC.
|
||||||
|
func SetNetmapStatus(
|
||||||
|
cli *client.Client,
|
||||||
|
req *SetNetmapStatusRequest,
|
||||||
|
opts ...client.CallOption,
|
||||||
|
) (*SetNetmapStatusResponse, error) {
|
||||||
|
wResp := &setNetmapStatusResponseWrapper{
|
||||||
|
m: new(SetNetmapStatusResponse),
|
||||||
|
}
|
||||||
|
|
||||||
|
wReq := &requestWrapper{
|
||||||
|
m: req,
|
||||||
|
}
|
||||||
|
|
||||||
|
err := client.SendUnary(cli, common.CallMethodInfoUnary(serviceName, rpcSetNetmapStatus), wReq, wResp, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return wResp.m, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// DropObjects executes ControlService.DropObjects RPC.
|
||||||
|
func DropObjects(
|
||||||
|
cli *client.Client,
|
||||||
|
req *DropObjectsRequest,
|
||||||
|
opts ...client.CallOption,
|
||||||
|
) (*DropObjectsResponse, error) {
|
||||||
|
wResp := &dropObjectsResponseWrapper{
|
||||||
|
m: new(DropObjectsResponse),
|
||||||
|
}
|
||||||
|
|
||||||
|
wReq := &requestWrapper{
|
||||||
|
m: req,
|
||||||
|
}
|
||||||
|
err := client.SendUnary(cli, common.CallMethodInfoUnary(serviceName, rpcDropObjects), wReq, wResp, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return wResp.m, nil
|
||||||
|
}
|
Loading…
Reference in a new issue