From 618fe0ad53622bd822009ffe5140f8d2efbb42ee Mon Sep 17 00:00:00 2001 From: Olaoluwa Osuntokun Date: Fri, 18 Sep 2020 17:47:09 -0700 Subject: [PATCH] auctioneer+rpc: thread through new MinNodeTier for order submission/listing --- auctioneer/client.go | 24 ++++++++++++++++++++++++ rpcserver.go | 31 ++++++++++++++++++++++++++++++- 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/auctioneer/client.go b/auctioneer/client.go index b8b8b34..0a989a4 100644 --- a/auctioneer/client.go +++ b/auctioneer/client.go @@ -373,10 +373,16 @@ func (c *Client) SubmitOrder(ctx context.Context, o order.Order, } case *order.Bid: + nodeTierEnum, err := MarshallNodeTier(castOrder.MinNodeTier) + if err != nil { + return err + } + serverBid := &poolrpc.ServerBid{ Details: details, LeaseDurationBlocks: castOrder.LeaseDuration, Version: uint32(castOrder.Version), + MinNodeTier: nodeTierEnum, } rpcRequest.Details = &poolrpc.ServerSubmitOrderRequest_Bid{ Bid: serverBid, @@ -1166,3 +1172,21 @@ func (c *Client) BatchSnapshot(ctx context.Context, BatchId: targetBatch[:], }) } + +// MarshallNodeTier maps the node tier integer into the enum used on the RPC +// interface. +func MarshallNodeTier(nodeTier order.NodeTier) (poolrpc.NodeTier, error) { + switch nodeTier { + case order.NodeTierDefault: + return poolrpc.NodeTier_TIER_DEFAULT, nil + + case order.NodeTier0: + return poolrpc.NodeTier_TIER_0, nil + + case order.NodeTier1: + return poolrpc.NodeTier_TIER_1, nil + + default: + return 0, fmt.Errorf("unknown node tier: %v", nodeTier) + } +} diff --git a/rpcserver.go b/rpcserver.go index 714e206..8faafa4 100644 --- a/rpcserver.go +++ b/rpcserver.go @@ -1092,9 +1092,14 @@ func (s *rpcServer) SubmitOrder(ctx context.Context, if err != nil { return nil, err } + nodeTier, err := unmarshallNodeTier(b.MinNodeTier) + if err != nil { + return nil, err + } o = &order.Bid{ - Kit: *kit, + Kit: *kit, + MinNodeTier: nodeTier, } default: @@ -1297,10 +1302,16 @@ func (s *rpcServer) ListOrders(ctx context.Context, asks = append(asks, rpcAsk) case *order.Bid: + nodeTier, err := auctioneer.MarshallNodeTier(o.MinNodeTier) + if err != nil { + return nil, err + } + rpcBid := &poolrpc.Bid{ Details: details, LeaseDurationBlocks: dbDetails.LeaseDuration, Version: uint32(o.Version), + MinNodeTier: nodeTier, } bids = append(bids, rpcBid) @@ -1997,3 +2008,21 @@ func nodeHasTorAddrs(nodeAddrs []string) bool { return false } + +// unmarshallNodeTier maps the RPC node tier enum to the node tier used in +// memory. +func unmarshallNodeTier(nodeTier poolrpc.NodeTier) (order.NodeTier, error) { + switch nodeTier { + case poolrpc.NodeTier_TIER_DEFAULT: + return order.DefaultMinNodeTier, nil + + case poolrpc.NodeTier_TIER_0: + return order.NodeTier0, nil + + case poolrpc.NodeTier_TIER_1: + return order.NodeTier1, nil + + default: + return 0, fmt.Errorf("unknown node tier: %v", nodeTier) + } +}