diff --git a/go.mod b/go.mod index adeeec17ce9..143694d4217 100644 --- a/go.mod +++ b/go.mod @@ -19,7 +19,7 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 github.com/hashicorp/vault/api v1.9.2 - github.com/kubernetes-csi/csi-lib-utils v0.13.0 + github.com/kubernetes-csi/csi-lib-utils v0.14.0 github.com/kubernetes-csi/external-snapshotter/client/v6 v6.2.0 github.com/libopenstorage/secrets v0.0.0-20210908194121-a1d19aa9713a github.com/onsi/ginkgo/v2 v2.10.0 diff --git a/go.sum b/go.sum index d66f7e0e1cb..c79aff850e6 100644 --- a/go.sum +++ b/go.sum @@ -791,8 +791,8 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kubernetes-csi/csi-lib-utils v0.13.0 h1:QrTdZVZbHlaSUBN9ReayBPnnF1N0edFIpUKBwVIBW3w= -github.com/kubernetes-csi/csi-lib-utils v0.13.0/go.mod h1:JS9eDIZmSjx4F9o0bLTVK/qfhIIOifdjEfVXzxWapfE= +github.com/kubernetes-csi/csi-lib-utils v0.14.0 h1:pusB32LkSd7GhuT8Z6cyRFqByujc28ygWV97ndaT19s= +github.com/kubernetes-csi/csi-lib-utils v0.14.0/go.mod h1:uX8xidqxGJOLXtsfCCVsxWtZl/9NiLyd2DD3Nb+KoP4= github.com/kubernetes-csi/external-snapshotter/client/v4 v4.0.0/go.mod h1:YBCo4DoEeDndqvAn6eeu0vWM7QdXmHEeI9cFWplmBys= github.com/kubernetes-csi/external-snapshotter/client/v6 v6.2.0 h1:cMM5AB37e9aRGjErygVT6EuBPB6s5a+l95OPERmSlVM= github.com/kubernetes-csi/external-snapshotter/client/v6 v6.2.0/go.mod h1:VQVLCPGDX5l6V5PezjlDXLa+SpCbWSVU7B16cFWVVeE= diff --git a/vendor/github.com/kubernetes-csi/csi-lib-utils/connection/connection.go b/vendor/github.com/kubernetes-csi/csi-lib-utils/connection/connection.go index 9f8a48f9000..cbdf7c34e6e 100644 --- a/vendor/github.com/kubernetes-csi/csi-lib-utils/connection/connection.go +++ b/vendor/github.com/kubernetes-csi/csi-lib-utils/connection/connection.go @@ -54,8 +54,8 @@ func SetMaxGRPCLogLength(characterCount int) { // file or have format '://', following gRPC name resolution mechanism at // https://github.com/grpc/grpc/blob/master/doc/naming.md. // -// The function tries to connect indefinitely every second until it connects. The function automatically disables TLS -// and adds interceptor for logging of all gRPC messages at level 5. +// The function tries to connect for 30 seconds, and returns an error if no connection has been established at that point. +// The function automatically disables TLS and adds interceptor for logging of all gRPC messages at level 5. // // For a connection to a Unix Domain socket, the behavior after // loosing the connection is configurable. The default is to @@ -70,7 +70,7 @@ 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{}, options) + return connect(address, metricsManager, []grpc.DialOption{grpc.WithTimeout(time.Second * 30)}, options) } // Option is the type of all optional parameters for Connect. diff --git a/vendor/github.com/kubernetes-csi/csi-lib-utils/rpc/common.go b/vendor/github.com/kubernetes-csi/csi-lib-utils/rpc/common.go index 9dcb3534b2d..263bfba37e0 100644 --- a/vendor/github.com/kubernetes-csi/csi-lib-utils/rpc/common.go +++ b/vendor/github.com/kubernetes-csi/csi-lib-utils/rpc/common.go @@ -104,6 +104,33 @@ func GetControllerCapabilities(ctx context.Context, conn *grpc.ClientConn) (Cont return caps, nil } +// GroupControllerCapabilitySet is set of CSI groupcontroller capabilities. Only supported capabilities are in the map. +type GroupControllerCapabilitySet map[csi.GroupControllerServiceCapability_RPC_Type]bool + +// GetGroupControllerCapabilities returns set of supported group controller capabilities of CSI driver. +func GetGroupControllerCapabilities(ctx context.Context, conn *grpc.ClientConn) (GroupControllerCapabilitySet, error) { + client := csi.NewGroupControllerClient(conn) + req := csi.GroupControllerGetCapabilitiesRequest{} + rsp, err := client.GroupControllerGetCapabilities(ctx, &req) + if err != nil { + return nil, err + } + + caps := GroupControllerCapabilitySet{} + for _, cap := range rsp.GetCapabilities() { + if cap == nil { + continue + } + rpc := cap.GetRpc() + if rpc == nil { + continue + } + t := rpc.GetType() + caps[t] = true + } + return caps, nil +} + // ProbeForever calls Probe() of a CSI driver and waits until the driver becomes ready. // Any error other than timeout is returned. func ProbeForever(conn *grpc.ClientConn, singleProbeTimeout time.Duration) error { diff --git a/vendor/modules.txt b/vendor/modules.txt index e9bccb47348..f7ebb2d4fd3 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -391,7 +391,7 @@ github.com/josharian/intern # github.com/json-iterator/go v1.1.12 ## explicit; go 1.12 github.com/json-iterator/go -# github.com/kubernetes-csi/csi-lib-utils v0.13.0 +# github.com/kubernetes-csi/csi-lib-utils v0.14.0 ## explicit; go 1.18 github.com/kubernetes-csi/csi-lib-utils/connection github.com/kubernetes-csi/csi-lib-utils/metrics