pkg/rpcclient/client_wrapper.go (35 lines of code) (raw):
// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License"). You may
// not use this file except in compliance with the License. A copy of the
// License is located at
//
// http://aws.amazon.com/apache2.0/
//
// or in the "license" file accompanying this file. This file is distributed
// on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
// express or implied. See the License for the specific language governing
// permissions and limitations under the License.
package rpcclient
import (
"context"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
)
// GRPC is the ipamd client Dial interface
type GRPCClient interface {
Dial(ctx context.Context, target string, opts ...grpc.DialOption) (*grpc.ClientConn, error)
}
type NPAgentRPC struct{}
// New creates a new cniGRPC
func New() GRPCClient {
return &NPAgentRPC{}
}
func (n *NPAgentRPC) Dial(ctx context.Context, target string, opts ...grpc.DialOption) (*grpc.ClientConn, error) {
return grpc.DialContext(ctx, target, opts...)
}
func GetDefaultServiceRetryConfig() grpc.DialOption {
// The retry policy for the request made to IPAM server. It waits for the IPAM GRPC to be up before initiating retry policy
config := `{
"methodConfig": [{
"name": [{"service": "rpc.ConfigServerBackend"}],
"waitForReady": true,
"retryPolicy": {
"MaxAttempts": 5,
"InitialBackoff": "0.5s",
"MaxBackoff": "10s",
"BackoffMultiplier": 1.1,
"RetryableStatusCodes": [ "UNAVAILABLE", "ABORTED", "UNKNOWN"]
}
}]
}`
return grpc.WithDefaultServiceConfig(config)
}
func GetInsecureConnectionType() grpc.DialOption {
return grpc.WithTransportCredentials(insecure.NewCredentials())
}