All checks were successful
DCO action / DCO (pull_request) Successful in 37s
Tests and linters / Run gofumpt (pull_request) Successful in 43s
Vulncheck / Vulncheck (pull_request) Successful in 1m33s
Build / Build Components (pull_request) Successful in 2m18s
Pre-commit hooks / Pre-commit (pull_request) Successful in 2m21s
Tests and linters / Tests (pull_request) Successful in 2m51s
Tests and linters / Staticcheck (pull_request) Successful in 2m46s
Tests and linters / gopls check (pull_request) Successful in 3m13s
Tests and linters / Tests with -race (pull_request) Successful in 3m24s
Tests and linters / Lint (pull_request) Successful in 3m35s
Vulncheck / Vulncheck (push) Successful in 58s
Pre-commit hooks / Pre-commit (push) Successful in 1m22s
Tests and linters / Staticcheck (push) Successful in 1m43s
Build / Build Components (push) Successful in 2m2s
Tests and linters / Tests (push) Successful in 2m25s
Tests and linters / Run gofumpt (push) Successful in 2m23s
Tests and linters / Lint (push) Successful in 2m31s
Tests and linters / gopls check (push) Successful in 3m22s
Tests and linters / Tests with -race (push) Successful in 3m43s
OCI image / Build container images (push) Successful in 4m24s
By default, gRPC fetches TXT report while resolving a domain.
0914bba6c5/internal/resolver/dns/dns_resolver.go (L336)
This leads to a hanging dial if DNS is unavailable, even though the host
may be specified in `/etc/hosts` (hello, localhost!).
SDK client for the main API uses these options by default.
Refs TrueCloudLab/frostfs-sdk-go#342
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
59 lines
1.8 KiB
Go
59 lines
1.8 KiB
Go
package tree
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"strings"
|
|
|
|
"git.frostfs.info/TrueCloudLab/frostfs-node/cmd/frostfs-cli/internal/common"
|
|
"git.frostfs.info/TrueCloudLab/frostfs-node/cmd/frostfs-cli/internal/commonflags"
|
|
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/network"
|
|
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/services/tree"
|
|
tracing "git.frostfs.info/TrueCloudLab/frostfs-observability/tracing/grpc"
|
|
"github.com/spf13/cobra"
|
|
"github.com/spf13/viper"
|
|
"google.golang.org/grpc"
|
|
"google.golang.org/grpc/credentials/insecure"
|
|
)
|
|
|
|
// _client returns grpc Tree service client. Should be removed
|
|
// after making Tree API public.
|
|
func _client() (tree.TreeServiceClient, error) {
|
|
var netAddr network.Address
|
|
|
|
rpcEndpoint := viper.GetString(commonflags.RPC)
|
|
if rpcEndpoint == "" {
|
|
return nil, fmt.Errorf("%s is not defined", commonflags.RPC)
|
|
}
|
|
|
|
err := netAddr.FromString(rpcEndpoint)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
opts := []grpc.DialOption{
|
|
grpc.WithChainUnaryInterceptor(
|
|
tracing.NewUnaryClientInteceptor(),
|
|
),
|
|
grpc.WithChainStreamInterceptor(
|
|
tracing.NewStreamClientInterceptor(),
|
|
),
|
|
grpc.WithDefaultCallOptions(grpc.WaitForReady(true)),
|
|
grpc.WithDisableServiceConfig(),
|
|
}
|
|
|
|
if !strings.HasPrefix(netAddr.URIAddr(), "grpcs:") {
|
|
opts = append(opts, grpc.WithTransportCredentials(insecure.NewCredentials()))
|
|
}
|
|
|
|
cc, err := grpc.NewClient(netAddr.URIAddr(), opts...)
|
|
return tree.NewTreeServiceClient(cc), err
|
|
}
|
|
|
|
func contextWithTimeout(cmd *cobra.Command) (context.Context, context.CancelFunc) {
|
|
if timeout := viper.GetDuration(commonflags.Timeout); timeout > 0 {
|
|
common.PrintVerbose(cmd, "Set request timeout to %s.", timeout)
|
|
return context.WithTimeout(cmd.Context(), timeout)
|
|
}
|
|
return context.WithTimeout(cmd.Context(), commonflags.TimeoutDefault)
|
|
}
|