Introduce helper function for adding context metadata from gRPC headers (#8354)

* implement helper

* use helper function everywhere

* add unit tests

* small cleanup of the helper

* small fixes

* gazellelelele

* fix helper tests
This commit is contained in:
Radosław Kapka
2021-01-28 15:58:32 +01:00
committed by GitHub
parent e677b19d31
commit d9c451d547
14 changed files with 160 additions and 59 deletions

View File

@@ -32,6 +32,7 @@ go_library(
"//shared/cmd:go_default_library",
"//shared/featureconfig:go_default_library",
"//shared/fileutil:go_default_library",
"//shared/grpcutils:go_default_library",
"//shared/petnames:go_default_library",
"//shared/promptutil:go_default_library",
"//shared/tos:go_default_library",
@@ -54,7 +55,6 @@ go_library(
"@com_github_urfave_cli_v2//:go_default_library",
"@com_github_wealdtech_go_eth2_wallet_encryptor_keystorev4//:go_default_library",
"@org_golang_google_grpc//:go_default_library",
"@org_golang_google_grpc//metadata:go_default_library",
],
)

View File

@@ -11,6 +11,7 @@ import (
"github.com/prysmaticlabs/prysm/beacon-chain/core/blocks"
"github.com/prysmaticlabs/prysm/shared/bytesutil"
"github.com/prysmaticlabs/prysm/shared/cmd"
"github.com/prysmaticlabs/prysm/shared/grpcutils"
"github.com/prysmaticlabs/prysm/shared/promptutil"
"github.com/prysmaticlabs/prysm/validator/accounts/prompt"
"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
@@ -19,7 +20,6 @@ import (
"github.com/prysmaticlabs/prysm/validator/keymanager"
"github.com/urfave/cli/v2"
"google.golang.org/grpc"
"google.golang.org/grpc/metadata"
)
type performExitCfg struct {
@@ -184,16 +184,10 @@ func prepareClients(cliCtx *cli.Context) (*ethpb.BeaconNodeValidatorClient, *eth
if dialOpts == nil {
return nil, nil, errors.New("failed to construct dial options")
}
for _, hdr := range strings.Split(cliCtx.String(flags.GrpcHeadersFlag.Name), ",") {
if hdr != "" {
ss := strings.Split(hdr, "=")
if len(ss) < 2 {
log.Warnf("Incorrect gRPC header flag format. Skipping %v", ss[0])
continue
}
cliCtx.Context = metadata.AppendToOutgoingContext(cliCtx.Context, ss[0], strings.Join(ss[1:], "="))
}
}
grpcHeaders := strings.Split(cliCtx.String(flags.GrpcHeadersFlag.Name), ",")
cliCtx.Context = grpcutils.AppendHeaders(cliCtx.Context, grpcHeaders)
conn, err := grpc.DialContext(cliCtx.Context, cliCtx.String(flags.BeaconRPCProviderFlag.Name), dialOpts...)
if err != nil {
return nil, nil, errors.Wrapf(err, "could not dial endpoint %s", flags.BeaconRPCProviderFlag.Name)