mirror of
https://github.com/ceph/ceph-csi.git
synced 2025-06-13 10:33:35 +00:00
rebase: bump the github-dependencies group with 5 updates
Bumps the github-dependencies group with 5 updates: | Package | From | To | | --- | --- | --- | | [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) | `1.49.0` | `1.49.13` | | [github.com/aws/aws-sdk-go-v2/service/sts](https://github.com/aws/aws-sdk-go-v2) | `1.26.5` | `1.26.6` | | [github.com/google/uuid](https://github.com/google/uuid) | `1.4.0` | `1.5.0` | | [github.com/kubernetes-csi/csi-lib-utils](https://github.com/kubernetes-csi/csi-lib-utils) | `0.14.0` | `0.17.0` | | [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) | `1.17.0` | `1.18.0` | Updates `github.com/aws/aws-sdk-go` from 1.49.0 to 1.49.13 - [Release notes](https://github.com/aws/aws-sdk-go/releases) - [Commits](https://github.com/aws/aws-sdk-go/compare/v1.49.0...v1.49.13) Updates `github.com/aws/aws-sdk-go-v2/service/sts` from 1.26.5 to 1.26.6 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.26.5...service/s3/v1.26.6) Updates `github.com/google/uuid` from 1.4.0 to 1.5.0 - [Release notes](https://github.com/google/uuid/releases) - [Changelog](https://github.com/google/uuid/blob/master/CHANGELOG.md) - [Commits](https://github.com/google/uuid/compare/v1.4.0...v1.5.0) Updates `github.com/kubernetes-csi/csi-lib-utils` from 0.14.0 to 0.17.0 - [Release notes](https://github.com/kubernetes-csi/csi-lib-utils/releases) - [Commits](https://github.com/kubernetes-csi/csi-lib-utils/compare/v0.14.0...v0.17.0) Updates `github.com/prometheus/client_golang` from 1.17.0 to 1.18.0 - [Release notes](https://github.com/prometheus/client_golang/releases) - [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md) - [Commits](https://github.com/prometheus/client_golang/compare/v1.17.0...v1.18.0) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-dependencies - dependency-name: github.com/aws/aws-sdk-go-v2/service/sts dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-dependencies - dependency-name: github.com/google/uuid dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-dependencies - dependency-name: github.com/kubernetes-csi/csi-lib-utils dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-dependencies - dependency-name: github.com/prometheus/client_golang dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-dependencies ... Signed-off-by: dependabot[bot] <support@github.com>
This commit is contained in:
committed by
mergify[bot]
parent
017dddcbfc
commit
b2ae48dc2d
83
vendor/github.com/kubernetes-csi/csi-lib-utils/connection/connection.go
generated
vendored
83
vendor/github.com/kubernetes-csi/csi-lib-utils/connection/connection.go
generated
vendored
@ -20,13 +20,14 @@ import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/kubernetes-csi/csi-lib-utils/metrics"
|
||||
"github.com/kubernetes-csi/csi-lib-utils/protosanitizer"
|
||||
"go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc"
|
||||
"google.golang.org/grpc"
|
||||
"k8s.io/klog/v2"
|
||||
)
|
||||
@ -55,7 +56,10 @@ func SetMaxGRPCLogLength(characterCount int) {
|
||||
// https://github.com/grpc/grpc/blob/master/doc/naming.md.
|
||||
//
|
||||
// The function tries to connect for 30 seconds, and returns an error if no connection has been established at that point.
|
||||
// The connection has zero idle timeout, i.e. it is never closed because of inactivity.
|
||||
// The function automatically disables TLS and adds interceptor for logging of all gRPC messages at level 5.
|
||||
// If the metricsManager is 'nil', no metrics will be recorded on the gRPC calls.
|
||||
// The function behaviour can be tweaked with options.
|
||||
//
|
||||
// For a connection to a Unix Domain socket, the behavior after
|
||||
// loosing the connection is configurable. The default is to
|
||||
@ -70,7 +74,20 @@ func SetMaxGRPCLogLength(characterCount int) {
|
||||
// For other connections, the default behavior from gRPC is used and
|
||||
// loss of connection is not detected reliably.
|
||||
func Connect(address string, metricsManager metrics.CSIMetricsManager, options ...Option) (*grpc.ClientConn, error) {
|
||||
return connect(address, metricsManager, []grpc.DialOption{grpc.WithTimeout(time.Second * 30)}, options)
|
||||
// Prepend default options
|
||||
options = append([]Option{WithTimeout(time.Second * 30)}, options...)
|
||||
if metricsManager != nil {
|
||||
options = append([]Option{WithMetrics(metricsManager)}, options...)
|
||||
}
|
||||
return connect(address, options)
|
||||
}
|
||||
|
||||
// ConnectWithoutMetrics behaves exactly like Connect except no metrics are recorded.
|
||||
// This function is deprecated, prefer using Connect with `nil` as the metricsManager.
|
||||
func ConnectWithoutMetrics(address string, options ...Option) (*grpc.ClientConn, error) {
|
||||
// Prepend default options
|
||||
options = append([]Option{WithTimeout(time.Second * 30)}, options...)
|
||||
return connect(address, options)
|
||||
}
|
||||
|
||||
// Option is the type of all optional parameters for Connect.
|
||||
@ -91,7 +108,7 @@ func OnConnectionLoss(reconnect func() bool) Option {
|
||||
func ExitOnConnectionLoss() func() bool {
|
||||
return func() bool {
|
||||
terminationMsg := "Lost connection to CSI driver, exiting"
|
||||
if err := ioutil.WriteFile(terminationLogPath, []byte(terminationMsg), 0644); err != nil {
|
||||
if err := os.WriteFile(terminationLogPath, []byte(terminationMsg), 0644); err != nil {
|
||||
klog.Errorf("%s: %s", terminationLogPath, err)
|
||||
}
|
||||
klog.Exit(terminationMsg)
|
||||
@ -100,29 +117,63 @@ func ExitOnConnectionLoss() func() bool {
|
||||
}
|
||||
}
|
||||
|
||||
// WithTimeout adds a configurable timeout on the gRPC calls.
|
||||
func WithTimeout(timeout time.Duration) Option {
|
||||
return func(o *options) {
|
||||
o.timeout = timeout
|
||||
}
|
||||
}
|
||||
|
||||
// WithMetrics enables the recording of metrics on the gRPC calls with the provided CSIMetricsManager.
|
||||
func WithMetrics(metricsManager metrics.CSIMetricsManager) Option {
|
||||
return func(o *options) {
|
||||
o.metricsManager = metricsManager
|
||||
}
|
||||
}
|
||||
|
||||
// WithOtelTracing enables the recording of traces on the gRPC calls with opentelemetry gRPC interceptor.
|
||||
func WithOtelTracing() Option {
|
||||
return func(o *options) {
|
||||
o.enableOtelTracing = true
|
||||
}
|
||||
}
|
||||
|
||||
type options struct {
|
||||
reconnect func() bool
|
||||
reconnect func() bool
|
||||
timeout time.Duration
|
||||
metricsManager metrics.CSIMetricsManager
|
||||
enableOtelTracing bool
|
||||
}
|
||||
|
||||
// connect is the internal implementation of Connect. It has more options to enable testing.
|
||||
func connect(
|
||||
address string,
|
||||
metricsManager metrics.CSIMetricsManager,
|
||||
dialOptions []grpc.DialOption, connectOptions []Option) (*grpc.ClientConn, error) {
|
||||
connectOptions []Option) (*grpc.ClientConn, error) {
|
||||
var o options
|
||||
for _, option := range connectOptions {
|
||||
option(&o)
|
||||
}
|
||||
|
||||
dialOptions = append(dialOptions,
|
||||
grpc.WithInsecure(), // Don't use TLS, it's usually local Unix domain socket in a container.
|
||||
grpc.WithBackoffMaxDelay(time.Second), // Retry every second after failure.
|
||||
grpc.WithBlock(), // Block until connection succeeds.
|
||||
grpc.WithChainUnaryInterceptor(
|
||||
LogGRPC, // Log all messages.
|
||||
ExtendedCSIMetricsManager{metricsManager}.RecordMetricsClientInterceptor, // Record metrics for each gRPC call.
|
||||
),
|
||||
)
|
||||
dialOptions := []grpc.DialOption{
|
||||
grpc.WithInsecure(), // Don't use TLS, it's usually local Unix domain socket in a container.
|
||||
grpc.WithBackoffMaxDelay(time.Second), // Retry every second after failure.
|
||||
grpc.WithBlock(), // Block until connection succeeds.
|
||||
grpc.WithIdleTimeout(time.Duration(0)), // Never close connection because of inactivity.
|
||||
}
|
||||
|
||||
if o.timeout > 0 {
|
||||
dialOptions = append(dialOptions, grpc.WithTimeout(o.timeout))
|
||||
}
|
||||
|
||||
interceptors := []grpc.UnaryClientInterceptor{LogGRPC}
|
||||
if o.metricsManager != nil {
|
||||
interceptors = append(interceptors, ExtendedCSIMetricsManager{o.metricsManager}.RecordMetricsClientInterceptor)
|
||||
}
|
||||
if o.enableOtelTracing {
|
||||
interceptors = append(interceptors, otelgrpc.UnaryClientInterceptor())
|
||||
}
|
||||
dialOptions = append(dialOptions, grpc.WithChainUnaryInterceptor(interceptors...))
|
||||
|
||||
unixPrefix := "unix://"
|
||||
if strings.HasPrefix(address, "/") {
|
||||
// It looks like filesystem path.
|
||||
@ -193,7 +244,7 @@ func LogGRPC(ctx context.Context, method string, req, reply interface{}, cc *grp
|
||||
klog.V(5).Infof("GRPC call: %s", method)
|
||||
klog.V(5).Infof("GRPC request: %s", protosanitizer.StripSecrets(req))
|
||||
err := invoker(ctx, method, req, reply, cc, opts...)
|
||||
cappedStr := fmt.Sprintf("%s", protosanitizer.StripSecrets(reply))
|
||||
cappedStr := protosanitizer.StripSecrets(reply).String()
|
||||
if maxLogChar > 0 && len(cappedStr) > maxLogChar {
|
||||
cappedStr = cappedStr[:maxLogChar] + fmt.Sprintf(" [response body too large, log capped to %d chars]", maxLogChar)
|
||||
}
|
||||
|
21
vendor/github.com/kubernetes-csi/csi-lib-utils/metrics/metrics.go
generated
vendored
21
vendor/github.com/kubernetes-csi/csi-lib-utils/metrics/metrics.go
generated
vendored
@ -20,6 +20,7 @@ import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/http/pprof"
|
||||
"sort"
|
||||
"strings"
|
||||
"time"
|
||||
@ -99,6 +100,12 @@ type CSIMetricsManager interface {
|
||||
// RegisterToServer registers an HTTP handler for this metrics manager to the
|
||||
// given server at the specified address/path.
|
||||
RegisterToServer(s Server, metricsPath string)
|
||||
|
||||
// RegisterPprofToServer registers the HTTP handlers necessary to enable pprof
|
||||
// for this metrics manager to the given server at the usual path.
|
||||
// This function is not needed when using DefaultServeMux as the Server since
|
||||
// the handlers will automatically be registered when importing pprof.
|
||||
RegisterPprofToServer(s Server)
|
||||
}
|
||||
|
||||
// Server represents any type that could serve HTTP requests for the metrics
|
||||
@ -388,6 +395,20 @@ func (cmm *csiMetricsManager) RegisterToServer(s Server, metricsPath string) {
|
||||
ErrorHandling: metrics.ContinueOnError}))
|
||||
}
|
||||
|
||||
// RegisterPprofToServer registers the HTTP handlers necessary to enable pprof
|
||||
// for this metrics manager to the given server at the usual path.
|
||||
// This function is not needed when using DefaultServeMux as the Server since
|
||||
// the handlers will automatically be registered when importing pprof.
|
||||
func (cmm *csiMetricsManager) RegisterPprofToServer(s Server) {
|
||||
// Needed handlers can be seen here:
|
||||
// https://github.com/golang/go/blob/master/src/net/http/pprof/pprof.go#L27
|
||||
s.Handle("/debug/pprof/", http.HandlerFunc(pprof.Index))
|
||||
s.Handle("/debug/pprof/cmdline", http.HandlerFunc(pprof.Cmdline))
|
||||
s.Handle("/debug/pprof/profile", http.HandlerFunc(pprof.Profile))
|
||||
s.Handle("/debug/pprof/symbol", http.HandlerFunc(pprof.Symbol))
|
||||
s.Handle("/debug/pprof/trace", http.HandlerFunc(pprof.Trace))
|
||||
}
|
||||
|
||||
// VerifyMetricsMatch is a helper function that verifies that the expected and
|
||||
// actual metrics are identical excluding metricToIgnore.
|
||||
// This method is only used by tests. Ideally it should be in the _test file,
|
||||
|
9
vendor/github.com/kubernetes-csi/csi-lib-utils/protosanitizer/protosanitizer.go
generated
vendored
9
vendor/github.com/kubernetes-csi/csi-lib-utils/protosanitizer/protosanitizer.go
generated
vendored
@ -26,7 +26,6 @@ import (
|
||||
|
||||
"github.com/golang/protobuf/descriptor"
|
||||
"github.com/golang/protobuf/proto"
|
||||
protobuf "github.com/golang/protobuf/protoc-gen-go/descriptor"
|
||||
protobufdescriptor "github.com/golang/protobuf/protoc-gen-go/descriptor"
|
||||
)
|
||||
|
||||
@ -56,7 +55,7 @@ func StripSecretsCSI03(msg interface{}) fmt.Stringer {
|
||||
type stripSecrets struct {
|
||||
msg interface{}
|
||||
|
||||
isSecretField func(field *protobuf.FieldDescriptorProto) bool
|
||||
isSecretField func(field *protobufdescriptor.FieldDescriptorProto) bool
|
||||
}
|
||||
|
||||
func (s *stripSecrets) String() string {
|
||||
@ -110,7 +109,7 @@ func (s *stripSecrets) strip(parsed interface{}, msg interface{}) {
|
||||
if _, ok := parsedFields[field.GetName()]; ok {
|
||||
parsedFields[field.GetName()] = "***stripped***"
|
||||
}
|
||||
} else if field.GetType() == protobuf.FieldDescriptorProto_TYPE_MESSAGE {
|
||||
} else if field.GetType() == protobufdescriptor.FieldDescriptorProto_TYPE_MESSAGE {
|
||||
// When we get here,
|
||||
// the type name is something like ".csi.v1.CapacityRange" (leading dot!)
|
||||
// and looking up "csi.v1.CapacityRange"
|
||||
@ -150,7 +149,7 @@ func (s *stripSecrets) strip(parsed interface{}, msg interface{}) {
|
||||
|
||||
// isCSI1Secret uses the csi.E_CsiSecret extension from CSI 1.0 to
|
||||
// determine whether a field contains secrets.
|
||||
func isCSI1Secret(field *protobuf.FieldDescriptorProto) bool {
|
||||
func isCSI1Secret(field *protobufdescriptor.FieldDescriptorProto) bool {
|
||||
ex, err := proto.GetExtension(field.Options, e_CsiSecret)
|
||||
return err == nil && ex != nil && *ex.(*bool)
|
||||
}
|
||||
@ -172,6 +171,6 @@ var e_CsiSecret = &proto.ExtensionDesc{
|
||||
|
||||
// isCSI03Secret relies on the naming convention in CSI <= 0.3
|
||||
// to determine whether a field contains secrets.
|
||||
func isCSI03Secret(field *protobuf.FieldDescriptorProto) bool {
|
||||
func isCSI03Secret(field *protobufdescriptor.FieldDescriptorProto) bool {
|
||||
return strings.HasSuffix(field.GetName(), "_secrets")
|
||||
}
|
||||
|
Reference in New Issue
Block a user